Wie konfiguriere ich AWS Systems Manager Run Command, um die Ausgabe an einen S3-Bucket in einem anderen AWS-Konto zu senden?

Lesedauer: 4 Minute
0

Ich möchte die Ausgabe des AWS Systems Manager Run Command an einen Amazon Simple Storage Service (Amazon S3)-Bucket in einem anderen AWS-Konto senden. Wie funktioniert das?

Behebung

Sie können den Befehl AWS Systems Manager Run Command verwenden, um Systems Manager-Dokumente wie AWS-RunPatchBaseline und AWS-RunPowerShellScript in verwalteten Instances auszuführen. Anschließend können Sie die Ausgabe an Amazon CloudWatch und Amazon S3 im selben AWS-Konto oder an einen S3-Bucket in einem anderen AWS-Konto senden.

Um Systems Manager den Zugriff auf einen S3-Bucket in einem anderen AWS-Konto zu ermöglichen, konfigurieren Sie die folgenden Richtlinien für AWS Identity and Access Management (IAM) und Bucket.

Berechtigungen für das IAM-Instance-Profil

Ein Instance-Profil ist ein Container, der IAM-Rolleninformationen beim Start an eine Amazon Elastic Compute Cloud (Amazon EC2)-Instance weitergibt. Die IAM-Rolle, die Ihrer verwalteten EC2-Instance zugeordnet ist, muss über die folgenden Aktionen verfügen, um den Zugriff auf den S3-Bucket zu ermöglichen. Ersetzen Sie DOC-EXAMPLE-BUCKET durch den S3-Bucket-Namen im Zielkonto.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "VisualEditor0",
      "Effect": "Allow",
      "Action": [
        "s3:PutObject",
        "s3:GetObject",
        "s3:PutObjectAcl"
      ],
      "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
    }
  ]
}

Weitere Informationen zu den S3-Berechtigungen, die für bestimmte Szenarien erforderlich sind, finden Sie unterEine benutzerdefinierte Richtlinie für den Zugriff auf den S3-Bucket erstellen.

S3-Ziel-Bucket-Richtlinie

Der S3-Ziel-Bucket muss der Instance-Profilrolle, die an die verwaltete EC2-Instance angehängt ist, den Zugriff auf den Bucket ermöglichen. Sie können entweder eine Bucket-Richtlinie erstellen oder Zugriff auf das AWS-Quellkonto in der Zugriffssteuerungsliste (ACL) des Buckets gewähren.

Warnung: Eine Best Practice in puncto Sicherheit ist die Erstellung einer Bucket-Richtlinie. Durch das Hinzufügen des AWS-Quellkontos zur Bucket-ACL können alle Benutzer und Rollen im AWS-Quellkonto auf den S3-Bucket zugreifen.

Im Folgenden finden Sie ein Beispiel für eine Bucket-Richtlinie für den S3-Ziel-Bucket. Ersetzen Sie DOC-EXAMPLE-BUCKET durch den S3-Bucket-Namen im Zielkonto. Ersetzen Sie SOURCE-AWS-ACCOUNT durch die AWS-Quellkonto-ID. Ersetzen Sie INSTANCE-PROFILE-ROLE-NAME durch den IAM-Rollennamen, der an die EC2-Instance angehängt ist.

{
  "Version": "2012-10-17",
  "Id": "Policy1589684413780",
  "Statement": [
    {
      "Sid": "Stmt1589684412557",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::SOURCE-AWS-ACCOUNT:role/INSTANCE-PROFILE-ROLE-NAME"
      },
      "Action": [
        "s3:GetObject",
        "s3:PutObject",
        "s3:PutObjectAcl"
      ],
      "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"
    }
  ]
}

Konfigurieren Sie den Ausführungsbefehl Run Command, um die Befehlsausgabe an Amazon S3 zu senden

AWS Systems Manager-Konsole

1.Öffnen Sie die Systems Manager-Konsole, und wählen Sie dann im Navigationsbereich Run Command (Ausführungsbefehl) aus.

2.Wählen Sie den Befehl Run Command (Ausführungsbefehl).

3.Wählen Sie das Dokument aus, das Sie ausführen möchten, und geben Sie alle erforderlichen Parameter ein.

4.Wählen Sie unter den Ausgabeoptionen die Option S3-Bucket aktivieren aus. Wählen Sie Einen S3-Bucket-Namen in das Textfeld eingeben aus, und geben Sie dann den Namen des S3-Buckets in das Zielkonto ein.

5.(Optional) Um die Befehlsausgabe an einen Unterordner des S3-Buckets zu senden, geben Sie für das S3-Schlüsselpräfix das S3-Schlüsselpräfix ein.

AWS-CLI

Hinweis: Wenn Sie beim Ausführen von Befehlen der AWS Command Line Interface (AWS CLI) Fehlermeldungen erhalten, stellen Sie sicher, dass Sie die neueste AWS CLI-Version verwenden.

Wenn Sie einen SendCommand-API-Aufruf im AWS-CLI ausführen, können Sie die Ausgabeoptionen festlegen, indem Sie die folgenden Parameter hinzufügen:

--output-s3-bucket-name "DOC-EXAMPLE-BUCKET" --output-s3-key-prefix "DOC-EXAMPLE-BUCKET-PREFIX"

Hinweis: In den vorherigen Parameterbeispielen ist DOC-EXAMPLE-BUCKET der Name des S3-Buckets in Ihrem Zielkonto. DOC-EXAMPLE-BUCKET-PREFIX gibt den Unterordner innerhalb des S3-Buckets an, in dem Sie die Antwort speichern möchten. Der Parameter output-s3-key-prefix ist nicht erforderlich, um die Befehlsausgabe an einen S3-Bucket zu senden. Weitere Informationen finden Sie unter send-command.

Das folgende Beispiel für AWS-CLI initiiert einen Befehl, der das AWS-RunPowerShellScript-Dokument verwendet, um echo HelloWorld in den verwalteten Instances remote auszuführen, die als key=tag:env, Values=Dev, Test gekennzeichnet sind. Die Befehlsausgabe wird an den S3-Bucket mit dem Namen DOC-EXAMPLE-BUCKET in Ihrem Zielkonto gesendet und in einem Unterordner mit dem Präfix DOC-EXAMPLE-BUCKET-PREFIX gespeichert.

aws ssm send-command --document-name "AWS-RunPowerShellScript" --parameters '{"commands":["echo helloWorld"]}'  --targets '[{"Key":"tag:Env","Values":["Dev","Test"]}]' --output-s3-bucket-name "DOC-EXAMPLE-BUCKET" --output-s3-key-prefix "DOC-EXAMPLE-BUCKET-PREFIX"

Weitere Informationen

Ein IAM-Instance-Profil für Systems Manager erstellen

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren