recherche
Maisondéveloppement back-endGolangFamille de transfert AWS avec Golang pour les transferts de fichiers

Dans le monde de la technologie moderne, le transfert de fichiers sécurisé et efficace est une nécessité essentielle pour de nombreuses organisations. AWS Transfer Family, une solution de transfert de fichiers sécurisée gérée proposée par Amazon Web Services, permet les transferts de fichiers à l'aide de protocoles standards tels que SFTP, FTPS, FTP et AS2. Lorsqu'elle est combinée avec Golang, un langage de programmation connu pour son efficacité et sa facilité d'utilisation, une combinaison puissante est créée pour gérer et automatiser efficacement les transferts de fichiers.

Dans cet article, nous explorerons comment intégrer AWS Transfer Family à Golang pour optimiser vos processus de transfert de fichiers. De la configuration d'AWS Transfer Family à la mise en œuvre d'un client SFTP avec Golang, je vous guiderai étape par étape pour que vous puissiez tirer le meilleur parti de ces technologies.

Qu'est-ce que la famille de transfert AWS ?

AWS Transfer Family est un service sécurisé et entièrement géré qui permet le transfert de fichiers vers et depuis des services de stockage AWS tels qu'Amazon S3 et Amazon EFS à l'aide de protocoles tels que SFTP, AS2, FTPS et FTP.

Principales fonctionnalités

  • Protocoles pris en charge : SFTP, FTPS, FTP, AS2
  • Intégrations de stockage AWS : Amazon S3, Amazon EFS
  • Cas d'utilisation : lacs de données, transferts internes, distribution de données, workflows de conformité, logistique de la chaîne d'approvisionnement, transactions B2B.

Avantages

  • Évolutivité en temps réel.
  • Pas besoin de gestion d'infrastructure.
  • Exploitez les services AWS natifs pour le traitement et l'analyse des données.
  • Service de flux de travail sans serveur entièrement géré.
  • Tarifs à l'utilisation.

Conditions préalables

  • Compte AWS : un compte Amazon Web Services actif. Si vous n'en avez pas encore, vous pouvez vous inscrire sur le site Web AWS.
  • Golang : Connaissance du langage de programmation Go (Golang).
  • Privilèges administratifs dans AWS.
  • AWS Transfer Family : autorisations administratives de lecture et d'écriture pour configurer et gérer AWS Transfer Family. Cela inclut la possibilité de créer et de gérer des serveurs de transfert. Notez que ce service a un coût associé.
  • Amazon S3 : autorisations administratives pour lire et écrire dans les compartiments Amazon S3.
  • AWS IAM : autorisations pour gérer les rôles et politiques IAM nécessaires à l'intégration et à la sécurité des transferts.

Conception architecturale

La conception architecturale proposée pour l'intégration d'AWS Transfer Family avec Golang se compose des composants suivants, comme illustré dans le schéma ci-dessous :

AWS Transfer Family with Golang for File Transfers

L'API proposée dans cet article sert d'exemple de base pour démontrer ses fonctionnalités fondamentales. Dans un scénario réel, l'API peut être plus complexe et inclure des fonctionnalités supplémentaires. Sa fonction principale est de télécharger des fichiers sur le serveur AWS Transfer Family SFTP et de les stocker dans un compartiment S3, que ce soit à des fins de sauvegarde ou d'intégration avec d'autres systèmes. Les cas d'utilisation varient et dépendent des besoins de chaque organisation. Voici quelques exemples de cas d'utilisation supplémentaires : Clients de la famille AWS Transfer.

De plus, l'API proposée dans cet article peut être déployée sur le cloud AWS à l'aide de services tels qu'AWS Elastic Beanstalk ou AWS Fargate pour obtenir une plus grande évolutivité et disponibilité, en fonction des exigences spécifiques de chaque organisation.

Commençons !

Mise en œuvre

Générer une clé publique et privée

Générez une paire de clés publique et privée pour vous connecter au serveur SFTP AWS Transfer Family. Cela peut être fait localement sur notre machine à l'aide de la commande suivante.

