Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Configuration et utilisation des SFTP connecteurs
L'objectif d'un connecteur est d'établir une relation entre votre système AWS de stockage et le SFTP serveur d'un partenaire. Vous pouvez envoyer des fichiers depuis Amazon S3 vers une destination externe appartenant à un partenaire. Vous pouvez également utiliser un SFTP connecteur pour récupérer des fichiers depuis le SFTP serveur d'un partenaire.
Ce didacticiel explique comment configurer un SFTP connecteur, puis transférer des fichiers entre le stockage Amazon S3 et un SFTP serveur.
Un SFTP connecteur récupère les SFTP informations d'identification AWS Secrets Manager pour s'authentifier auprès d'un SFTP serveur distant et établir une connexion. Le connecteur envoie des fichiers au serveur distant ou en extrait des fichiers, puis les stocke dans Amazon S3. Un IAM rôle est utilisé pour autoriser l'accès au compartiment Amazon S3 et aux informations d'identification stockées dans Secrets Manager. Et vous pouvez vous connecter à Amazon CloudWatch.
Rubriques
Étape 1 : créer les ressources de soutien nécessaires
Vous pouvez utiliser des SFTP connecteurs pour copier des fichiers entre Amazon S3 et n'importe quel SFTP serveur distant. Pour ce didacticiel, nous utilisons un AWS Transfer Family serveur comme SFTP serveur distant. Nous devons créer et configurer les ressources suivantes :
-
Créez des compartiments Amazon S3 pour stocker des fichiers dans votre AWS environnement, et pour envoyer et récupérer des fichiers depuis le SFTP serveur distant :Création de compartiments Amazon S3.
-
Créez un AWS Identity and Access Management rôle pour accéder au stockage Amazon S3 et à notre secret dans Secrets Manager :Créez un IAM rôle avec les autorisations nécessaires.
-
Créez un serveur Transfer Family qui utilise le SFTP protocole et un utilisateur géré par le service qui utilise le SFTP connecteur pour transférer des fichiers vers ou depuis le SFTP serveur :. Création d'un SFTP serveur Transfer Family et d'un utilisateur
-
Créez un AWS Secrets Manager secret qui stocke les informations d'identification utilisées par le SFTP connecteur pour se connecter au SFTP serveur distant :Créez et stockez un secret dans AWS Secrets Manager.
Création de compartiments Amazon S3
Pour créer un compartiment Amazon S3
-
Connectez-vous à la AWS Transfer Family console à l'adresse https://console.aws.amazon.com/s3/
. -
Choisissez une région et entrez un nom.
Pour ce didacticiel, notre bucket est dedans
US East (N. Virginia) us-east-1
, et son nom l'estsftp-server-storage-east
. -
Acceptez les valeurs par défaut et choisissez Create bucket.
Pour en savoir plus sur la création de compartiments Amazon S3, consultez Comment créer un compartiment S3 ? dans le guide de l'utilisateur d'Amazon Simple Storage Service.
Créez un IAM rôle avec les autorisations nécessaires
Pour le rôle d'accès, créez une politique avec les autorisations suivantes.
L'exemple suivant accorde les autorisations nécessaires pour accéder au DOC-EXAMPLE-BUCKET
dans Amazon S3, et le secret spécifié est stocké dans Secrets Manager.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowListingOfUserFolder", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::
DOC-EXAMPLE-BUCKET
" ] }, { "Sid": "HomeDirObjectAccess", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObject", "s3:DeleteObjectVersion", "s3:GetObjectVersion", "s3:GetObjectACL", "s3:PutObjectACL" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET
/*" }, { "Sid": "GetConnectorSecretValue", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": "arn:aws:secretsmanager:region
:account-id
:secret:aws/transfer/SecretName-6RandomCharacters
" } ] }
Remplacez les éléments comme suit :
-
Dans
DOC-EXAMPLE-BUCKET
, le didacticiel utilises3-storage-east
. -
Dans
region
, le didacticiel utiliseus-east-1
. -
Dans
account-id
, utilisez votre Compte AWS identifiant. -
Dans
SecretName-6RandomCharacters
, nous sommesusing sftp-connector1
là pour le nom (vous aurez vos propres six caractères aléatoires pour votre secret).
Vous devez également vous assurer que ce rôle contient une relation de confiance qui permet au connecteur d'accéder à vos ressources lorsqu'il répond aux demandes de transfert de vos utilisateurs. Pour plus de détails sur l'établissement d'une relation de confiance, voirÉtape 1 : Établir une relation d'approbation.
Note
Pour en savoir plus sur le rôle que nous utilisons dans le didacticiel, consultezUtilisateur et rôle d'accès combinés.
Créez et stockez un secret dans AWS Secrets Manager
Nous devons enregistrer un secret dans Secrets Manager afin de stocker les informations d'identification utilisateur de votre SFTP connecteur. Vous pouvez utiliser un mot de passe, une clé SSH privée ou les deux. Pour le didacticiel, nous utilisons une clé privée.
Note
Lorsque vous stockez des secrets dans Secrets Manager, des frais Compte AWS vous sont facturés. Pour plus d’informations sur la tarification, consultez Tarification AWS Secrets Manager
Avant de commencer la procédure de stockage du secret, récupérez et formatez votre clé privée. La clé privée doit correspondre à la clé publique configurée pour l'utilisateur sur le SFTP serveur distant. Pour notre tutoriel, la clé privée doit correspondre à la clé publique qui est stockée pour notre utilisateur de test sur le SFTP serveur Transfer Family que nous utilisons comme serveur distant.
Pour ce faire, exécutez la commande suivante :
jq -sR .
path-to-private-key-file
Par exemple, si votre fichier de clé privée se trouve dans~/.ssh/sftp-testuser-privatekey
, la commande est la suivante.
jq -sR . ~/.ssh/sftp-testuser-privatekey
Cela affiche la clé dans le format correct (avec des caractères de nouvelle ligne intégrés) sur la sortie standard. Copiez ce texte quelque part, car vous devez le coller dans la procédure suivante (étape 6).
Pour stocker les informations d'identification utilisateur dans le Gestionnaire des Secrets Manager d'un SFTP connecteur
-
Connectez-vous à la AWS Secrets Manager console AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/secretsmanager/
. -
Dans le volet de navigation de gauche, choisissez Secrets.
-
Sur la page Secrets, choisissez Enregistrer un nouveau secret.
-
Sur la page Choisir un type de secret, pour Type de secret, choisissez Autre type de secret.
-
Dans la section Paires clé/valeur, choisissez l'onglet clé/valeur.
-
Clé — Entrée
Username
. -
valeur — Entrez le nom de notre utilisateur,
sftp-testuser
.
-
-
Pour saisir la clé, nous vous recommandons d'utiliser l'onglet Texte en clair.
-
Choisissez Ajouter une ligne, puis entrez
PrivateKey
. -
Choisissez l'onglet Plaintext. Le champ contient désormais le texte suivant :
{"Username":"sftp-testuser","PrivateKey":""}
-
Collez le texte de votre clé privée (enregistré précédemment) entre guillemets vides (« »).
Votre écran doit se présenter comme suit (les données clés sont grisées).
-
-
Choisissez Suivant.
-
Sur la page Configurer le secret, entrez le nom de votre secret. Pour ce didacticiel, nous nommons le secret
aws/transfer/sftp-connector1
. -
Choisissez Next, puis acceptez les valeurs par défaut sur la page Configurer la rotation. Ensuite, sélectionnez Suivant.
-
Sur la page Révision, choisissez Store pour créer et stocker le secret.
Étape 2 : Création et test d'un SFTP connecteur
Dans cette section, nous créons un SFTP connecteur qui utilise toutes les ressources que nous avons créées précédemment. Pour en savoir plus, consultez Configuration des SFTP connecteurs.
Pour créer un SFTP connecteur
-
Ouvrez la AWS Transfer Family console à l'adresse https://console.aws.amazon.com/transfer/
. -
Dans le volet de navigation de gauche, choisissez Connectors, puis Create connector.
-
Choisissez SFTPle type de connecteur pour créer un SFTP connecteur, puis choisissez Next.
-
Dans la section Configuration du connecteur, fournissez les informations suivantes :
-
Pour le URL, entrez le URL du SFTP serveur distant. Pour le didacticiel, nous saisissons le serveur Transfer Family que nous utilisons comme SFTP serveur distant. URL
sftp://s-
1111aaaa2222bbbb3
.server---transfer---us-east-1.amazonaws.com.rproxy.goskope.comRemplacez
1111aaaa2222bbbb3
avec votre identifiant de serveur Transfer Family. -
Pour le rôle Access, entrez le rôle que nous avons créé précédemment,
sftp-connector-role
. -
Pour le rôle Logging, choisissez
AWSTransferLoggingAccess
.Note
AWSTransferLoggingAccessest une politique AWS gérée. Cette politique est décrite en détail dansAWS politique gérée : AWSTransferLoggingAccess.
-
-
Dans la section SFTPConfiguration, fournissez les informations suivantes :
-
Pour les informations d'identification du Connector, choisissez le nom de votre ressource Secrets Manager qui contient les SFTP informations d'identification. Pour le didacticiel, choisissez
aws/transfer/sftp-connector1
. -
Pour les clés d'hôte fiables, collez la partie publique de la clé d'hôte. Vous pouvez récupérer cette clé en exécutant la
ssh-keyscan
commande pour votre SFTP serveur. Pour plus de détails sur le formatage et le stockage de la clé d'hôte approuvée, consultez le SftpConnectorConfigdocumentation sur les types de données.
-
-
Après avoir confirmé tous vos paramètres, choisissez Create connector pour créer le SFTP connecteur.
Après avoir créé un SFTP connecteur, nous vous recommandons de le tester avant de tenter de transférer des fichiers à l'aide de votre nouveau connecteur.
Étape 3 : envoyer et récupérer des fichiers à l'aide du SFTP connecteur
Pour des raisons de simplicité, nous partons du principe que vous avez déjà des fichiers dans votre compartiment Amazon S3.
Note
Le didacticiel utilise des compartiments Amazon S3 pour les emplacements de stockage source et de destination. Si votre SFTP serveur n'utilise pas le stockage Amazon S3, sftp-server-storage-east
dans les commandes suivantes, vous pouvez remplacer le chemin par un chemin vers les emplacements de fichiers accessibles depuis votre SFTP serveur.
-
Nous envoyons un fichier nommé
SEND-to-SERVER.txt
depuis le stockage Amazon S3 au SFTP serveur. -
Nous récupérons un fichier nommé
RETRIEVE-to-S3.txt
depuis le SFTP serveur vers le stockage Amazon S3.
Note
Dans les commandes suivantes, remplacez connector-id
avec votre identifiant de connecteur.
Tout d'abord, nous envoyons un fichier depuis notre compartiment Amazon S3 vers le SFTP serveur distant. À partir d'une invite de commande, exécutez la commande suivante :
aws transfer start-file-transfer --connector-id c-
connector-id
--send-file-paths "/s3-storage-east/SEND-to-SERVER.txt" / --remote-directory-path "/sftp-server-storage-east/incoming"
Votre sftp-server-storage-east
seau devrait maintenant ressembler à ceci.
Si le fichier ne s'affiche pas comme prévu, consultez vos CloudWatch journaux.
Pour consulter vos CloudWatch journaux
-
Ouvrez la CloudWatch console Amazon à l'adresse https://console.aws.amazon.com/cloudwatch/
-
Sélectionnez Groupes de journaux dans le menu de navigation de gauche.
-
Entrez votre identifiant de connecteur dans la barre de recherche pour trouver vos journaux.
-
Sélectionnez le flux de journal renvoyé par la recherche.
-
Développez l'entrée de journal la plus récente.
En cas de succès, l'entrée dans le journal ressemble à ce qui suit :
{ "operation": "SEND", "timestamp": "2023-12-18T15:26:57.346283Z", "connector-id": "
connector-id
", "transfer-id": "transfer-id
", "file-transfer-id": "transfer-id
/file-transfer-id
", "url": "sftp://server-id
.server.transfer.us-east-1.amazonaws.com", "file-path": "/s3-storage-east/SEND-to-SERVER.txt", "status-code": "COMPLETED", "start-time": "2023-12-18T15:26:56.915864Z", "end-time": "2023-12-18T15:26:57.298122Z", "account-id": "500655546075", "connector-arn": "arn:aws:transfer:us-east-1:500655546075:connector/connector-id
", "remote-directory-path": "/sftp-server-storage-east/incoming" }
Si le transfert de fichier a échoué, l'entrée du journal contient un message d'erreur qui précise le problème. Les causes courantes d'erreurs sont les problèmes d'IAMautorisations et les chemins de fichiers incorrects.
Ensuite, nous récupérons un fichier du SFTP serveur dans un compartiment Amazon S3. À partir d'une invite de commande, exécutez la commande suivante :
aws transfer start-file-transfer --connector-id c-
connector-id
--retrieve-file-paths "/sftp-server-storage-east/RETRIEVE-to-S3.txt" --local-directory-path "/s3-storage-east/incoming"
Si le transfert réussit, votre compartiment Amazon S3 contient le fichier transféré, comme indiqué ici.
En cas de succès, l'entrée dans le journal ressemble à ce qui suit :
{ "operation": "RETRIEVE", "timestamp": "2023-12-18T15:36:40.017800Z", "connector-id": "c-
connector-id
", "transfer-id": "transfer-id
", "file-transfer-id": "transfer-id
/file-transfer-id
", "url": "sftp://s-server-id
.server.transfer.us-east-1.amazonaws.com", "file-path": "/sftp-server-storage-east/RETRIEVE-to-S3.txt", "status-code": "COMPLETED", "start-time": "2023-12-18T15:36:39.727626Z", "end-time": "2023-12-18T15:36:39.895726Z", "account-id": "500655546075", "connector-arn": "arn:aws:transfer:us-east-1:500655546075:connector/c-connector-id
", "local-directory-path": "/s3-storage-east/incoming" }
Procédures de création d'un serveur Transfer Family à utiliser comme SFTP serveur distant
Nous décrivons ci-dessous les étapes à suivre pour créer un serveur Transfer Family qui vous servira de SFTP serveur distant pour ce didacticiel. Notez ce qui suit :
-
Nous utilisons un serveur Transfer Family pour représenter un SFTP serveur distant. Les utilisateurs habituels SFTP du connecteur disposent de leur propre SFTP serveur distant. Consultez Création d'un SFTP serveur Transfer Family et d'un utilisateur.
-
Comme nous utilisons un serveur Transfer Family, nous utilisons également un utilisateur géré par le serviceSFTP. Et, par souci de simplicité, nous avons combiné les autorisations dont cet utilisateur a besoin pour accéder au serveur Transfer Family avec les autorisations dont il a besoin pour utiliser notre connecteur. Encore une fois, la plupart des cas d'utilisation du SFTP connecteur ont un SFTP utilisateur distinct qui n'est pas associé à un serveur Transfer Family. Consultez Création d'un SFTP serveur Transfer Family et d'un utilisateur.
-
Dans le cadre du didacticiel, étant donné que nous utilisons le stockage Amazon S3 pour notre SFTP serveur distant, nous devons créer un deuxième compartiment afin de pouvoir transférer des fichiers d'un compartiment à un autre.
s3-storage-east
Création d'un SFTP serveur Transfer Family et d'un utilisateur
La plupart des utilisateurs n'auront pas besoin de créer un SFTP serveur Transfer Family ni un utilisateur, car vous avez déjà un SFTP serveur avec des utilisateurs, et vous pouvez utiliser ce serveur pour transférer des fichiers depuis et vers. Cependant, pour ce didacticiel, pour des raisons de simplicité, nous utilisons un serveur Transfer Family qui fonctionne en tant que SFTP serveur distant.
Suivez la procédure décrite dans Création d'un SFTP serveur activé pour créer un serveur et Étape 3 : Ajouter un utilisateur géré par le service ajouter un utilisateur. Voici les informations utilisateur que nous utilisons pour le didacticiel :
-
Créez votre utilisateur géré par le service,.
sftp-testuser
-
Définissez le répertoire de base sur
/sftp-server-storage-east/sftp-testuser
-
Lorsque vous créez l'utilisateur, vous stockez une clé publique. Plus tard, lorsque vous créerez le secret dans Secrets Manager, vous devrez fournir la clé privée correspondante.
-
-
Rôle :
sftp-connector-role
. Pour le didacticiel, nous utilisons le même IAM rôle pour notre SFTP utilisateur et pour accéder au SFTP connecteur. Lorsque vous créez des connecteurs pour votre organisation, vous pouvez avoir des rôles d'utilisateur et d'accès distincts. -
Clé d'hôte du serveur : vous devez utiliser la clé d'hôte du serveur lorsque vous créez le connecteur. Vous pouvez récupérer cette clé en exécutant la
ssh-keyscan
commande pour votre serveur. Par exemple, si l'ID de votre serveur est présents-1111aaaa2222bbbb3
et que son point de terminaison se trouveus-east-1
, la commande suivante permet de récupérer la clé d'hôte du serveur :ssh-keyscan s-1111aaaa2222bbbb3.server.transfer.us-east-1.amazonaws.com
Copiez ce texte quelque part, car vous devez le coller dans la Étape 2 : Création et test d'un SFTP connecteur procédure.
Utilisateur et rôle d'accès combinés
Pour le didacticiel, nous utilisons un seul rôle combiné. Nous utilisons ce rôle à la fois pour notre SFTP utilisateur et pour accéder au connecteur. L'exemple suivant contient les détails de ce rôle, au cas où vous souhaiteriez effectuer les tâches du didacticiel.
L'exemple suivant accorde les autorisations nécessaires pour accéder à nos deux compartiments dans Amazon S3 et au secret nommé aws/transfer/sftp-connector1
stocké dans Secrets Manager. Pour le didacticiel, ce rôle est nommésftp-connector-role
.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowListingOfUserFolder", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::sftp-server-storage-east", "arn:aws:s3:::s3-storage-east" ] }, { "Sid": "HomeDirObjectAccess", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObject", "s3:DeleteObjectVersion", "s3:GetObjectVersion", "s3:GetObjectACL", "s3:PutObjectACL" ], "Resource": [ "arn:aws:s3:::sftp-server-storage-east/*", "arn:aws:s3:::s3-storage-east/*" ] }, { "Sid": "GetConnectorSecretValue", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": "arn:aws:secretsmanager:us-east-1:500655546075:secret:aws/transfer/sftp-connector1-
6RandomCharacters
" } ] }
Pour plus de détails sur la création de rôles pour Transfer Family, suivez la procédure décrite dans Créer un rôle d'utilisateur pour créer un rôle.