


Famille 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 :
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 : 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]-----+
- 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é.
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.
Sélectionnez SFTP (SSH File Transfer Protocol) pour un transfert de fichiers sécurisé et cliquez sur Suivant.
Choisissez un fournisseur d'identité et sélectionnez « Service géré ».
Dans la configuration du point de terminaison, sélectionnez « Accessible publiquement » et cliquez sur Suivant.
Nous sélectionnons « Amazon S3 » comme option de stockage et cliquons sur Suivant.
Dans la section « Configurer les détails supplémentaires », laissez les paramètres à leurs valeurs par défaut.
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.
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.
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.
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".
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.
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".
À la fin de la création, nous aurons quelque chose comme ceci :
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".
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]-----+
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.
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.
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", } }
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]-----+
Exécutez le projet à l'aide de la commande suivante :
$ allez exécuter cmd/main.go
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.
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!

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

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 !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds











Golang est meilleur que Python en termes de performances et d'évolutivité. 1) Les caractéristiques de type compilation de Golang et le modèle de concurrence efficace le font bien fonctionner dans des scénarios de concurrence élevés. 2) Python, en tant que langue interprétée, s'exécute lentement, mais peut optimiser les performances via des outils tels que Cython.

Golang est meilleur que C en concurrence, tandis que C est meilleur que Golang en vitesse brute. 1) Golang obtient une concurrence efficace par le goroutine et le canal, ce qui convient à la gestion d'un grand nombre de tâches simultanées. 2) C Grâce à l'optimisation du compilateur et à la bibliothèque standard, il offre des performances élevées près du matériel, adaptées aux applications qui nécessitent une optimisation extrême.

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

Golang convient au développement rapide et aux scénarios simultanés, et C convient aux scénarios où des performances extrêmes et un contrôle de bas niveau sont nécessaires. 1) Golang améliore les performances grâce à des mécanismes de collecte et de concurrence des ordures, et convient au développement de services Web à haute concurrence. 2) C réalise les performances ultimes grâce à la gestion manuelle de la mémoire et à l'optimisation du compilateur, et convient au développement du système intégré.

Golang et Python ont chacun leurs propres avantages: Golang convient aux performances élevées et à la programmation simultanée, tandis que Python convient à la science des données et au développement Web. Golang est connu pour son modèle de concurrence et ses performances efficaces, tandis que Python est connu pour sa syntaxe concise et son écosystème de bibliothèque riche.

Les différences de performance entre Golang et C se reflètent principalement dans la gestion de la mémoire, l'optimisation de la compilation et l'efficacité du temps d'exécution. 1) Le mécanisme de collecte des ordures de Golang est pratique mais peut affecter les performances, 2) la gestion manuelle de C et l'optimisation du compilateur sont plus efficaces dans l'informatique récursive.

Golang et C ont chacun leurs propres avantages dans les compétitions de performance: 1) Golang convient à une concurrence élevée et à un développement rapide, et 2) C fournit des performances plus élevées et un contrôle fin. La sélection doit être basée sur les exigences du projet et la pile de technologie d'équipe.

GolangisidealforBuildingsCalableSystemsDuetoitSefficiency and Concurrency, tandis que les Implicites de l'Indrecosystem et le Golang'sDesignenCourageSlecElNCORES
