Heim Backend-Entwicklung Golang AWS Transfer-Familie mit Golang für Dateiübertragungen

AWS Transfer-Familie mit Golang für Dateiübertragungen

Dec 26, 2024 am 01:01 AM

In der Welt der modernen Technologie ist eine sichere und effiziente Dateiübertragung für viele Unternehmen eine entscheidende Notwendigkeit. AWS Transfer Family, eine verwaltete sichere Dateiübertragungslösung von Amazon Web Services, ermöglicht Dateiübertragungen mithilfe von Standardprotokollen wie SFTP, FTPS, FTP und AS2. In Kombination mit Golang, einer Programmiersprache, die für ihre Effizienz und Benutzerfreundlichkeit bekannt ist, entsteht eine leistungsstarke Kombination zur effektiven Verwaltung und Automatisierung von Dateiübertragungen.

In diesem Artikel erfahren Sie, wie Sie AWS Transfer Family mit Golang integrieren, um Ihre Dateiübertragungsprozesse zu optimieren. Von der Konfiguration der AWS Transfer Family bis zur Implementierung eines SFTP-Clients mit Golang werde ich Sie Schritt für Schritt anleiten, damit Sie diese Technologien optimal nutzen können.

Was ist die AWS Transfer Family?

AWS Transfer Family ist ein sicherer, vollständig verwalteter Dienst, der die Übertragung von Dateien in und aus AWS-Speicherdiensten wie Amazon S3 und Amazon EFS mithilfe von Protokollen wie SFTP, AS2, FTPS und FTP ermöglicht.

Hauptmerkmale

  • Unterstützte Protokolle: SFTP, FTPS, FTP, AS2
  • AWS-Speicherintegrationen: Amazon S3, Amazon EFS
  • Anwendungsfälle: Data Lakes, interne Übertragungen, Datenverteilung, Compliance-Workflows, Lieferkettenlogistik, B2B-Transaktionen.

Vorteile

  • Skalierbarkeit in Echtzeit.
  • Kein Infrastrukturmanagement erforderlich.
  • Nutzen Sie native AWS-Services für die Datenverarbeitung und -analyse.
  • Vollständig verwalteter, serverloser Workflow-Dienst.
  • Pay-as-you-go-Preise.

Voraussetzungen

  • AWS-Konto: Ein aktives Amazon Web Services-Konto. Wenn Sie noch keins haben, können Sie sich auf der AWS-Website anmelden.
  • Golang: Kenntnisse der Programmiersprache Go (Golang).
  • Administratorrechte in AWS.
  • AWS Transfer Family: Administrative Lese- und Schreibberechtigungen zum Konfigurieren und Verwalten der AWS Transfer Family. Dazu gehört die Möglichkeit, Transferserver zu erstellen und zu verwalten. Beachten Sie, dass für diesen Service Kosten anfallen.
  • Amazon S3: Administratorrechte zum Lesen und Schreiben in Amazon S3-Buckets.
  • AWS IAM: Berechtigungen zum Verwalten von IAM-Rollen und -Richtlinien, die für die Integration und Sicherheit von Übertragungen erforderlich sind.

Architekturdesign

Der vorgeschlagene Architekturentwurf für die Integration der AWS Transfer Family mit Golang besteht aus den folgenden Komponenten, wie im Diagramm unten dargestellt:

AWS Transfer Family with Golang for File Transfers

Die in diesem Artikel vorgeschlagene API dient als einfaches Beispiel zur Demonstration ihrer grundlegenden Funktionalität. In einem realen Szenario kann die API komplexer sein und zusätzliche Funktionen enthalten. Seine Hauptfunktion besteht darin, Dateien auf den SFTP-Server der AWS Transfer Family hochzuladen und in einem S3-Bucket zu speichern, sei es für Sicherungszwecke oder für die Integration mit anderen Systemen. Die Anwendungsfälle variieren und hängen von den Anforderungen der einzelnen Organisationen ab. Hier sind einige weitere Anwendungsbeispiele: AWS Transfer Family-Kunden.

Darüber hinaus kann die in diesem Artikel vorgeschlagene API mithilfe von Diensten wie AWS Elastic Beanstalk oder AWS Fargate in der AWS-Cloud bereitgestellt werden, um je nach den spezifischen Anforderungen jeder Organisation eine größere Skalierbarkeit und Verfügbarkeit zu erreichen.

Lasst uns anfangen!

Durchführung