$ ssh-keygen -t rsa -b 4096 -f /aws_example_ssh_key

  • aws_example_ssh_key : Nom de la clé
  • PATH : Répertoire où la clé sera enregistrée
  • rsa : Algorithme de chiffrement
  • 4096 : Taille de la clé
  • f : Nom du fichier de sortie
ssh-keygen -t rsa -b 4096 -f <path>/aws_example_ssh_key
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in <path>/aws_example_ssh_key
Your public key has been saved in <path>/aws_example_ssh_key.pub
The key fingerprint is:
SHA256:P80TXbp10tjdzJLc3KAhtWP9YWQe+A181WvqUQyaTFc rodrigoquispe@0WJMD6M
The key's randomart image is:
+---[RSA 4096]----+
|            ..oE+|
|           o ** +|
|          + O **+|
|           * *.^*|
|        S   o % #|
|         . o + =.|
|          o = o  |
|           . o   |
|                 |
+----[SHA256]-----+
</path></path></path>
  • Entrez la phrase secrète (vide s'il n'y a pas de phrase secrète) : mot de passe pour la clé.
  • Entrez à nouveau la même phrase secrète : confirmez le mot de passe de la clé.
  • Votre identification a été enregistrée dans /aws_example_ssh_key : la clé privée sera enregistrée dans le fichier aws_example_ssh_key dans le chemin spécifié.
  • Votre clé publique a été enregistrée dans /aws_example_ssh_key.pub : la clé publique sera enregistrée dans le fichier aws_example_ssh_key.pub dans le chemin spécifié.

AWS Transfer Family with Golang for File Transfers

Créer un service de transfert de famille

Connectez-vous à AWS Management Console, sélectionnez le service AWS Transfer Family et créez un serveur.

AWS Transfer Family with Golang for File Transfers

Sélectionnez SFTP (SSH File Transfer Protocol) pour un transfert de fichiers sécurisé et cliquez sur Suivant.

AWS Transfer Family with Golang for File Transfers

Choisissez un fournisseur d'identité et sélectionnez « Service géré ».

AWS Transfer Family with Golang for File Transfers

Dans la configuration du point de terminaison, sélectionnez « Accessible publiquement » et cliquez sur Suivant.

AWS Transfer Family with Golang for File Transfers

Nous sélectionnons « Amazon S3 » comme option de stockage et cliquons sur Suivant.

AWS Transfer Family with Golang for File Transfers

Dans la section « Configurer les détails supplémentaires », laissez les paramètres à leurs valeurs par défaut.

AWS Transfer Family with Golang for File Transfers
AWS Transfer Family with Golang for File Transfers

AWS Transfer Family with Golang for File Transfers

AWS Transfer Family with Golang for File Transfers

Révisez, cliquez sur Suivant et créez.
Une fois la création terminée, nous aurons quelque chose de similaire à ceci. Nous pouvons voir que nous n'avons pas encore d'utilisateurs et que cela démarrera sous peu via un point de terminaison public et en utilisant S3 comme stockage.

AWS Transfer Family with Golang for File Transfers

Créer un rôle

Créez un nouveau rôle pour la famille de transfert AWS vers le service s3. Pour ce faire, accédez au service IAM et créez un nouveau rôle de type de service AWS et dans le cas d'utilisation, sélectionnez transfert et suivant.

AWS Transfer Family with Golang for File Transfers

Politique d'autorisation, AmazonS3FullAccess pour avoir un accès complet au compartiment S3. Mais cette politique est tout à fait admissible et il n'est pas recommandé de l'utiliser en production. Et ensuite.

AWS Transfer Family with Golang for File Transfers

Nous procédons à l'attribution du nom du rôle "role-example-transfer-to-s3", nous le vérifions et cliquons sur "Créer un rôle".

AWS Transfer Family with Golang for File Transfers

Créer un compartiment S3

Nous procédons à la création du bucket s3, pour ce faire nous allons sur le service s3 et créons un nouveau bucket.

AWS Transfer Family with Golang for File Transfers

Nous définissons le nom du bucket, en laissant la configuration par défaut et créons le bucket.

Nom du bucket : "bucket-example-transfer".

AWS Transfer Family with Golang for File Transfers

