Integrazione di Amazon SNS in Image Builder - EC2 Image Builder

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Integrazione di Amazon SNS in Image Builder

Amazon Simple Notification Service (Amazon SNS) è un servizio gestito che fornisce il recapito asincrono dei messaggi dagli editori agli abbonati (noti anche come produttori e consumatori).

Puoi specificare un argomento SNS nella configurazione dell'infrastruttura. Quando create un'immagine o eseguite una pipeline, Image Builder può pubblicare messaggi dettagliati sullo stato dell'immagine su questo argomento. Quando lo stato dell'immagine raggiunge uno dei seguenti stati, Image Builder pubblica un messaggio:

  • AVAILABLE

  • FAILED

Per un messaggio SNS di esempio da Image Builder, vedere. Formato del messaggio SNS Se desideri creare un nuovo argomento SNS, consulta la sezione Guida introduttiva ad Amazon SNS nella Amazon Simple Notification Service Developer Guide.

Argomenti SNS crittografati

Se l'argomento SNS è crittografato, è necessario concedere l'autorizzazione nella AWS KMS key politica per il ruolo del servizio Image Builder per eseguire le seguenti azioni:

  • kms:Decrypt

  • kms:GenerateDataKey

Nota

Se l'argomento SNS è crittografato, la chiave che crittografa questo argomento deve risiedere nell'account in cui viene eseguito il servizio Image Builder. Image Builder non può inviare notifiche ad argomenti SNS crittografati con chiavi di altri account.

Esempio di aggiunta della policy chiave KMS

L'esempio seguente mostra la sezione aggiuntiva che aggiungi alla politica delle chiavi KMS. Usa Amazon Resource Name (ARN) per il ruolo collegato al servizio IAM che Image Builder ha creato con il tuo account quando hai creato per la prima volta un'immagine Image Builder. Per ulteriori informazioni sul ruolo collegato al servizio Image Builder, vedere. Usa i ruoli collegati ai servizi IAM per 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": "*" }] }

È possibile utilizzare uno dei seguenti metodi per ottenere l'ARN.

AWS Management Console

Per ottenere l'ARN per il ruolo collegato al servizio che Image Builder ha creato con il tuo account da, procedi nel seguente modo: AWS Management Console

  1. Aprire la console IAM all'indirizzo https://console.aws.amazon.com/iam/.

  2. Nel pannello di navigazione a sinistra, seleziona Ruoli.

  3. CercaImageBuilder, e scegli il seguente nome del ruolo tra i risultati:. AWSServiceRoleForImageBuilder Viene visualizzata la pagina dei dettagli del ruolo.

  4. Per copiare l'ARN negli appunti, scegli l'icona accanto al nome ARN.

AWS CLI

Per ottenere l'ARN per il ruolo collegato al servizio che Image Builder ha creato con il tuo account da AWS CLI, usa il comando IAM get-role, come segue.

aws iam get-role --role-name AWSServiceRoleForImageBuilder

Esempio di output parziale:

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

Formato del messaggio SNS

Dopo che Image Builder ha pubblicato un messaggio sul tuo argomento Amazon SNS, gli altri servizi che sottoscrivono l'argomento possono filtrare in base al formato del messaggio e determinare se soddisfa i criteri per ulteriori azioni. Ad esempio, un messaggio di successo potrebbe avviare un'attività per aggiornare un archivio di AWS Systems Manager parametri o avviare un flusso di lavoro di test di conformità esterno per l'AMI di output.

L'esempio seguente mostra il payload JSON per un messaggio tipico che Image Builder pubblica quando una build di pipeline viene completata e crea un'immagine Linux.

{ "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" } }

L'esempio seguente mostra il payload JSON per un messaggio tipico pubblicato da Image Builder per un errore di compilazione della pipeline per un'immagine Linux.

{ "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" } }