AWS CloudFormation referência de ação de implantação - AWS CodePipeline

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

AWS CloudFormation referência de ação de implantação

Executa uma operação em uma AWS CloudFormation pilha. Uma pilha é uma coleção de AWS recursos que você pode gerenciar como uma única unidade. Os recursos em uma pilha são definidos pelo modelo do AWS CloudFormation da pilha. Um conjunto de alterações cria uma comparação que pode ser visualizada sem alterar a pilha original. Para obter informações sobre os tipos de AWS CloudFormation ações que podem ser executadas em pilhas e conjuntos de alterações, consulte o ActionMode parâmetro.

Para criar uma mensagem de erro para uma AWS CloudFormation ação em que uma operação de pilha falhou, CodePipeline chame o. AWS CloudFormation DescribeStackEvents API Se uma IAM função de ação tiver permissão para API acessá-la, os detalhes sobre o primeiro recurso com falha serão incluídos na mensagem CodePipeline de erro. Caso contrário, se a política de função não tiver a permissão apropriada, CodePipeline ignorará o acesso ao API e, em vez disso, mostrará uma mensagem de erro genérica. Para fazer isso, a cloudformation:DescribeStackEvents permissão deve ser adicionada à função de serviço ou a outras IAM funções do pipeline.

Se você não quiser que os detalhes do recurso apareçam nas mensagens de erro do pipeline, você pode revogar essa permissão para a IAM função de ação removendo a cloudformation:DescribeStackEvents permissão.

Tipo de ação

  • Categoria: Deploy

  • Proprietário: AWS

  • Fornecedor: CloudFormation

  • Versão: 1

Parâmetros de configuração

ActionMode

Obrigatório: Sim

ActionModeé o nome da ação AWS CloudFormation executada em uma pilha ou conjunto de alterações. Os seguintes modos de ação estão disponíveis:

  • CHANGE_SET_EXECUTE executa um conjunto de alterações para a pilha de recursos com base em um conjunto de atualizações de recurso especificadas. Com essa ação, AWS CloudFormation começa a alterar a pilha.

  • CHANGE_SET_REPLACE cria um conjunto de alterações, se ainda não existir, com base no nome da pilha e no modelo enviado. Se o conjunto de alterações existir, ele será AWS CloudFormation excluído e, em seguida, criará um novo.

  • CREATE_UPDATE cria a pilha, caso não exista. Se a pilha existir, AWS CloudFormation atualiza a pilha. Use esta ação para atualizar pilhas existentes. Ao contrárioREPLACE_ON_FAILURE, se a pilha existir e estiver em um estado de falha, CodePipeline não excluirá nem substituirá a pilha.

  • DELETE_ONLY exclui uma pilha. Se você especificar uma pilha que não existe, a ação será concluída com êxito sem excluir uma pilha.

  • REPLACE_ON_FAILURE cria uma pilha, caso não exista. Se a pilha existir e estiver em um estado de falha, AWS CloudFormation excluirá a pilha e criará uma nova pilha. Se a pilha não estiver em um estado de falha, AWS CloudFormation atualize-a.

    A pilha está em no estado de falha quando qualquer um dos seguintes tipos de status estiver exibido no AWS CloudFormation:

    • ROLLBACK_FAILED

    • CREATE_FAILED

    • DELETE_FAILED

    • UPDATE_ROLLBACK_FAILED

    Use esta ação para substituir automaticamente as pilhas com falha sem recuperá-las nem solucionar o problema delas.

    Importante

    Recomendamos usar REPLACE_ON_FAILURE apenas para fins de teste, pois ele pode excluir sua pilha.

StackName

Obrigatório: Sim

StackName é o nome de uma pilha existente ou de uma pilha que você deseja criar.

Capacidades

Obrigatório: Condicional

O uso de Capabilities reconhece que o modelo pode ter os recursos para criar e atualizar alguns recursos por conta própria e que esses recursos são determinados com base nos tipos de recursos do modelo.

Essa propriedade é necessária se você tiver IAM recursos em seu modelo de pilha ou criar uma pilha diretamente de um modelo contendo macros. Para que a AWS CloudFormation ação opere com sucesso dessa forma, você deve reconhecer explicitamente que gostaria que ela funcionasse com um dos seguintes recursos:

  • CAPABILITY_IAM

  • CAPABILITY_NAMED_IAM

  • CAPABILITY_AUTO_EXPAND