AWS Transfer Family with Golang for File Transfers

À la fin de la création, nous aurons quelque chose comme ceci :

AWS Transfer Family with Golang for File Transfers

Configurer les utilisateurs SFTP pour Transfer Family avec S3

Accédez au service AWS Transfer Family et sélectionnez le serveur que vous avez créé précédemment.

  • Sélectionnez l'onglet "Utilisateurs" et cliquez sur "Ajouter un utilisateur".
  • Entrez le nom d'utilisateur.
  • Attribuez le rôle IAM que vous avez créé précédemment.
  • Définir "Politique" aucune
  • Dans le champ « Répertoire personnel », saisissez bucket-example-transfer, qui est le nom du bucket S3 que vous avez créé précédemment.
  • Cliquez sur "Ajouter un utilisateur".

AWS Transfer Family with Golang for File Transfers

Pour suivre cet article, vous devrez fournir la clé publique qui a été générée au démarrage aws_example_ssh_key.pub.

Pour visualiser le contenu de la clé publique, utilisez la commande suivante :

$ cat aws_example_ssh_key.pub

La clé publique ressemble à ceci :

ssh-keygen -t rsa -b 4096 -f <path>/aws_example_ssh_key
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in <path>/aws_example_ssh_key
Your public key has been saved in <path>/aws_example_ssh_key.pub
The key fingerprint is:
SHA256:P80TXbp10tjdzJLc3KAhtWP9YWQe+A181WvqUQyaTFc rodrigoquispe@0WJMD6M
The key's randomart image is:
+---[RSA 4096]----+
|            ..oE+|
|           o ** +|
|          + O **+|
|           * *.^*|
|        S   o % #|
|         . o + =.|
|          o = o  |
|           . o   |
|                 |
+----[SHA256]-----+
</path></path></path>

C'est la clé que nous devons inclure dans le champ "Clés publiques SSH". Assurez-vous de copier et coller l'intégralité de la clé avec précision dans ce champ pour permettre un accès sécurisé au serveur.

AWS Transfer Family with Golang for File Transfers

Après avoir créé l'utilisateur, vous devriez voir un écran de confirmation similaire à celui ci-dessous. Cela indique que l'utilisateur a été configuré avec succès et est prêt à utiliser le service SFTP.

AWS Transfer Family with Golang for File Transfers

Structure du projet

Ci-dessous, nous fournissons un aperçu détaillé de la structure du projet Golang et incluons un lien vers le référentiel GitHub pour référence. Cet aperçu vous aidera à comprendre l'organisation du projet et comment les différentes composantes sont structurées et interconnectées.

ssh-rsa AAAAB3NzaC1yc2EBBAADAQABAAACAQC/qNMJaCz8+I3G71bTFf8Cpe+AAAA0BBBBBBBA6C+/a8fyl9Dw4wjj0huc4ItlX2auKG3skxTYP1ZgO5/7M7xmp2Hf+AAAA0BBBBBBBA6CynWwfwkS5XEIfNtoNWCSeB6ra4anljFdLJH4ZReOM18xxBZCyz2gGA7ePprM0nfpgoQKjp8eDoz6HFcvH4Qynea06W72D+tUWjCRH6bgPBsw/cCfj+VrcqsQXif/X8nViS679+V+AAAA0BBBBBBBA6C+t/5dD3uFPyc8yJn2fNEHB4kfIB9JR5fPIo4dVqPebloPg9vKT2M+AAAA0BBBBBBBA6C/AAAA0BBBBBBBA6C+XLTJSAljgq9JQ4l3vnT4RSsKuK+DX2um5DsN/Zwk9Qwf8JRJey/AAAA0BBBBBBBA6C+/AAAA0BBBBBBBA6CNkVaeDOYSIeGkMBUmmMaeVNeaR967SBLoHNzBfodKKaIpsmW2yHvIitg/YKu2YXKe/DnYU3G8om13uL8qIOB85CugVQ== rodrigoquispe@AAAA0BBBBBBBA6C

Les dépendances que nous utiliserons sont Gin et SFTP.

