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:
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: 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]-----+ </path></path></path>
- 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.
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.
Wählen Sie SFTP (SSH File Transfer Protocol) für die sichere Dateiübertragung aus und klicken Sie auf Weiter.
Wählen Sie einen Identitätsanbieter und wählen Sie „Dienstverwaltet“.
Wählen Sie in der Endpunktkonfiguration „Öffentlich zugänglich“ aus und klicken Sie auf Weiter.
Wir wählen „Amazon S3“ als Speicheroption und klicken auf Weiter.
Belassen Sie im Abschnitt „Zusätzliche Details konfigurieren“ die Einstellungen auf ihren Standardwerten.
Ü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.
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.
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.
Wir weisen der Rolle weiterhin den Namen „role-example-transfer-to-s3“ zu, überprüfen sie und klicken auf „Rolle erstellen“.
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.
Wir legen den Namen des Buckets fest, belassen die Standardkonfiguration und erstellen einen Bucket.
Bucket-Name: „bucket-example-transfer“.
Am Ende der Creación werden wir so etwas haben:
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“.
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]-----+ </path></path></path>
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.
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.
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
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
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
- 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", } } </path></user></port></host>
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/") }
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]-----+ </path></path></path>
Führen Sie das Projekt mit dem folgenden Befehl aus:
$ go run cmd/main.go
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.
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!

GoisidealforbuildingsCalablesSystemsDuetoitsSimplicity, Effizienz und verblüfftem Inconcurrencysupport.1) Go'ScleanSyNtaxandminimalisticDeInenHanceProductivity und ReduzienEirrors.2) ItsgoroutinesandchannelsableCrentCrent-Programme, Distrioutines und ChannelenableCrent-Programme, DistributingworkloNecrent-Programme,

Initunctionsingorunautomatischbeforemain () und sarEsfulForsSetingupenvironmentsandinitializingVariables

GoinitializespackagesintheordertheyareImported, SheexecuteStfunctionSwitHinapackageInredeDinitionorder und FileNamesDeterminetheorderacrossmultipleFiles

CustomInterFacesingoarecrucialForwritingFlexible, Wartelable und testableCode

Der Grund für die Verwendung von Schnittstellen für Simulation und Test ist, dass die Schnittstelle die Definition von Verträgen ohne Angabe von Implementierungen ermöglicht, wodurch die Tests isolierter und einfacher werden. 1) Die implizite Implementierung der Schnittstelle erleichtert es einfach, Scheinobjekte zu erstellen, die reale Implementierungen bei den Tests ersetzen können. 2) Die Verwendung von Schnittstellen kann die tatsächliche Implementierung des Dienstes in Unit -Tests problemlos ersetzen und die Komplexität und die Zeit der Tests reduzieren. 3) Die von der Schnittstelle bereitgestellte Flexibilität ermöglicht Änderungen des simulierten Verhaltens für verschiedene Testfälle. 4) Schnittstellen helfen von Anfang an, Testable -Code zu entwerfen und die Modularität und Wartbarkeit des Codes zu verbessern.

In Go wird die Init -Funktion für die Paketinitialisierung verwendet. 1) Die Init -Funktion wird automatisch bei der Paketinitialisierung aufgerufen und ist geeignet, um globale Variablen zu initialisieren, Verbindungen zu setzen und Konfigurationsdateien zu laden. 2) Es kann mehrere Init -Funktionen geben, die in Dateireihenfolge ausgeführt werden können. 3) Bei der Verwendung sollten die Ausführungsreihenfolge, die Testschwierigkeit und die Leistungsauswirkungen in Betracht gezogen werden. 4) Es wird empfohlen, Nebenwirkungen zu reduzieren, die Abhängigkeitsinjektion zu verwenden und die Initialisierung zu verzögern, um die Verwendung von Init -Funktionen zu optimieren.

GO'SSelectstatementsTreamlinesConcurrentProgrammingByMultiplexingoperationen.1) ITallowswaitingonMultiPhanneloperationen, ExecutingTheFirstreadyone) TheDefaultCasepreventsDeadlocksByAntheProgramtoprosectroseverifnooperation.3) itcanpeusedefoursend

Contextandwaitgroupsarecrucialingoforminggoroutineseffektiv.1) contextAllowSsignalingCancellationanddeadlinesAcrossapiobears, Sicherstellung von Goroutinescanbesten


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

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

Heißer Artikel

Heiße Werkzeuge

WebStorm-Mac-Version
Nützliche JavaScript-Entwicklungstools

Dreamweaver CS6
Visuelle Webentwicklungstools

SAP NetWeaver Server-Adapter für Eclipse
Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.

EditPlus chinesische Crack-Version
Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

Sicherer Prüfungsbrowser
Safe Exam Browser ist eine sichere Browserumgebung für die sichere Teilnahme an Online-Prüfungen. Diese Software verwandelt jeden Computer in einen sicheren Arbeitsplatz. Es kontrolliert den Zugriff auf alle Dienstprogramme und verhindert, dass Schüler nicht autorisierte Ressourcen nutzen.