Você pode especificar mais de um recurso usando uma vírgula (sem espaço) entre os recursos. O exemplo em Declaração de ação mostra uma entrada com as EXPAND propriedades CAPABILITY _ IAM e CAPABILITY AUTO _ _.

Para obter mais informações sobreCapabilities, consulte as propriedades abaixo UpdateStackna AWS CloudFormation APIReferência.

ChangeSetName

Obrigatório: Condicional

ChangeSetName é o nome de um conjunto de alterações existente ou um novo conjunto de alterações que você deseja criar para a pilha especificada.

Essa propriedade é necessária para os seguintes modos de ação: CHANGE _ SET _ REPLACE e CHANGE _ SET _EXECUTE. Para todos os outros modos de ação, essa propriedade será ignorado.

RoleArn

Obrigatório: Condicional

RoleArnÉ a função ARN de IAM serviço que AWS CloudFormation assume quando opera em recursos na pilha especificada. RoleArnnão é aplicado ao executar um conjunto de alterações. Se você não usar CodePipeline para criar o conjunto de alterações, verifique se o conjunto de alterações ou a pilha tem uma função associada.

nota

Esse perfil deve estar na mesma conta do perfil da ação em execução, conforme configurado no RoleArn da declaração de ação.

Essa propriedade é necessária para os seguintes modos de ação:

  • CREATE_UPDATE

  • REPLACE_EM_ FAILURE

  • DELETE_ONLY

  • CHANGE_SET_REPLACE

nota

AWS CloudFormation recebe uma assinatura S3 URL para o modelo; portanto, isso RoleArn não precisa de permissão para acessar o repositório de artefatos. No entanto, a ação RoleArn precisa de permissão para acessar o repositório de artefatos, a fim de gerar o assinadoURL.

TemplatePath

Obrigatório: Condicional

TemplatePathrepresenta o arquivo AWS CloudFormation de modelo. Inclua o arquivo em um artefato de entrada para essa ação. O nome do arquivo segue este formato:

Artifactname::TemplateFileName

Artifactnameé o nome do artefato de entrada conforme ele aparece em CodePipeline. Por exemplo, um estágio de origem com o nome de artefato de SourceArtifact e um nome de arquivo de template-export.json cria um nome TemplatePath, conforme mostrado neste exemplo:

"TemplatePath": "SourceArtifact::template-export.json"

Essa propriedade é necessária para os seguintes modos de ação:

  • CREATE_UPDATE

  • REPLACE_EM_ FAILURE

  • CHANGE_SET_REPLACE

Para todos os outros modos de ação, essa propriedade será ignorado.

nota

O arquivo AWS CloudFormation de modelo contendo o corpo do modelo tem um comprimento mínimo de 1 byte e um comprimento máximo de 1 MB. Para ações AWS CloudFormation de implantação em CodePipeline, o tamanho máximo do artefato de entrada é sempre 256 MB. Para mais informações, consulte Cotas em AWS CodePipeline e Limites do AWS CloudFormation.

OutputFileName

Obrigatório: Não

Use OutputFileName para especificar um nome de arquivo de saída, comoCreateStackOutput.json, que é CodePipeline adicionado ao artefato de saída do pipeline para essa ação. O JSON arquivo contém o conteúdo da Outputs seção da AWS CloudFormation pilha.

Se você não especificar um nome, CodePipeline não gera um arquivo ou artefato de saída.

ParameterOverrides

Obrigatório: Não

Os parâmetros são definidos no modelo de pilha e permitem que você forneça valores para eles no momento da criação ou atualização da pilha. Você pode usar um JSON objeto para definir valores de parâmetros em seu modelo. (Esses valores substituem os definidos no arquivo de configuração de modelo.) Para obter mais informações sobre o uso de substituições de parâmetros, consulte Propriedades de configuração (JSONobjeto).

Recomendamos usar o arquivo de configuração de modelo para a maioria dos valores de parâmetro. Use substituições de parâmetros somente para valores que não são conhecidos até que o pipeline esteja em execução. Para obter mais informações, consulte Usando funções de substituição de parâmetros com CodePipeline pipelines no Guia do AWS CloudFormation usuário.

nota

Todos os nomes de parâmetros devem estar presentes no modelo de pilha.

TemplateConfiguration

Obrigatório: Não

TemplateConfiguration é o arquivo de configuração do modelo. Inclua o arquivo em um artefato de entrada para essa ação. Ele pode conter valores de parâmetro de modelo e uma política de pilha. Para obter mais informações sobre o formato do arquivo de configuração de modelo, consulte Artefatos do AWS CloudFormation.

O nome do arquivo de configuração de modelo segue este formato:

