Criar uma regra do EventBridge para uma origem do Amazon S3 (modelo do CloudFormation)
Para usar o CloudFormation para criar uma regra, atualize seu modelo conforme mostrado aqui.
Para criar uma regra do EventBridge com o Amazon S3 como origem do evento e o CodePipeline como destino e aplicar a política de permissões
-
No modelo, em
Resources, use o recursoAWS::IAM::Roledo CloudFormation para configurar a função do IAM que habilita o evento a iniciar seu pipeline. Essa entrada cria uma função que utiliza duas políticas:-
A primeira política permite que a função seja assumida.
-
A segunda política fornece permissões para iniciar o pipeline.
Por que estou fazendo essa alteração? A adição do recurso
AWS::IAM::Rolepermite que o CloudFormation crie permissões para o EventBridge. Esse recurso é adicionado à sua pilha do CloudFormation. -
-
Use o recurso
AWS::Events::Ruledo CloudFormation para adicionar uma regra do EventBridge. Esse padrão de evento cria um evento que monitoraCopyObject,PutObjecteCompleteMultipartUploadno bucket de origem do Amazon S3. Além disso, inclua um destino de seu pipeline. QuandoCopyObject,PutObjectouCompleteMultipartUploadocorrer, essa regra invocaStartPipelineExecutionem seu pipeline de destino.Por que estou fazendo essa alteração? A adição do recurso
AWS::Events::Rulepermite que o CloudFormation crie o evento. Esse recurso é adicionado à sua pilha do CloudFormation. -
Adicione este trecho ao primeiro modelo para permitir a funcionalidade de pilha cruzada:
-
(Opcional) Para configurar um transformador de entrada com substituições de origem para um ID de imagem específico, use o trecho YAML a seguir. O exemplo a seguir configura uma substituição na qual:
-
O
actionName,Sourceneste exemplo, é o valor dinâmico, definido na criação do pipeline, não derivado do evento de origem. -
O
revisionType,S3_OBJECT_VERSION_IDneste exemplo, é o valor dinâmico, definido na criação do pipeline, não derivado do evento de origem. -
O
revisionValue, <RevisionValue> neste exemplo, deriva da variável do evento de origem.
--- Rule: my-rule Targets: - Id: MyTargetId Arn:pipeline-ARNInputTransformer: InputPathsMap: revisionValue: "$.detail.object.version-id" InputTemplate: sourceRevisions: actionName:SourcerevisionType:S3_OBJECT_VERSION_IDrevisionValue: '<revisionValue>' -
-
Salve o modelo atualizado no computador local e abra o console do CloudFormation.
-
Selecione sua pilha e clique em Create Change Set for Current Stack (Criar conjunto de alterações para a pilha atual).
-
Carregue o modelo atualizado e, em seguida, visualize as alterações listadas no CloudFormation. Essas são as alterações que serão feitas na pilha. Seus novos recursos devem ser exibidos na lista.
-
Clique em Executar.
Editar o parâmetro PollForSourceChanges do pipeline
Importante
Ao criar um pipeline com esse método, o parâmetro PollForSourceChanges é padronizado como verdadeiro se não for explicitamente definido como falso. Ao adicionar a detecção de alterações baseada em eventos, é necessário adicionar o parâmetro a sua saída e defini-lo como falso para desativar a sondagem. Caso contrário, o pipeline inicia duas vezes para uma única alteração de origem. Para obter detalhes, consulte Configurações válidas para o parâmetro PollForSourceChanges.
-
No modelo, altere
PollForSourceChangesparafalse. Se você não incluirPollForSourceChangesna sua definição de pipeline, adicione-o e configure parafalse.Por que estou fazendo essa alteração? A alteração de
PollForSourceChangesparafalsedesativa as verificações periódicas para que você possa utilizar apenas a detecção de alterações baseada em eventos.
Para criar um segundo modelo para os recursos do CloudTrail do pipeline do Amazon S3
-
Em um modelo separado, em
Resources, use os recursosAWS::S3::Bucket,AWS::S3::BucketPolicyeAWS::CloudTrail::Traildo CloudFormation para fornecer uma definição de bucket simples e uma trilha para o CloudTrail.Por que estou fazendo essa alteração? Considerando o limite atual de cinco trilhas por conta, a trilha do CloudTrail precisa ser criada e gerenciada separadamente. (Consulte Limites no AWS CloudTrail.) No entanto, você pode incluir vários buckets do Amazon S3 em uma única trilha, para que possa criar a trilha uma vez e adicionar buckets do Amazon S3 para outros pipelines, conforme for necessário. Cole o seguinte no arquivo do segundo modelo de exemplo.