├── cmd
│   └── main.go
├── go.mod
├── go.sum
└── internal
    ├── app
    │   └── service.go
    ├── domain
    │   └── models.go
    ├── handler
    │   └── sftp_handler.go
    └── infra
        ├── config.go
        └── sftp_client.go

Définissez les informations d'identification suivantes dans le fichier config.go, où se trouvent la clé privée et les informations d'identification de l'utilisateur Transfer Family, pour vous connecter au serveur SFTP.

$ go get -u github.com/gin-gonic/gin
$ go get -u github.com/pkg/sftp
  • Hôte : le point de terminaison de connexion que nous avons obtenu précédemment.
  • Port : 22
  • Utilisateur : le nom d'utilisateur que nous avons créé précédemment.
  • PrivateKeyPath : le chemin d'accès à la clé privée que nous avons créée précédemment.

Pensez également à définir le chemin où seront enregistrés les fichiers téléchargés sur le serveur SFTP. Dans mon cas, c'est /bucket-example-transfer/rodrigo.

// config.go

func LoadConfig() *Config {
    return &Config{
        Host:           "<host>.server.transfer.us-east-1.amazonaws.com",
    Port:           "<port>",
    User:           "<user>",
    PrivateKeyPath: "<path>/aws_example_ssh_key",
    }
}
</path></user></port></host>

Fonction pour créer un nouveau client SFTP avec la configuration donnée :

// service.go

func (u *Service) Upload(file *domain.File) error {
    return u.sftpClient.UploadFile(file, "/bucket-example-transfer/rodrigo/")
}

Méthode pour télécharger un fichier sur le serveur SFTP.

ssh-keygen -t rsa -b 4096 -f <path>/aws_example_ssh_key
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in <path>/aws_example_ssh_key
Your public key has been saved in <path>/aws_example_ssh_key.pub
The key fingerprint is:
SHA256:P80TXbp10tjdzJLc3KAhtWP9YWQe+A181WvqUQyaTFc rodrigoquispe@0WJMD6M
The key's randomart image is:
+---[RSA 4096]----+
|            ..oE+|
|           o ** +|
|          + O **+|
|           * *.^*|
|        S   o % #|
|         . o + =.|
|          o = o  |
|           . o   |
|                 |
+----[SHA256]-----+
</path></path></path>

Exécutez le projet à l'aide de la commande suivante :

$ allez exécuter cmd/main.go

AWS Transfer Family with Golang for File Transfers

Maintenant, nous téléchargeons un fichier sur le serveur SFTP à l'aide de Postman. Ensuite, nous naviguons vers S3 pour vérifier que le fichier a été téléchargé correctement.

AWS Transfer Family with Golang for File Transfers

AWS Transfer Family with Golang for File Transfers

Les fichiers ont été téléchargés avec succès sans aucun problème.

Merci d'avoir lu.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Fonctions d'initiés et effets secondaires: équilibrer l'initialisation et la maintenabilitéFonctions d'initiés et effets secondaires: équilibrer l'initialisation et la maintenabilitéApr 26, 2025 am 12:23 AM

ToensineItFunctionsAreeEffective et montable: 1) Minizes au niveau des effets par rapport à la réduction destinés à Modifier GlobalState, 2)

Partage avec Go: un guide du débutantPartage avec Go: un guide du débutantApr 26, 2025 am 12:21 AM

GOISIDEALFORBEGINNERNERS et combinant pour pourcloudandNetWorkServicesDuetOtssimplicity, Efficiency, andCurrencyFeatures.1) InstallgofromTheofficialwebsiteandverifywith'goversion'..2)

Aller des modèles de concurrence: meilleures pratiques pour les développeursAller des modèles de concurrence: meilleures pratiques pour les développeursApr 26, 2025 am 12:20 AM

Les développeurs doivent suivre les meilleures pratiques suivantes: 1. Gérer soigneusement les Goroutines pour empêcher la fuite des ressources; 2. Utilisez des canaux pour la synchronisation, mais évitez la surutilisation; 3. Gérer explicitement les erreurs dans les programmes simultanés; 4. Comprendre GomaxProcs pour optimiser les performances. Ces pratiques sont cruciales pour un développement logiciel efficace et robuste, car ils garantissent une gestion efficace des ressources, la mise en œuvre appropriée de la synchronisation, la gestion des erreurs appropriée et l'optimisation des performances, améliorant ainsi l'efficacité des logiciels et la maintenabilité.

