Amazon SNS SNS-Integration in Image Builder - EC2 Image Builder

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Amazon SNS SNS-Integration in Image Builder

Amazon Simple Notification Service (Amazon SNS) ist ein verwalteter Service, der die asynchrone Nachrichtenzustellung von Verlagen an Abonnenten (auch bekannt als Produzenten und Verbraucher) ermöglicht.

Sie können in Ihrer Infrastrukturkonfiguration ein SNS-Thema angeben. Wenn Sie ein Image erstellen oder eine Pipeline ausführen, kann Image Builder detaillierte Meldungen zu Ihrem Image-Status zu diesem Thema veröffentlichen. Wenn der Imagestatus einen der folgenden Zustände erreicht, veröffentlicht Image Builder eine Meldung:

  • AVAILABLE

  • FAILED

Ein Beispiel für eine SNS-Nachricht von Image Builder finden Sie unterFormat der SNS-Nachricht. Wenn Sie ein neues SNS-Thema erstellen möchten, finden Sie weitere Informationen unter Erste Schritte mit Amazon SNS im Amazon Simple Notification Service Developer Guide.

Themen rund um verschlüsseltes SNS

Wenn Ihr SNS-Thema verschlüsselt ist, müssen Sie der Image Builder Builder-Dienstrolle in der AWS KMS key Richtlinie die Erlaubnis erteilen, die folgenden Aktionen auszuführen:

  • kms:Decrypt

  • kms:GenerateDataKey

Anmerkung

Wenn Ihr SNS-Thema verschlüsselt ist, muss sich der Schlüssel, der dieses Thema verschlüsselt, in dem Konto befinden, auf dem der Image Builder Builder-Dienst ausgeführt wird. Image Builder kann keine Benachrichtigungen an SNS-Themen senden, die mit Schlüsseln anderer Konten verschlüsselt sind.

Beispiel für das Hinzufügen einer KMS-Schlüsselrichtlinie

Das folgende Beispiel zeigt den zusätzlichen Abschnitt, den Sie der KMS-Schlüsselrichtlinie hinzufügen. Verwenden Sie den Amazon-Ressourcennamen (ARN) für die mit dem IAM-Service verknüpfte Rolle, die Image Builder unter Ihrem Konto erstellt hat, als Sie ein Image Builder zum ersten Mal erstellt haben. Weitere Informationen zur serviceverknüpften Image Builder Builder-Rolle finden Sie unterVerwenden Sie mit dem IAM-Dienst verknüpfte Rollen für Image Builder.

{ "Statement": [{ "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/aws-service-role/imagebuilder.amazonaws.com/AWSServiceRoleForImageBuilder" }, "Action": [ "kms:GenerateDataKey*", "kms:Decrypt" ], "Resource": "*" }] }

Sie können eine der folgenden Methoden verwenden, um den ARN abzurufen.

AWS Management Console

Gehen Sie wie folgt vor, um den ARN für die serviceverknüpfte Rolle abzurufen AWS Management Console, die Image Builder unter Ihrem Konto erstellt hat:

  1. Öffnen Sie unter https://console.aws.amazon.com/iam/ die IAM-Konsole.

  2. Wählen Sie im linken Navigationsbereich Roles aus.

  3. Suchen Sie nach dem folgenden RollennamenImageBuilder, und wählen Sie ihn aus den Ergebnissen aus:AWSServiceRoleForImageBuilder. Daraufhin wird die Seite mit den Rollendetails angezeigt.

  4. Um den ARN in Ihre Zwischenablage zu kopieren, wählen Sie das Symbol neben dem ARN-Namen.

AWS CLI

Verwenden Sie den IAM-Befehl get-role wie folgt, um den ARN für die dienstverknüpfte Rolle abzurufen AWS CLI, die Image Builder unter Ihrem Konto erstellt hat.

aws iam get-role --role-name AWSServiceRoleForImageBuilder

Teilweise Beispielausgabe:

