En una fase de CodePipeline, puede especificar anulaciones de parámetros para acciones de AWS 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. AWS CloudFormation proporciona funciones para ayudarle a especificar valores dinámicos (valores que son desconocidos hasta que se ejecuta la canalización).
Fn::GetArtifactAtt
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 AWS CloudFormation que crea la función de Lambda, pero AWS 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
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
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
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, como1ABCyZZ.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
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 AWS CloudFormation y usarlos como entrada para otra acción. Por ejemplo, si especifica un nombre de archivo de salida para una acción de AWS 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
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
Los siguientes ejemplos muestran cómo utilizar la función Fn::GetParam
en una anulación de parámetros.
Sintaxis
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"]}
}
Fragmentos de plantillas de AWS CloudFormation
En los siguientes fragmentos de plantilla de AWS 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
ejemplo 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
.
ejemplo 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
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 AWS CloudFormation 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 camposconfiguration
, consulte la Action structure reference (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 AWS CloudFormation en la Guía del usuario de AWS CodePipeline.