

# Uso de funciones de anulación de parámetros con canalizaciones de CodePipeline
<a name="continuous-delivery-codepipeline-parameter-override-functions"></a>

En una fase de CodePipeline, puede especificar [anulaciones de parámetros](continuous-delivery-codepipeline-action-reference.md) para acciones de CloudFormation. Las anulaciones de parámetros le permiten especificar valores de parámetros de pantalla que anulan los valores de un archivo de configuración de plantilla. CloudFormation proporciona funciones para ayudarle a especificar valores dinámicos (valores que son desconocidos hasta que se ejecuta la canalización).

**Topics**
+ [`Fn::GetArtifactAtt`](#w2aac21c17b7)
+ [`Fn::GetParam`](#w2aac21c17b9)
+ [Véase también](#w2aac21c17c11)

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

La función `Fn::GetArtifactAtt` recupera el valor de un atributo de un artefacto de entrada, como el nombre del bucket de S3 donde se almacena el artefacto. Utilice esta función para especificar los atributos de un artefacto, como su nombre de archivo o el nombre del bucket de Amazon S3.

Cuando ejecuta una canalización, CodePipeline copia y escribe los archivos en el almacén de artefactos de la canalización (un bucket de S3). CodePipeline genera los nombres de archivo en el almacén de artefactos. Estos nombres de archivos son desconocidos antes de ejecutar la canalización.

Por ejemplo, en la canalización, podría tener una fase de origen en la que CodePipeline copia el código fuente de su función de AWS Lambda en el almacén de artefactos. En la siguiente fase, dispone de una plantilla de CloudFormation que crea la función de Lambda, pero CloudFormation requiere el nombre de archivo para crear la función. Debe utilizar la función `Fn::GetArtifactAtt` para transferir los nombres de archivo y bucket de S3 exactos.

### Sintaxis
<a name="w2aac21c17b7b9"></a>

Utilice la siguiente sintaxis para recuperar un valor de atributo de un artefacto.

```
{ "Fn::GetArtifactAtt" : [ "artifactName", "attributeName" ] }
```

`artifactName`  
El nombre del artefacto de entrada. Debe declarar este artefacto como entrada para la acción asociada.

`attributeName`  
El nombre del atributo de artefacto cuyo valor desea recuperar. Para más detalles acerca de cada atributo de artefacto, consulte la siguiente sección de atributos.

### Ejemplo
<a name="w2aac21c17b7c11"></a>

Las siguientes anulaciones de parámetros especifican los parámetros `BucketName` y `ObjectKey` al recuperar el nombre del bucket de S3 y el nombre de archivo del artefacto `LambdaFunctionSource`. Este ejemplo presupone que CodePipeline copió el código fuente de la función de Lambda y lo guardó como un artefacto, por ejemplo, como parte de una fase de origen.

```
{
  "BucketName" : { "Fn::GetArtifactAtt" : ["LambdaFunctionSource", "BucketName"]},
  "ObjectKey" : { "Fn::GetArtifactAtt" : ["LambdaFunctionSource", "ObjectKey"]}
}
```

### Atributos
<a name="w2aac21c17b7c13"></a>

Puede recuperar los siguientes atributos para un artefacto.

`BucketName`  
El nombre del bucket de S3 donde se almacena el artefacto.

`ObjectKey`  
El nombre del archivo `.zip` que contiene el artefacto que CodePipeline genera, como `1ABCyZZ.zip`.

`URL`  
La URL de Amazon Simple Storage Service (Amazon S3) del artefacto, como `https://s3.us-west-2.amazonaws.com/artifactstorebucket-yivczw8jma0c/test/TemplateSo/1ABCyZZ.zip`.

## `Fn::GetParam`
<a name="w2aac21c17b9"></a>

La función `Fn::GetParam` devuelve un valor de un par clave-valor en un archivo con formato JSON. El archivo JSON debe estar incluido en un artefacto.

Utilice esta función para recuperar los valores de salida desde una pila de CloudFormation y usarlos como entrada para otra acción. Por ejemplo, si especifica un nombre de archivo de salida para una acción de CloudFormation, CodePipeline guarda la salida en un archivo JSON y luego lo agrega al archivo `.zip` del artefacto de salida. Utilice la función `Fn::GetParam` para recuperar el valor de salida y úselo como entrada para otra acción.

### Sintaxis
<a name="w2aac21c17b9b7"></a>

Utilice la siguiente sintaxis para recuperar un valor de un par clave-valor.

```
{ "Fn::GetParam" : [ "artifactName", "JSONFileName", "keyName" ] }
```

`artifactName`  
El nombre del artefacto, que debe incluirse como artefacto de entrada para la acción asociada.

`JSONFileName`  
El nombre de un archivo JSON contenido en el artefacto.

`keyName`  
El nombre de la clave cuyo valor desea recuperar.

### Ejemplos
<a name="w2aac21c17b9b9"></a>

Los siguientes ejemplos muestran cómo utilizar la función `Fn::GetParam` en una anulación de parámetros.

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

La siguiente anulación de parámetros especifica el parámetro `WebSiteURL` recuperando el valor de la clave `URL` del archivo `stack-output.json` que está en el artefacto `WebStackOutput`.

```
{
  "WebSiteURL" : { "Fn::GetParam" : ["WebStackOutput", "stack-output.json", "URL"]}
}
```

#### CloudFormationFragmentos de plantillas de
<a name="w2aac21c17b9b9b7"></a>

En los siguientes fragmentos de plantilla de CloudFormation, provenientes de una canalización de CodePipeline, se muestra cómo transferir salidas de la pila. Estos fragmentos muestran dos etapas de definición de la canalización. La primera etapa crea una pila y guarda sus salidas en el archivo `TestOutput.json` en el artefacto `StackAOutput`. Estos valores se especifican con las propiedades `OutputFileName` y `OutputArtifacts`.

El nombre del artefacto de entrada de origen para las etapas es `TemplateSource`. El nombre de archivo de la plantilla de pila es `teststackA.yaml` y el nombre de archivo del archivo de configuración es `test-configuration.json`. En ambas etapas, estos valores se especifican con las propiedades `TemplateConfiguration` y `TemplatePath`, como se muestra a continuación:

```
TemplateConfiguration: TemplateSource::test-configuration.json
TemplatePath: TemplateSource::teststackA.yaml
```

**Example Etapa de creación de pila A**  

```
- 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'
```

En una fase siguiente, la pila B utiliza las salidas de la pila A. En la propiedad `ParameterOverrides`, el ejemplo utiliza la función `Fn::GetParam` para especificar el parámetro `StackBInputParam`. El valor resultante es el valor asociado a la clave `StackAOutputName`.

**Example Etapa de creación de pila B**  

```
- 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'
```

## Véase también
<a name="w2aac21c17c11"></a>

Los recursos relacionados siguientes pueden serle de ayuda cuando trabaje con estos parámetros.
+ Para obtener más información sobre los parámetros de acción de CloudFormation en CodePipeline, consulte la [referencia de configuración de acciones de CloudFormation](https://docs.aws.amazon.com/codepipeline/latest/userguide/action-reference-CloudFormation.html) en la *Guía del usuario de AWS CodePipeline*.
+ Para ver valores de plantilla de ejemplo según el proveedor de acción, como para el campo `Owner` o los campos `configuration`, consulte la [Action structure reference](https://docs.aws.amazon.com/codepipeline/latest/userguide/action-reference.html) (Referencia de estructura de acciones) en la *Guía del usuario de AWS CodePipeline*.
+ Para descargar las plantillas de la pila de canalización de ejemplo en formato YAML o JSON, consulte el [Tutorial: Creación de una canalización con CloudFormation](https://docs.aws.amazon.com/codepipeline/latest/userguide/tutorials-cloudformation.html) en la *Guía del usuario de AWS CodePipeline*.