{ "Role": { "Path": "/aws-service-role/imagebuilder.amazonaws.com/", "RoleName": "AWSServiceRoleForImageBuilder", ... "Arn": "arn:aws:iam::123456789012:role/aws-service-role/imagebuilder.amazonaws.com/AWSServiceRoleForImageBuilder", ... }

Format der SNS-Nachricht

Nachdem Image Builder eine Nachricht zu Ihrem Amazon SNS SNS-Thema veröffentlicht hat, können andere Dienste, die das Thema abonnieren, nach dem Nachrichtenformat filtern und feststellen, ob es die Kriterien für weitere Maßnahmen erfüllt. Beispielsweise kann eine Erfolgsmeldung eine Aufgabe zur Aktualisierung eines AWS Systems Manager Parameterspeichers oder zum Starten eines externen Compliance-Test-Workflows für das Ausgabe-AMI initiieren.

Das folgende Beispiel zeigt die JSON-Nutzlast für eine typische Nachricht, die Image Builder veröffentlicht, wenn ein Pipeline-Build vollständig ausgeführt wird, und erstellt ein Linux-Image.

{ "versionlessArn": "arn:aws:imagebuilder:us-west-1:123456789012:image/example-linux-image", "semver": 1237940039285380274899124227, "arn": "arn:aws:imagebuilder:us-west-1:123456789012:image/example-linux-image/1.0.0/3", "name": "example-linux-image", "version": "1.0.0", "type": "AMI", "buildVersion": 3, "state": { "status": "AVAILABLE" }, "platform": "Linux", "imageRecipe": { "arn": "arn:aws:imagebuilder:us-west-1:123456789012:image-recipe/example-linux-image/1.0.0", "name": "amjule-barebones-linux", "version": "1.0.0", "components": [ { "componentArn": "arn:aws:imagebuilder:us-west-1:123456789012:component/update-linux/1.0.2/1" } ], "platform": "Linux", "parentImage": "arn:aws:imagebuilder:us-west-1:987654321098:image/amazon-linux-2-x86/2022.6.14/1", "blockDeviceMappings": [ { "deviceName": "/dev/xvda", "ebs": { "encrypted": false, "deleteOnTermination": true, "volumeSize": 8, "volumeType": "gp2" } } ], "dateCreated": "Feb 24, 2021 12:31:54 AM", "tags": { "internalId": "1a234567-8901-2345-bcd6-ef7890123456", "resourceArn": "arn:aws:imagebuilder:us-west-1:123456789012:image-recipe/example-linux-image/1.0.0" }, "workingDirectory": "/tmp", "accountId": "462045008730" }, "sourcePipelineArn": "arn:aws:imagebuilder:us-west-1:123456789012:image-pipeline/example-linux-pipeline", "infrastructureConfiguration": { "arn": "arn:aws:imagebuilder:us-west-1:123456789012:infrastructure-configuration/example-linux-infra-config-uswest1", "name": "example-linux-infra-config-uswest1", "instanceProfileName": "example-linux-ib-baseline-admin", "tags": { "internalId": "234abc56-d789-0123-a4e5-6b789d012c34", "resourceArn": "arn:aws:imagebuilder:us-west-1:123456789012:infrastructure-configuration/example-linux-infra-config-uswest1" }, "logging": { "s3Logs": { "s3BucketName": "amzn-s3-demo-bucket" } }, "keyPair": "example-linux-key-pair-uswest1", "terminateInstanceOnFailure": true, "snsTopicArn": "arn:aws:sns:us-west-1:123456789012:example-linux-ibnotices-uswest1", "dateCreated": "Feb 24, 2021 12:31:55 AM", "accountId": "123456789012" }, "imageTestsConfigurationDocument": { "imageTestsEnabled": true, "timeoutMinutes": 720 }, "distributionConfiguration": { "arn": "arn:aws:imagebuilder:us-west-1:123456789012:distribution-configuration/example-linux-distribution", "name": "example-linux-distribution", "dateCreated": "Feb 24, 2021 12:31:56 AM", "distributions": [ { "region": "us-west-1", "amiDistributionConfiguration": {} } ], "tags": { "internalId": "345abc67-8910-12d3-4ef5-67a8b90c12de", "resourceArn": "arn:aws:imagebuilder:us-west-1:123456789012:distribution-configuration/example-linux-distribution" }, "accountId": "123456789012" }, "dateCreated": "Jul 28, 2022 1:13:45 AM", "outputResources": { "amis": [ { "region": "us-west-1", "image": "ami-01a23bc4def5a6789", "name": "example-linux-image 2022-07-28T01-14-17.416Z", "accountId": "123456789012" } ] }, "buildExecutionId": "ab0cd12e-34fa-5678-b901-2c3456d789e0", "testExecutionId": "6a7b8901-cdef-234a-56b7-8cd89ef01234", "distributionJobId": "1f234567-8abc-9d0e-1234-fa56b7c890de", "integrationJobId": "432109b8-afe7-6dc5-4321-0ba98f7654e3", "accountId": "123456789012", "osVersion": "Amazon Linux 2", "enhancedImageMetadataEnabled": true, "buildType": "USER_INITIATED", "tags": { "internalId": "901e234f-a567-89bc-0123-d4e567f89a01", "resourceArn": "arn:aws:imagebuilder:us-west-1:123456789012:image/example-linux-image/1.0.0/3" } }

Das folgende Beispiel zeigt die JSON-Nutzlast für eine typische Nachricht, die Image Builder für einen Pipeline-Build-Fehler für ein Linux-Image veröffentlicht.

{ "versionlessArn": "arn:aws:imagebuilder:us-west-2:123456789012:image/my-example-image", "semver": 1237940039285380274899124231, "arn": "arn:aws:imagebuilder:us-west-2:123456789012:image/my-example-image/1.0.0/7", "name": "My Example Image", "version": "1.0.0", "type": "AMI", "buildVersion": 7, "state": { "status": "FAILED", "reason": "Image Failure reason." }, "platform": "Linux", "imageRecipe": { "arn": "arn:aws:imagebuilder:us-west-2:123456789012:image-recipe/my-example-image/1.0.0", "name": "My Example Image", "version": "1.0.0", "description": "Testing Image recipe", "components": [ { "componentArn": "arn:aws:imagebuilder:us-west-2:123456789012:component/my-example-image-component/1.0.0/1" } ], "platform": "Linux", "parentImage": "ami-0cd12345db678d90f", "dateCreated": "Jun 21, 2022 11:36:14 PM", "tags": { "internalId": "1a234567-8901-2345-bcd6-ef7890123456", "resourceArn": "arn:aws:imagebuilder:us-west-2:123456789012:image-recipe/my-example-image/1.0.0" }, "accountId": "123456789012" }, "sourcePipelineArn": "arn:aws:imagebuilder:us-west-2:123456789012:image-pipeline/my-example-image-pipeline", "infrastructureConfiguration": { "arn": "arn:aws:imagebuilder:us-west-2:123456789012:infrastructure-configuration/my-example-infra-config", "name": "SNS topic Infra config", "description": "An example that will retain instances of failed builds", "instanceTypes": [ "t2.micro" ], "instanceProfileName": "EC2InstanceProfileForImageBuilder", "tags": { "internalId": "234abc56-d789-0123-a4e5-6b789d012c34", "resourceArn": "arn:aws:imagebuilder:us-west-2:123456789012:infrastructure-configuration/my-example-infra-config" }, "terminateInstanceOnFailure": true, "snsTopicArn": "arn:aws:sns:us-west-2:123456789012:example-pipeline-notification-topic", "dateCreated": "Jul 5, 2022 7:31:53 PM", "accountId": "123456789012" }, "imageTestsConfigurationDocument": { "imageTestsEnabled": true, "timeoutMinutes": 720 }, "distributionConfiguration": { "arn": "arn:aws:imagebuilder:us-west-2:123456789012:distribution-configuration/my-example-distribution-config", "name": "New distribution config", "dateCreated": "Dec 3, 2021 9:24:22 PM", "distributions": [ { "region": "us-west-2", "amiDistributionConfiguration": {}, "fastLaunchConfigurations": [ { "enabled": true, "snapshotConfiguration": { "targetResourceCount": 2 }, "maxParallelLaunches": 2, "launchTemplate": { "launchTemplateId": "lt-01234567890" }, "accountId": "123456789012" } ] } ], "tags": { "internalId": "1fecd23a-4f56-7f89-01e2-345678abbe90", "resourceArn": "arn:aws:imagebuilder:us-west-2:123456789012:distribution-configuration/my-example-distribution-config" }, "accountId": "123456789012" }, "dateCreated": "Jul 5, 2022 7:40:15 PM", "outputResources": { "amis": [] }, "accountId": "123456789012", "enhancedImageMetadataEnabled": true, "buildType": "SCHEDULED", "tags": { "internalId": "456c78b9-0e12-3f45-afb6-7e89b0f1a23b", "resourceArn": "arn:aws:imagebuilder:us-west-2:123456789012:image/my-example-image/1.0.0/7" } }