

# Usar funções de substituição de parâmetros com pipelines CodePipeline
<a name="continuous-delivery-codepipeline-parameter-override-functions"></a>

Em um estágio do CodePipeline, você pode especificar [substituições de parâmetros](continuous-delivery-codepipeline-action-reference.md) para ações do 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 CloudFormation fornece funções para ajudá-lo a especificar valores dinâmicos (valores que são desconhecidos até o pipeline ser executado).

**Topics**
+ [`Fn::GetArtifactAtt`](#w2aac21c17b7)
+ [`Fn::GetParam`](#w2aac21c17b9)
+ [Consulte também](#w2aac21c17c11)

## `Fn::GetArtifactAtt`
<a name="w2aac21c17b7"></a>

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 CloudFormation que cria a função do Lambda, mas o 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
<a name="w2aac21c17b7b9"></a>

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
<a name="w2aac21c17b7c11"></a>

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
<a name="w2aac21c17b7c13"></a>

É 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, como `1ABCyZZ.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 name="w2aac21c17b9"></a>

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 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 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
<a name="w2aac21c17b9b7"></a>

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
<a name="w2aac21c17b9b9"></a>

Os exemplos a seguir demonstram como usar a função `Fn::GetParam` em uma substituição de parâmetro.

#### Sintaxe
<a name="w2aac21c17b9b9b5"></a>

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 CloudFormation
<a name="w2aac21c17b9b9b7"></a>

Os trechos de modelo do 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
```

**Example 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`.

**Example 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
<a name="w2aac21c17c11"></a>

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 [CloudFormation deploy action configuration reference](https://docs.aws.amazon.com/codepipeline/latest/userguide/action-reference-CloudFormation.html) 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 campos `configuration`, consulte a [Referência de estruturas de ações](https://docs.aws.amazon.com/codepipeline/latest/userguide/action-reference.html) 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 CloudFormation](https://docs.aws.amazon.com/codepipeline/latest/userguide/tutorials-cloudformation.html) no *AWS CodePipeline User Guide*.