Criar um gatilho para um evento do CodeDeploy - AWS CodeDeploy

Criar um gatilho para um evento do CodeDeploy

É possível criar um gatilho que publica um tópico do Amazon Simple Notification Service (Amazon SNS) para um evento de implantação ou instância do AWS CodeDeploy. Dessa forma, quando esse evento ocorrer, todos os assinantes do tópico associado receberão notificações através do endpoint especificado no tópico, como uma mensagem SMS ou uma mensagem de e-mail. O Amazon SNS oferece vários métodos para assinar tópicos.

Antes de criar um gatilho, é necessário configurar o tópico do Amazon SNS para o gatilho apontar. Para obter informações, consulte Criar um tópico. Ao criar um tópico, é recomendável dar a ele um nome que identifique sua finalidade, em formatos como Topic-group-us-west-3-deploy-fail ou Topic-group-project-2-instance-stop.

Também é necessário conceder permissões do Amazon SNS a um perfil de serviço do CodeDeploy antes que possam ser enviadas notificações para seu gatilho. Para mais informações, consulte Conceder permissões do Amazon SNS a um perfil de serviço do CodeDeploy.

Depois de criar o tópico, você poderá adicionar assinantes. Para obter informações sobre como criar, gerenciar e assinar tópicos, consulte O que é o Amazon Simple Notification Service.

Criar um gatilho para enviar notificações de eventos do CodeDeploy (console)

É possível usar o console do CodeDeploy para criar gatilhos para um evento do CodeDeploy. No final do processo de configuração, uma mensagem de notificação de teste é enviada para garantir que as permissões e os detalhes do gatilho estejam configurados corretamente.

Para criar um gatilho para um evento do CodeDeploy
  1. No Console de gerenciamento da AWS, abra o console do AWS CodeDeploy.

  2. Faça login no Console de gerenciamento da AWS e abra o console do CodeDeploy em https://console.aws.amazon.com/codedeploy.

    nota

    Faça login com o mesmo usuário que você configurou em Conceitos básicos do CodeDeploy.

  3. No painel de navegação, expanda a opção Implantar e escolha Aplicativos.

  4. Na página Applications (Aplicativos), escolha o nome do aplicativo associado ao grupo de implantação no qual você deseja adicionar um gatilho.

  5. Na página Application details (Detalhes do aplicativo), escolha o grupo de implantação no qual você deseja adicionar um gatilho.

  6. Escolha Editar.

  7. Expanda Avançado - opcional.

  8. Na área Triggers (Gatilhos), selecione Create trigger (Criar gatilho).

  9. No painel Create deployment trigger (Criar gatilho de implantação), faça o seguinte:

    1. Em Trigger name (Nome de acionador), insira um nome para o acionador que facilite a identificação de sua finalidade. Recomendamos formatos como Trigger-group-us-west-3-deploy-fail ou Trigger-group-eu-central-instance-stop.

    2. Em Eventos, escolha um ou mais tipos de eventos que acionarão o envio de notificações do tópico do Amazon SNS.

    3. Em Tópicos do Amazon SNS, escolha o nome do tópico que você criou para enviar notificações para esse gatilho.

    4. Escolha Criar acionador. O CodeDeploy enviará uma notificação de teste para confirmar que você configurou corretamente o acesso entre o CodeDeploy e o tópico do Amazon SNS. Dependendo do tipo de endpoint selecionado para o tópico, e se você tiver assinado o tópico, será enviada uma confirmação em uma mensagem SMS ou de e-mail.

  10. Escolha Salvar alterações.

Criar um gatilho para enviar notificações de eventos do CodeDeploy (CLI)

Você pode usar a CLI para incluir gatilhos ao criar um grupo de implantação ou pode adicionar gatilhos a um grupo de implantação existente.

Para criar um gatilho para enviar notificações referentes um novo grupo de implantação

