Configuration et utilisation des SFTP connecteurs - AWS Transfer Family

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.

Schéma d'architecture illustrant la manière dont le SFTP connecteur interagit avec Secrets Manager, Amazon S3, CloudWatch les journaux, IAM les rôles et le SFTP serveur distant.

É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éation de compartiments Amazon S3

Pour créer un compartiment Amazon S3
  1. Connectez-vous à la AWS Transfer Family console à l'adresse https://console.aws.amazon.com/s3/.

  2. Choisissez une région et entrez un nom.

    Pour ce didacticiel, notre bucket est dedansUS East (N. Virginia) us-east-1, et son nom l'estsftp-server-storage-east.

  3. 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 sommes using 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
  1. Connectez-vous à la AWS Secrets Manager console AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/secretsmanager/.

  2. Dans le volet de navigation de gauche, choisissez Secrets.

  3. Sur la page Secrets, choisissez Enregistrer un nouveau secret.

  4. Sur la page Choisir un type de secret, pour Type de secret, choisissez Autre type de secret.

  5. Dans la section Paires clé/valeur, choisissez l'onglet clé/valeur.

    • Clé — EntréeUsername.

    • valeur — Entrez le nom de notre utilisateur,sftp-testuser.

  6. Pour saisir la clé, nous vous recommandons d'utiliser l'onglet Texte en clair.

    1. Choisissez Ajouter une ligne, puis entrezPrivateKey.

    2. Choisissez l'onglet Plaintext. Le champ contient désormais le texte suivant :

      {"Username":"sftp-testuser","PrivateKey":""}
    3. 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).

      Le secret en texte brut, indiquant le nom d'utilisateur et la clé privée.
  7. Choisissez Suivant.

  8. Sur la page Configurer le secret, entrez le nom de votre secret. Pour ce didacticiel, nous nommons le secretaws/transfer/sftp-connector1.

  9. Choisissez Next, puis acceptez les valeurs par défaut sur la page Configurer la rotation. Ensuite, sélectionnez Suivant.

  10. 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
  1. Ouvrez la AWS Transfer Family console à l'adresse https://console.aws.amazon.com/transfer/.

  2. Dans le volet de navigation de gauche, choisissez Connectors, puis Create connector.

  3. Choisissez SFTPle type de connecteur pour créer un SFTP connecteur, puis choisissez Next.

    La console Transfer Family, qui affiche la page Create connector, où vous pouvez choisir le type de connecteur. SFTPest sélectionné.
  4. 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

      Remplacez 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, choisissezAWSTransferLoggingAccess.

      Note

      AWSTransferLoggingAccessest une politique AWS gérée. Cette politique est décrite en détail dansAWS politique gérée : AWSTransferLoggingAccess.

    La console du SFTP connecteur Transfer Family, qui affiche les paramètres de configuration du connecteur.
  5. 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, choisissezaws/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.

    La console Transfer Family SFTP Connector, qui affiche les paramètres SFTPde configuration.
  6. 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.

Test a connector using the console
Pour tester un SFTP connecteur
  1. Ouvrez la AWS Transfer Family console à l'adresse https://console.aws.amazon.com/transfer/.

  2. Dans le volet de navigation de gauche, choisissez Connectors, puis sélectionnez un connecteur.

  3. Dans le menu Actions, choisissez Tester la connexion.

    La console Transfer Family, qui affiche un SFTP connecteur sélectionné, et l'action Test connection Test connection mise en évidence.

Le système renvoie un message indiquant si le test est réussi ou non. Si le test échoue, le système affiche un message d'erreur basé sur la raison de l'échec du test.

Le panneau de connexion de test du SFTP connecteur, indiquant un test réussi.
Le panneau de connexion du test du SFTP connecteur affiche un échec du test : le message d'erreur indique que le rôle d'accès du connecteur est incorrect.
Test a connector using the CLI

Pour tester un connecteur à l'aide du AWS Command Line Interface, exécutez la commande suivante à l'invite de commande (remplacez connector-id (avec votre identifiant de connecteur actuel) :

aws transfer test-connection --connector-id c-connector-id

Si le test est réussi, les lignes suivantes sont renvoyées :

{ "Status": "OK", "StatusMessage": "Connection succeeded" }

Si le test échoue, vous recevez un message d'erreur descriptif, par exemple :

{ "Status": "ERROR", "StatusMessage": "Unable to assume the configured access role" }

É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.

Le compartiment SFTP du serveur contenant le nouveau fichier transféré.

Si le fichier ne s'affiche pas comme prévu, consultez vos CloudWatch journaux.

Pour consulter vos CloudWatch journaux
  1. Ouvrez la CloudWatch console Amazon à l'adresse https://console.aws.amazon.com/cloudwatch/

  2. Sélectionnez Groupes de journaux dans le menu de navigation de gauche.

  3. Entrez votre identifiant de connecteur dans la barre de recherche pour trouver vos journaux.

  4. Sélectionnez le flux de journal renvoyé par la recherche.

  5. 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.

Le compartiment Amazon S3 contenant le nouveau fichier transféré.

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ésent s-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.