Öffentlichen und privaten Schlüssel generieren

Generieren Sie ein öffentliches und privates Schlüsselpaar für die Verbindung zum AWS Transfer Family SFTP-Server. Dies kann lokal auf unserem Rechner mit dem folgenden Befehl erfolgen.

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

  • aws_example_ssh_key: Schlüsselname
  • PFAD: Verzeichnis, in dem der Schlüssel gespeichert wird
  • rsa: Verschlüsselungsalgorithmus
  • 4096: Schlüsselgröße
  • f: Name der Ausgabedatei
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]-----+
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
  • Geben Sie die Passphrase ein (leer für keine Passphrase): Passwort für den Schlüssel.
  • Geben Sie dieselbe Passphrase erneut ein: Bestätigen Sie das Passwort für den Schlüssel.
  • Ihre Identifikation wurde in /aws_example_ssh_key gespeichert: Der private Schlüssel wird in der aws_example_ssh_key-Datei im angegebenen Pfad gespeichert.
  • Ihr öffentlicher Schlüssel wurde in /aws_example_ssh_key.pub gespeichert: Der öffentliche Schlüssel wird in der Datei aws_example_ssh_key.pub im angegebenen Pfad gespeichert.

AWS Transfer Family with Golang for File Transfers

Erstellen Sie einen Transfer-Familienservice

Melden Sie sich bei der AWS-Managementkonsole an, wählen Sie den AWS Transfer Family-Dienst aus und erstellen Sie einen Server.

AWS Transfer Family with Golang for File Transfers

Wählen Sie SFTP (SSH File Transfer Protocol) für die sichere Dateiübertragung aus und klicken Sie auf Weiter.

AWS Transfer Family with Golang for File Transfers

Wählen Sie einen Identitätsanbieter und wählen Sie „Dienstverwaltet“.

AWS Transfer Family with Golang for File Transfers

Wählen Sie in der Endpunktkonfiguration „Öffentlich zugänglich“ aus und klicken Sie auf Weiter.

AWS Transfer Family with Golang for File Transfers

Wir wählen „Amazon S3“ als Speicheroption und klicken auf Weiter.

AWS Transfer Family with Golang for File Transfers

Belassen Sie im Abschnitt „Zusätzliche Details konfigurieren“ die Einstellungen auf ihren Standardwerten.

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

Überprüfen, auf Weiter klicken und erstellen.
Sobald die Erstellung abgeschlossen ist, werden wir etwas Ähnliches haben. Wir können sehen, dass wir noch keine Benutzer haben und dass es in Kürze über einen öffentlichen Endpunkt und die Verwendung von S3 als Speicher starten wird.

AWS Transfer Family with Golang for File Transfers

Erstellen Sie eine Rolle

Erstellen Sie eine neue Rolle für den AWS-Transfer-Familie-zu-S3-Service. Gehen Sie dazu zum IAM-Dienst und erstellen Sie eine neue Rolle des AWS-Diensttyps. Wählen Sie im Anwendungsfall „Übertragen“ und „Weiter“ aus.

AWS Transfer Family with Golang for File Transfers

Berechtigungsrichtlinie, AmazonS3FullAccess für vollen Zugriff auf den S3-Bucket. Diese Richtlinie ist jedoch durchaus zulässig und wird nicht empfohlen, sie in der Produktion zu verwenden. Und als nächstes.

AWS Transfer Family with Golang for File Transfers

Wir weisen der Rolle weiterhin den Namen „role-example-transfer-to-s3“ zu, überprüfen sie und klicken auf „Rolle erstellen“.

AWS Transfer Family with Golang for File Transfers

Erstellen Sie einen S3-Bucket

Wir fahren mit der Erstellung des S3-Buckets fort. Dazu gehen wir zum S3-Dienst und erstellen einen neuen Bucket.

AWS Transfer Family with Golang for File Transfers

Wir legen den Namen des Buckets fest, belassen die Standardkonfiguration und erstellen einen Bucket.

Bucket-Name: „bucket-example-transfer“.

AWS Transfer Family with Golang for File Transfers

AWS Transfer Family with Golang for File Transfers

Am Ende der Creación werden wir so etwas haben:

AWS Transfer Family with Golang for File Transfers

Konfigurieren Sie SFTP-Benutzer für Transfer Family mit S3