Crie um arquivo JSON para configurar o grupo de implantação e, em seguida, execute o comando create-deployment-group usando a opção --cli-input-json.

A maneira mais simples de criar o arquivo JSON é usar a opção --generate-cli-skeleton para obter uma cópia do formato JSON e, em seguida, fornecer os valores necessários em um editor de texto simples.

  1. Execute o seguinte comando e depois copie os resultados em um editor de texto simples.

    aws deploy create-deployment-group --generate-cli-skeleton
  2. Adicione o nome de um aplicativo do CodeDeploy existente à saída:

    { "applicationName": "TestApp-us-east-2", "deploymentGroupName": "", "deploymentConfigName": "", "ec2TagFilters": [ { "Key": "", "Value": "", "Type": "" } ], "onPremisesInstanceTagFilters": [ { "Key": "", "Value": "", "Type": "" } ], "autoScalingGroups": [ "" ], "serviceRoleArn": "", "triggerConfigurations": [ { "triggerName": "", "triggerTargetArn": "", "triggerEvents": [ "" ] } ] }
  3. Forneça valores para os parâmetros que você deseja configurar.

    Ao usar o comando create-deployment-group, você deve fornecer pelo menos valores para os seguintes parâmetros:

    • applicationName: o nome de um aplicativo já criado na sua conta.

    • deploymentGroupName: um nome para o grupo de implantação que você está criando.

    • serviceRoleArn: o ARN de um perfil de serviço existente configurada para o CodeDeploy na sua conta. Para mais informações, consulte Etapa 2: Criar um perfil de serviço para CodeDeploy.

    Na seção triggerConfigurations, forneça valores para os seguintes parâmetros:

    • triggerName: o nome que você deseja dar ao gatilho, para poder identificá-lo facilmente. Recomendamos formatos como Trigger-group-us-west-3-deploy-fail ou Trigger-group-eu-central-instance-stop.

    • triggerTargetArn: o ARN do tópico do Amazon SNS que você criou para associar ao seu gatilho, neste formato: arn:aws:sns:us-east-2:444455556666:NewTestTopic.

    • triggerEvents: o tipo de eventos para os quais você deseja disparar notificações. É possível especificar um ou mais tipos de eventos, separando vários dos seus nomes com vírgulas (por exemplo, "triggerEvents":["DeploymentSuccess","DeploymentFailure","InstanceFailure"]). Quando mais de um tipo de evento é adicionado, as notificações para todos esses tipos são enviadas ao tópico que você especificou, em vez de a um tópico diferente para cada um. É possível escolher entre os seguintes tipos de eventos:

      • DeploymentStart

      • DeploymentSuccess

      • DeploymentFailure

      • DeploymentStop

      • DeploymentRollback

      • DeploymentReady (aplicável apenas a instâncias de substituição em uma implantação azul/verde)

      • InstanceStart

      • InstanceSuccess

      • InstanceFailure

      • InstanceReady (aplicável apenas a instâncias de substituição em uma implantação azul/verde)

    O exemplo de configuração a seguir cria um grupo de implantação chamado dep-group-ghi-789-2 para um aplicativo chamado TestApp-us-east-2 e um gatilho que solicitará o envio de notificações sempre que uma implantação for iniciada, for bem-sucedida ou falhar:

    { "applicationName": "TestApp-us-east-2", "deploymentConfigName": "CodeDeployDefault.OneAtATime", "deploymentGroupName": "dep-group-ghi-789-2", "ec2TagFilters": [ { "Key": "Name", "Value": "Project-ABC", "Type": "KEY_AND_VALUE" } ], "serviceRoleArn": "arn:aws:iam::444455556666:role/AnyCompany-service-role", "triggerConfigurations": [ { "triggerName": "Trigger-group-us-east-2", "triggerTargetArn": "arn:aws:sns:us-east-2:444455556666:us-east-deployments", "triggerEvents": [ "DeploymentStart", "DeploymentSuccess", "DeploymentFailure" ] } ] }
  4. Salve suas atualizações como um arquivo JSON e, em seguida, chame esse arquivo usando a opção --cli-input-json ao executar o comando create-deployment-group:

    Importante

    Não se esqueça de incluir file:// antes do nome de arquivo. Ele é obrigatório nesse comando.

    aws deploy create-deployment-group --cli-input-json file://filename.json

    No final do processo de criação, você receberá uma mensagem de notificação de teste indicando que tanto as permissões quanto os detalhes do gatilho estão configurados corretamente.

