


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]-----+ </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é.
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]-----+ </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.
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", } } </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
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!

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

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

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

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

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.

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

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

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


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

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
Outils de développement JavaScript utiles

Télécharger la version Mac de l'éditeur Atom
L'éditeur open source le plus populaire

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