Gehen Sie zum AWS Transfer Family-Dienst und wählen Sie den Server aus, den Sie zuvor erstellt haben.

  • Wählen Sie die Registerkarte „Benutzer“ und klicken Sie auf „Benutzer hinzufügen“.
  • Geben Sie den Benutzernamen ein.
  • Weisen Sie die IAM-Rolle zu, die Sie zuvor erstellt haben.
  • Legen Sie als „Richtlinie“ keine fest
  • Geben Sie im Feld „Home-Verzeichnis“ den Namen „bucket-example-transfer“ ein, den Namen des S3-Buckets, den Sie zuvor erstellt haben.
  • Klicken Sie auf „Benutzer hinzufügen“.

AWS Transfer Family with Golang for File Transfers

Um diesem Artikel folgen zu können, müssen Sie den öffentlichen Schlüssel bereitstellen, der beim Start aws_example_ssh_key.pub generiert wurde.

Um den Inhalt des öffentlichen Schlüssels anzuzeigen, verwenden Sie den folgenden Befehl:

$ cat aws_example_ssh_key.pub

Der öffentliche Schlüssel sieht so aus:

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]-----+
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Dies ist der Schlüssel, den wir in das Feld „SSH Public Keys“ einfügen müssen. Stellen Sie sicher, dass Sie den gesamten Schlüssel genau kopieren und in dieses Feld einfügen, um einen sicheren Zugriff auf den Server zu ermöglichen.

AWS Transfer Family with Golang for File Transfers

Nachdem Sie den Benutzer erstellt haben, sollten Sie einen Bestätigungsbildschirm ähnlich dem folgenden sehen. Dies zeigt an, dass der Benutzer erfolgreich eingerichtet wurde und bereit ist, den SFTP-Dienst zu verwenden.

AWS Transfer Family with Golang for File Transfers

Projektstruktur

Im Folgenden geben wir einen detaillierten Überblick über die Struktur des Golang-Projekts und fügen als Referenz einen Link zum GitHub-Repository hinzu. Diese Übersicht hilft Ihnen, die Organisation des Projekts zu verstehen und wie verschiedene Komponenten strukturiert und miteinander verbunden sind.

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
Nach dem Login kopieren

Die Abhängigkeiten, die wir verwenden werden, sind Gin und 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
Nach dem Login kopieren

Legen Sie die folgenden Anmeldeinformationen in der Datei config.go fest, in der sich der private Schlüssel und die Anmeldeinformationen des Transfer Family-Benutzers befinden, um eine Verbindung zum SFTP-Server herzustellen.

$ go get -u github.com/gin-gonic/gin
$ go get -u github.com/pkg/sftp
Nach dem Login kopieren
  • Host: Der Verbindungsendpunkt, den wir zuvor erhalten haben.
  • Port: 22
  • Benutzer: Der Benutzername, den wir zuvor erstellt haben.
  • PrivateKeyPath: Der Pfad zum privaten Schlüssel, den wir zuvor erstellt haben.

Denken Sie auch darüber nach, den Pfad festzulegen, in dem die auf den SFTP-Server hochgeladenen Dateien gespeichert werden. In meinem Fall ist es /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",
    }
}
Nach dem Login kopieren

Funktion zum Erstellen eines neuen SFTP-Clients mit der angegebenen Konfiguration:

// service.go

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

Methode zum Hochladen einer Datei auf den SFTP-Server.

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]-----+
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Führen Sie das Projekt mit dem folgenden Befehl aus:

$ go run cmd/main.go

AWS Transfer Family with Golang for File Transfers

Jetzt laden wir mit Postman eine Datei auf den SFTP-Server hoch. Anschließend navigieren wir zu S3, um zu überprüfen, ob die Datei korrekt hochgeladen wurde.

AWS Transfer Family with Golang for File Transfers

AWS Transfer Family with Golang for File Transfers

Die Dateien wurden ohne Probleme erfolgreich hochgeladen.

Vielen Dank fürs Lesen.

Das obige ist der detaillierte Inhalt vonAWS Transfer-Familie mit Golang für Dateiübertragungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Java-Tutorial
1664
14
PHP-Tutorial
1268
29
C#-Tutorial
1246
24
Golang gegen Python: Leistung und Skalierbarkeit Golang gegen Python: Leistung und Skalierbarkeit Apr 19, 2025 am 12:18 AM

Golang ist in Bezug auf Leistung und Skalierbarkeit besser als Python. 1) Golangs Kompilierungseigenschaften und effizientes Parallelitätsmodell machen es in hohen Parallelitätsszenarien gut ab. 2) Python wird als interpretierte Sprache langsam ausgeführt, kann aber die Leistung durch Tools wie Cython optimieren.