Para criar um gatilho para enviar notificações referentes um grupo de implantação existente

Para usar a AWS CLI para adicionar gatilhos de eventos do CodeDeploy a um grupo de implantação existente, crie um arquivo JSON para atualizar o grupo de implantação e, em seguida, execute o comando update-deployment-group usando a opção --cli-input-json.

A maneira mais simples de criar o arquivo JSON é executar o comando get-deployment-group para obter uma cópia da configuração do grupo de implantação, no formato JSON, e depois atualizar os valores dos parâmetros em um editor de texto simples.

  1. Execute o seguinte comando e depois copie os resultados em um editor de texto simples.

    aws deploy get-deployment-group --application-name application --deployment-group-name deployment-group
  2. Exclua o seguinte da saída:

    • No início da saída, exclua { "deploymentGroupInfo":.

    • No final da saída, exclua }.

    • Exclua a linha que contém deploymentGroupId.

    • Exclua a linha que contém deploymentGroupName.

    O conteúdo do seu arquivo de texto agora deve ser semelhante ao seguinte:

    { "applicationName": "TestApp-us-east-2", "deploymentConfigName": "CodeDeployDefault.OneAtATime", "autoScalingGroups": [], "ec2TagFilters": [ { "Type": "KEY_AND_VALUE", "Value": "Project-ABC", "Key": "Name" } ], "triggerConfigurations": [], "serviceRoleArn": "arn:aws:iam::444455556666:role/AnyCompany-service-role", "onPremisesInstanceTagFilters": [] }
  3. Na seção triggerConfigurations, adicione dados para os parâmetros triggerEvents, triggerTargetArn e triggerName. Para obter informações sobre parâmetros de configuração de gatilho, consulte TriggerConfig.

    O conteúdo do seu arquivo de texto agora deve ser semelhante ao seguinte. Esse código solicitará que as notificações sejam enviadas sempre que uma implantação for iniciada, for bem-sucedida ou falhar.

    { "applicationName": "TestApp-us-east-2", "deploymentConfigName": "CodeDeployDefault.OneAtATime", "autoScalingGroups": [], "ec2TagFilters": [ { "Type": "KEY_AND_VALUE", "Value": "Project-ABC", "Key": "Name" } ], "triggerConfigurations": [ { "triggerEvents": [ "DeploymentStart", "DeploymentSuccess", "DeploymentFailure" ], "triggerTargetArn": "arn:aws:sns:us-east-2:444455556666:us-east-deployments", "triggerName": "Trigger-group-us-east-2" } ], "serviceRoleArn": "arn:aws:iam::444455556666:role/AnyCompany-service-role", "onPremisesInstanceTagFilters": [] }
  4. Salve suas atualizações como um arquivo JSON e execute o comando update-deployment-group usando a opção --cli-input-json. Certifique-se de incluir a opção --current-deployment-group-name e substitua o nome do seu arquivo JSON para nome do arquivo:

    Importante

    Não se esqueça de incluir file:// antes do nome de arquivo. Ele é obrigatório nesse comando.

    aws deploy update-deployment-group --current-deployment-group-name deployment-group-name --cli-input-json file://filename.json

    No final do processo de criação, você receberá uma mensagem de notificação de teste indicando que tanto as permissões quanto os detalhes do gatilho estão configurados corretamente.