Em um estágio do CodePipeline, você pode especificar substituições de parâmetros para ações do AWS CloudFormation. As substituições de parâmetros permitem que você especifique valores de parâmetro do modelo que substituem os valores em um arquivo de configuração do modelo. O AWS CloudFormation fornece funções para ajudá-lo a especificar valores dinâmicos (valores que são desconhecidos até o pipeline ser executado).
Fn::GetArtifactAtt
A função Fn::GetArtifactAtt
recupera o valor de um atributo de um artefato de entrada, como o nome do bucket S3 no qual o artefato está armazenado. Use esta função para especificar atributos de um artefato, como o nome de arquivo ou nome do bucket do Amazon S3.
Quando você executa um pipeline, o CodePipeline copia e grava arquivos no armazenamento de artefatos do pipeline (um bucket do S3). O CodePipeline gera os nomes de arquivos no armazenamento de artefatos. Esses nomes de arquivos são desconhecidas antes de o pipeline ser executado.
Por exemplo, no seu pipeline, é possível ter um estágio de origem no qual o copia o código-fonte da função do AWS Lambda no armazenamento de artefatos. No próximo estágio, há um modelo do AWS CloudFormation que cria a função do Lambda, mas o AWS CloudFormation requer o nome de arquivo para criar a função. Use a função Fn::GetArtifactAtt
para passar o bucket do S3 e os nomes de arquivos exatos.
Sintaxe
Use a sintaxe a seguir para recuperar um valor de atributo de um artefato.
{ "Fn::GetArtifactAtt" : [ "artifactName
", "attributeName
" ] }
artifactName
-
O nome do artefato de entrada. Declare este artefato como entrada para a ação associada.
attributeName
-
O nome do atributo do artefato com o valor você deseja recuperar. Para obter detalhes sobre cada atributo de artefato, consulte a seção Atributos a seguir.
Exemplo
As seguintes substituições de parâmetro especificam os parâmetros BucketName
e ObjectKey
, recuperando o nome do bucket do S3 e o nome de arquivo do artefato LambdaFunctionSource
. Este exemplo pressupõe que o CodePipeline copiou o código-fonte da função Lambda e o salvou como um artefato, por exemplo, como parte de um estágio de origem.
{
"BucketName" : { "Fn::GetArtifactAtt" : ["LambdaFunctionSource", "BucketName"]},
"ObjectKey" : { "Fn::GetArtifactAtt" : ["LambdaFunctionSource", "ObjectKey"]}
}
Atributos
É possível recuperar os seguintes atributos para um artefato.
BucketName
-
O nome do bucket do S3 no qual o artefato está armazenado.
ObjectKey
-
O nome do arquivo
.zip
que contém o artefato que é gerado pelo CodePipeline, como1ABCyZZ.zip
. URL
-
O URL do Amazon Simple Storage Service (Amazon S3) do artefato, como
https://s3.us-west-2.amazonaws.com/artifactstorebucket-yivczw8jma0c/test/TemplateSo/1ABCyZZ.zip
.
Fn::GetParam
A função Fn::GetParam
retorna um valor de um par chave/valor em um arquivo em um formato JSON. O arquivo JSON deve estar incluído em um artefato.
Use esta função para recuperar os valores de saída de uma pilha do AWS CloudFormation e usá-los como entrada para outra ação. Por exemplo, se você especificar um nome de arquivo de saída para uma ação do AWS CloudFormation, o CodePipeline salvará essa saída em um arquivo JSON e a adicionará ao arquivo .zip
do artefato de saída. Use a função Fn::GetParam
para recuperar o valor de saída e usá-lo como entrada para outra ação.
Sintaxe
Use a sintaxe a seguir para recuperar um valor a partir de um par chave/valor.
{ "Fn::GetParam" : [ "artifactName
", "JSONFileName
", "keyName
" ] }
artifactName
-
O nome do artefato, que deve ser incluído como um artefato de entrada para a ação associada.
JSONFileName
-
O nome de um arquivo JSON que está contido no artefato.
keyName
-
O nome da chave com o valor você deseja recuperar.
Exemplos
Os exemplos a seguir demonstram como usar a função Fn::GetParam
em uma substituição de parâmetro.
Sintaxe
A substituição de parâmetro a seguir especifica o parâmetro WebSiteURL
recuperando o valor da chave URL
do arquivo stack-output.json
que está no WebStackOutput
artefato.
{
"WebSiteURL" : { "Fn::GetParam" : ["WebStackOutput", "stack-output.json", "URL"]}
}
Trechos de modelo do AWS CloudFormation
Os trechos de modelo do AWS CloudFormation a seguir, em um pipeline do CodePipeline, demonstram como passar saídas da pilha. Esses trechos mostram dois estágios de definição do pipeline. O primeiro estágio cria uma pilha e salva as saídas no arquivo TestOutput.json
no artefato StackAOutput
. Esses valores são especificados pelas propriedades OutputFileName
e OutputArtifacts
.
o nome do artefato de entrada de origem é TemplateSource
. O nome do modelo de pilha é teststackA.yaml
, e o nome do arquivo de configuração é test-configuration.json
. Em ambos os estágios, esses valores são especificados para as propriedades TemplateConfiguration
e TemplatePath
, conforme mostrado:
TemplateConfiguration: TemplateSource::test-configuration.json
TemplatePath: TemplateSource::teststackA.yaml
exemplo Criar estágio A da pilha
- Name: CreateTestStackA
Actions:
- Name: CloudFormationCreate
ActionTypeId:
Category: Deploy
Owner: AWS
Provider: CloudFormation
Version: '1'
Configuration:
ActionMode: CREATE_UPDATE
Capabilities: CAPABILITY_IAM
OutputFileName: TestOutput.json
RoleArn: !GetAtt [CFNRole, Arn]
StackName: StackA
TemplateConfiguration: TemplateSource::test-configuration.json
TemplatePath: TemplateSource::teststackA.yaml
InputArtifacts:
- Name: TemplateSource
OutputArtifacts:
- Name: StackAOutput
RunOrder: '1'
Em um estágio posterior, a pilha B usa as saídas da pilha A. Na propriedade ParameterOverrides
, o exemplo usa a função Fn::GetParam
para especificar o parâmetro StackBInputParam
. O valor resultante é o valor associado à chave StackAOutputName
.
exemplo Criar estágio B da pilha
- Name: CreateTestStackB
Actions:
- Name: CloudFormationCreate
ActionTypeId:
Category: Deploy
Owner: AWS
Provider: CloudFormation
Version: '1'
Configuration:
ActionMode: CREATE_UPDATE
Capabilities: CAPABILITY_IAM
RoleArn: !GetAtt [CFNRole, Arn]
StackName: StackB
TemplateConfiguration: TemplateSource::test-configuration.json
TemplatePath: TemplateSource::teststackB.yaml
ParameterOverrides: |
{
"StackBInputParam" : { "Fn::GetParam" : ["StackAOutput", "TestOutput.json", "StackAOutputName"]}
}
InputArtifacts:
- Name: TemplateSource
- Name: StackAOutput
RunOrder: '1'
Consulte também
Os recursos relacionados a seguir podem ajudar você à medida que trabalha com esses parâmetros.
-
Para obter mais informações sobre os parâmetros de ação do CloudFormation no CodePipeline, consulte AWS CloudFormation deploy action configuration reference no AWS CodePipeline User Guide.
-
Para obter exemplos de valores do modelo por provedor de ação, como para o campo
Owner
ou para os camposconfiguration
, consulte a Referência de estruturas de ações no Guia do usuário do AWS CodePipeline. -
Para baixar exemplos de modelos de pilha de pipeline no formato YAML ou JSON, consulte Tutorial: Create a pipeline with AWS CloudFormation no AWS CodePipeline User Guide.