AWS Builder Center: Learn, Build and Connect with builders in the AWS community
AWS Builder Center is the official home for builders on AWS. Share and read what others are working on, follow people who inspire you, explore training and workshops, and find tools to support what you're building.
Wie konfiguriere ich meinen AWS Transfer Family-Server für die Verwendung eines Amazon-S3-Buckets, der sich in einem anderen AWS-Konto befindet?
Ich möchte, dass mein AWS Transfer Family-Server in Konto A auf einen Amazon Simple Storage Service (Amazon S3)-Bucket in einem anderen Konto, d. h. Konto B zugreift. Ich möchte meinen Server mit kontoübergreifendem Zugriff auf den Bucket einrichten.
Kurzbeschreibung
Gehe wie folgt vor:
- Erstelle eine AWS Identity and Access Management (IAM)-Rolle in Konto A mit Zugriff auf den Bucket.
- Aktualisiere die Bucket-Richtlinie, um der IAM-Rolle in Konto B kontoübergreifenden Zugriff zu gewähren.
- Erstelle einen Transfer-Family-Serverbenutzer, der mit der IAM-Rolle in Konto A konfiguriert ist.
- Überprüfe, ob dein Transfer-Family-Serverbenutzer in Konto A auf den S3-Bucket in Konto B zugreifen kann.
- (Optional) Setze die S3-Objekteigentümerschaft auf den in Konto B bevorzugten Bucket-Eigentümer.
Hinweis: Die AWS Transfer-Family-Konsole zeigt nur die Amazon S3-Buckets desselben Kontos an. Um deinen Transfer-Family-Server mit einem Bucket in einem anderen Konto zu verwenden, musst du die AWS-Befehlszeilenschnittstelle (AWS CLI) oder ein AWS-SDK verwenden.
Behebung
Erstellen einer IAM-Rolle in Konto A mit Zugriff auf den Bucket
Erstelle eine IAM-Rolle für deine Serverbenutzer. Verwende für die IAM-Richtlinie der Rolle Folgendes:
Hinweis: Ersetze destination-DOC-EXAMPLE-BUCKET durch den Namen des S3-Buckets, auf den dein Server zugreifen soll.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowListingBucketReadandWriteandDelete", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:PutObjectAcl", "s3:GetObject", "s3:DeleteObjectVersion", "s3:DeleteObject", "s3:GetObjectVersion", "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::destination-DOC-EXAMPLE-BUCKET/*", "arn:aws:s3:::destination-DOC-EXAMPLE-BUCKET" ] } ] }
Hinweis: Die Transfer-Familie benötigt die s3:PutObjectAcl-Berechtigung, um kontoübergreifende S3-Uploads durchzuführen.
Nachdem du die IAM-Rolle erstellt hast, rufe die Rollen-ID ab, indem du den Befehl get-role ausführst, ähnlich wie im Folgenden beschrieben:
$ aws iam get-role --role-name "ROLE_NAME"
Du benötigst die Rollen-ID für den nächsten Schritt.
Aktualisiere die Bucket-Richtlinie, um der IAM-Rolle in Konto B kontoübergreifenden Zugriff zu gewähren
Ändere die Richtlinie des Ziel-Buckets, um der von dir erstellten IAM-Rolle Zugriff zu gewähren. Du kannst eine Bucket-Richtlinie wie die folgende verwenden:
Hinweis: Ersetze arn:aws:iam::123456789012:root durch den Amazon-Ressourcennamen (ARN) des Kontos, zu dem dein Server gehört. Ersetze destination-doc-example-bucket durch den Namen des Buckets. Ersetze AROA1234567890 durch die Rollen-ID der von dir erstellten IAM-Rolle.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "BucketPolicyForTransferFamily", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:root" }, "Action": [ "s3:PutObject", "s3:PutObjectAcl", "s3:GetObject", "s3:DeleteObjectVersion", "s3:DeleteObject", "s3:GetObjectVersion", "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::destination-DOC-EXAMPLE-BUCKET", "arn:aws:s3:::destination-DOC-EXAMPLE-BUCKET/*" ], "Condition": { "StringLike": { "aws:userId": "AROA1234567890:*" } } } ] }
Das Element „Bedingung“ in dieser Beispielrichtlinie ist optional. Füge das Element Bedingung ein, um den Zugriff auf den Bereich nur der von dir angegebenen IAM-Rolle zu gewähren. Oder entferne das Element, um allen IAM-Rollen und Benutzern des Kontos, zu dem dein Server gehört, Zugriff zu gewähren.
Erstelle einen Transfer-Family-Serverbenutzer, der mit der IAM-Rolle in Konto A konfiguriert ist
1. Generiere SSH-Schlüssel für deinen Transfer-Family-Server.
2. Ermittle die Server-ID deines Servers.
3. Führe den Befehl create-user über die AWS-CLI aus. Gib für --server-id die ID deines Servers ein. Gib für --role den ARN der IAM-Rolle ein, die du erstellt hast. Gib für --ssh-public-key-body den Inhalt der .pub-Datei ein, die du beim Erstellen der SSH-Schlüssel generiert hast.
$ aws transfer create-user --user-name "MY_SERVER_USER_NAME" --server-id "MY_SERVER_ID" --role "MY_IAM_ROLE_ARN" --home-directory "/destination-DOC-EXAMPLE-BUCKET/MY_SERVER_USER_NAME" --ssh-public-key-body "CONTENTS_OF_MY_SSH_.PUB_FILE"
Hinweis: Wenn du beim Ausführen von AWS-CLI-Befehlen Fehler erhältst, stelle sicher, dass du die neueste Version der AWS-CLI verwendest.
Der Befehl gibt die Server-ID und den von dir erstellten Benutzer zurück:
{ "ServerId": "MY_SERVER_ID", "UserName": "MY_SERVER_USER_NAME" }
Wichtig: Um den Zugriff des Serverbenutzers nur auf sein Home-Verzeichnis zu beschränken, erstelle eine Scope-Down-Richtlinie in IAM. Bearbeite dann die Eigenschaften des Serverbenutzers, um die von dir erstellte Richtlinie zur Einschränkung des Umfangs anzuwenden.
Überprüfe, ob dein Transfer-Family-Serverbenutzer in Konto A auf den Bucket in Konto B zugreifen kann
1. Verbinde dich mit deinem Server als der von dir erstellte Benutzer. Dieser OpenSSH-Befehl stellt beispielsweise eine Verbindung zu einem SFTP-Server her:
$ sftp -i myserveruser MY_SERVER_USER_NAME@MY_SERVER_ID.server.transfer.us-east-1.amazonaws.com
2. Gib testweise das Home-Verzeichnis des Buckets an. Wenn du OpenSSH verwendest, führe diesen Befehl aus:
$ ls
Wenn der Befehl das Home-Verzeichnis zurückgibt, dann hat dein Serverbenutzer kontoübergreifenden Zugriff auf den Bucket.
(Optional) Setze die S3-Objekteigentümerschaft auf den in Konto B bevorzugten Bucket-Eigentümer
Standardmäßig ist ein Amazon-S3-Objekt Eigentum des AWS-Kontos, welches das Objekt hochgeladen hat. Das bedeutet, dass die in den Ziel-Bucket hochgeladenen Objekte standardmäßig dem Konto des Quell-Servers gehören.
Um das Zielkonto so zu aktivieren, dass es automatisch Eigentümer von Objekten aus kontoübergreifenden Uploads wird, setze die S3-Objekteigentümerschaft des Ziel-Buckets auf den bevorzugten Bucket-Eigentümer. Nachdem du das getan hast, gehören alle neuen Objekte, die über den AWS-Transfer-Family-Server hochgeladen werden, automatisch dem Konto des Ziel-Buckets.
Weitere Informationen
CreateUser (AWS-Transfer-Family-Benutzerhandbuch)
Hinzufügen eines Benutzers (AWS-Transfer-Family-Benutzerhandbuch)
- Sprache
- Deutsch