Allez en production: cas d'utilisation réel et exemplesAllez en production: cas d'utilisation réel et exemplesApr 26, 2025 am 12:18 AM

GoExcelsInproductiondUetoitSitPerformanceAndImplicity, Burequirerescarefulmanagement of Sccalability, ErrorHandling, Andresources.1) dockingusgoforefficientContainermanagement ThroughHroughgoroutines.2)

Types d'erreur personnalisés en Go: Fournir des informations d'erreur détailléesTypes d'erreur personnalisés en Go: Fournir des informations d'erreur détailléesApr 26, 2025 am 12:09 AM

Nous devons personnaliser le type d'erreur car l'interface d'erreur standard fournit des informations limitées, et les types personnalisés peuvent ajouter plus de contexte et d'informations structurées. 1) Les types d'erreur personnalisés peuvent contenir des codes d'erreur, des emplacements, des données de contexte, etc., 2) Améliorer l'efficacité du débogage et l'expérience utilisateur, 3) mais l'attention doit être accordée à ses coûts de complexité et de maintenance.

Construire des systèmes évolutifs avec le langage de programmation GoConstruire des systèmes évolutifs avec le langage de programmation GoApr 25, 2025 am 12:19 AM

GOISIDEALFORBUILDingsCalableSystemsDuetOtssimplicity, Efficiency et Build-InconcurrencySupport.1) Go'scleanSyntaxandMinImaliticDesignenHance Produductivity andreduceerrors.2)

Meilleures pratiques pour utiliser efficacement les fonctions d'initiés dans GoMeilleures pratiques pour utiliser efficacement les fonctions d'initiés dans GoApr 25, 2025 am 12:18 AM

InitFunctionSingorunAutomAtical BeforEmain () etaareusefulforsttingUnvironments etInitializingVaribles.Usethemforsimpletasks, évitez les effets et les plus compatibles avec un test de règlement.

L'ordre d'exécution des fonctions d'initiés dans les packages GOL'ordre d'exécution des fonctions d'initiés dans les packages GOApr 25, 2025 am 12:14 AM

GOINITIALISESPACKAGSEURSETHEORDETHEYARE IMPORTÉ, ENTERNEXECUTES INSIMITÉSEMENTSWithInapackageIntheirdFinitionOrder, et les nom

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

DVWA

DVWA

Damn Vulnerable Web App (DVWA) est une application Web PHP/MySQL très vulnérable. Ses principaux objectifs sont d'aider les professionnels de la sécurité à tester leurs compétences et leurs outils dans un environnement juridique, d'aider les développeurs Web à mieux comprendre le processus de sécurisation des applications Web et d'aider les enseignants/étudiants à enseigner/apprendre dans un environnement de classe. Application Web sécurité. L'objectif de DVWA est de mettre en pratique certaines des vulnérabilités Web les plus courantes via une interface simple et directe, avec différents degrés de difficulté. Veuillez noter que ce logiciel

Version Mac de WebStorm

Version Mac de WebStorm

Outils de développement JavaScript utiles

Télécharger la version Mac de l'éditeur Atom

Télécharger la version Mac de l'éditeur Atom

L'éditeur open source le plus populaire

Version crackée d'EditPlus en chinois

Version crackée d'EditPlus en chinois

Petite taille, coloration syntaxique, ne prend pas en charge la fonction d'invite de code

MinGW - GNU minimaliste pour Windows

MinGW - GNU minimaliste pour Windows

Ce projet est en cours de migration vers osdn.net/projects/mingw, vous pouvez continuer à nous suivre là-bas. MinGW : un port Windows natif de GNU Compiler Collection (GCC), des bibliothèques d'importation et des fichiers d'en-tête librement distribuables pour la création d'applications Windows natives ; inclut des extensions du runtime MSVC pour prendre en charge la fonctionnalité C99. Tous les logiciels MinGW peuvent fonctionner sur les plates-formes Windows 64 bits.