Artifactname::TemplateConfigurationFileName

Artifactnameé o nome do artefato de entrada conforme ele aparece em CodePipeline. Por exemplo, um estágio de origem com o nome de artefato de SourceArtifact e um nome de arquivo de test-configuration.json cria um nome TemplateConfiguration, conforme mostrado neste exemplo:

"TemplateConfiguration": "SourceArtifact::test-configuration.json"

Input artifacts (Artefatos de entrada)

  • Número de artefatos: 0 to 10

  • Descrição: Como entrada, a AWS CloudFormation ação aceita opcionalmente artefatos para estas finalidades:

    • Fornecer o arquivo de modelo de pilha a ser executado. (Consulte o parâmetro TemplatePath.)

    • Fornecer o arquivo de configuração de modelo a ser usado. (Consulte o parâmetro TemplateConfiguration.) Para obter mais informações sobre o formato do arquivo de configuração de modelo, consulte Artefatos do AWS CloudFormation.

    • Fornecer o artefato para que uma função Lambda seja implantada como parte da pilha. AWS CloudFormation

Artefatos de saída

  • Número de artefatos: 0 to 1

  • Descrição: Se o OutputFileName parâmetro for especificado, há um artefato de saída produzido por essa ação que contém um JSON arquivo com o nome especificado. O JSON arquivo contém o conteúdo da seção Saídas da AWS CloudFormation pilha.

    Para obter mais informações sobre a seção de saídas que pode ser criada para a ação do AWS CloudFormation , consulte Saídas.

Variáveis de saída

Quando configurada, essa ação produz variáveis que podem ser referenciadas pela configuração de ação de uma ação downstream no pipeline. Configure uma ação com um namespace a fim de disponibilizar as variáveis para a configuração de ações downstream.

Para AWS CloudFormation ações, as variáveis são produzidas a partir de qualquer valor designado na Outputs seção de um modelo de pilha. Observe que os únicos modos de CloudFormation ação que geram saídas são aqueles que resultam na criação ou atualização de uma pilha, como criação de pilha, atualizações de pilha e execução de conjuntos de alterações. Os modos de ação correspondentes que geram variáveis são:

  • CHANGE_SET_EXECUTE

  • CHANGE_SET_REPLACE

  • CREATE_UPDATE

  • REPLACE_ON_FAILURE

Para obter mais informações, consulte Referência de variáveis. Para ver um tutorial que mostra como criar um pipeline com uma ação de CloudFormation implantação em um pipeline que usa variáveis CloudFormation de saída, consulteTutorial: criar um pipeline que usa variáveis das ações de AWS CloudFormation implantação.

Declaração de ação

YAML
Name: ExecuteChangeSet ActionTypeId: Category: Deploy Owner: AWS Provider: CloudFormation Version: '1' RunOrder: 2 Configuration: ActionMode: CHANGE_SET_EXECUTE Capabilities: CAPABILITY_NAMED_IAM,CAPABILITY_AUTO_EXPAND ChangeSetName: pipeline-changeset ParameterOverrides: '{"ProjectId": "my-project","CodeDeployRole": "CodeDeploy_Role_ARN"}' RoleArn: CloudFormation_Role_ARN StackName: my-project--lambda TemplateConfiguration: 'my-project--BuildArtifact::template-configuration.json' TemplatePath: 'my-project--BuildArtifact::template-export.yml' OutputArtifacts: [] InputArtifacts: - Name: my-project-BuildArtifact
JSON
{ "Name": "ExecuteChangeSet", "ActionTypeId": { "Category": "Deploy", "Owner": "AWS", "Provider": "CloudFormation", "Version": "1" }, "RunOrder": 2, "Configuration": { "ActionMode": "CHANGE_SET_EXECUTE", "Capabilities": "CAPABILITY_NAMED_IAM,CAPABILITY_AUTO_EXPAND", "ChangeSetName": "pipeline-changeset", "ParameterOverrides": "{\"ProjectId\": \"my-project\",\"CodeDeployRole\": \"CodeDeploy_Role_ARN\"}", "RoleArn": "CloudFormation_Role_ARN", "StackName": "my-project--lambda", "TemplateConfiguration": "my-project--BuildArtifact::template-configuration.json", "TemplatePath": "my-project--BuildArtifact::template-export.yml" }, "OutputArtifacts": [], "InputArtifacts": [ { "Name": "my-project-BuildArtifact" } ] },

Os recursos relacionados a seguir podem ajudar você à medida que trabalha com esta ação.