Golang und C: Parallelität gegen Rohgeschwindigkeit Golang und C: Parallelität gegen Rohgeschwindigkeit Apr 21, 2025 am 12:16 AM

Golang ist in Gleichzeitigkeit besser als C, während C bei Rohgeschwindigkeit besser als Golang ist. 1) Golang erreicht durch Goroutine und Kanal eine effiziente Parallelität, die zum Umgang mit einer großen Anzahl von gleichzeitigen Aufgaben geeignet ist. 2) C über Compiler -Optimierung und Standardbibliothek bietet es eine hohe Leistung in der Nähe der Hardware, die für Anwendungen geeignet ist, die eine extreme Optimierung erfordern.

Golangs Auswirkungen: Geschwindigkeit, Effizienz und Einfachheit Golangs Auswirkungen: Geschwindigkeit, Effizienz und Einfachheit Apr 14, 2025 am 12:11 AM

GoimpactsDevelopmentPositivyThroughSpeed, Effizienz und DiasMlitication.1) Geschwindigkeit: Gocompilesquickandrunseffiction, idealforlargeProjects

Golang gegen Python: Schlüsselunterschiede und Ähnlichkeiten Golang gegen Python: Schlüsselunterschiede und Ähnlichkeiten Apr 17, 2025 am 12:15 AM

Golang und Python haben jeweils ihre eigenen Vorteile: Golang ist für hohe Leistung und gleichzeitige Programmierung geeignet, während Python für Datenwissenschaft und Webentwicklung geeignet ist. Golang ist bekannt für sein Parallelitätsmodell und seine effiziente Leistung, während Python für sein Ökosystem für die kurze Syntax und sein reiches Bibliothek bekannt ist.

Golang gegen C: Leistung und Geschwindigkeitsvergleich Golang gegen C: Leistung und Geschwindigkeitsvergleich Apr 21, 2025 am 12:13 AM

Golang ist für schnelle Entwicklung und gleichzeitige Szenarien geeignet, und C ist für Szenarien geeignet, in denen extreme Leistung und Kontrolle auf niedriger Ebene erforderlich sind. 1) Golang verbessert die Leistung durch Müllsammlung und Parallelitätsmechanismen und eignet sich für die Entwicklung von Webdiensten mit hoher Konsequenz. 2) C erreicht die endgültige Leistung durch das manuelle Speicherverwaltung und die Compiler -Optimierung und eignet sich für eingebettete Systementwicklung.

Golang und C: Die Kompromisse bei der Leistung Golang und C: Die Kompromisse bei der Leistung Apr 17, 2025 am 12:18 AM

Die Leistungsunterschiede zwischen Golang und C spiegeln sich hauptsächlich in der Speicherverwaltung, der Kompilierungsoptimierung und der Laufzeiteffizienz wider. 1) Golangs Müllsammlung Mechanismus ist praktisch, kann jedoch die Leistung beeinflussen.

C und Golang: Wenn die Leistung von entscheidender Bedeutung ist C und Golang: Wenn die Leistung von entscheidender Bedeutung ist Apr 13, 2025 am 12:11 AM

C eignet sich besser für Szenarien, in denen eine direkte Kontrolle der Hardware -Ressourcen und hohe Leistungsoptimierung erforderlich ist, während Golang besser für Szenarien geeignet ist, in denen eine schnelle Entwicklung und eine hohe Parallelitätsverarbeitung erforderlich sind. 1.Cs Vorteil liegt in den nahezu Hardware-Eigenschaften und hohen Optimierungsfunktionen, die für leistungsstarke Bedürfnisse wie die Spieleentwicklung geeignet sind. 2. Golangs Vorteil liegt in seiner präzisen Syntax und der natürlichen Unterstützung, die für die Entwicklung einer hohen Parallelitätsdienste geeignet ist.

Das Performance -Rennen: Golang gegen C. Das Performance -Rennen: Golang gegen C. Apr 16, 2025 am 12:07 AM

Golang und C haben jeweils ihre eigenen Vorteile bei Leistungswettbewerben: 1) Golang ist für eine hohe Parallelität und schnelle Entwicklung geeignet, und 2) C bietet eine höhere Leistung und eine feinkörnige Kontrolle. Die Auswahl sollte auf Projektanforderungen und Teamtechnologie -Stack basieren.

See all articles