cfn-init
Descripción
El script auxiliar cfn-init lee metadatos de plantilla de la clave AWS::CloudFormation::Init
y actúa de forma acorde para:
-
Obtener y analizar metadatos de CloudFormation
-
Instalar paquetes
-
Escribir archivos en el disco
-
Habilitar/deshabilitar e iniciar/detener servicios
nota
Si utiliza cfn-init para actualizar un archivo existente, crea una copia de seguridad del archivo original en el mismo directorio con una extensión .bak. Por ejemplo, si actualiza /
, la acción produce dos archivos: path
/to
/file_name
/
incluye el contenido original del archivo y path
/to
/file_name
.bak/
incluye los contenidos actualizados.path
/to
/file_name
Para obtener más información acerca los metadatos de la plantilla, consulte AWS::CloudFormation::Init.
nota
cfn-signal no requiere credenciales, por lo que no tiene que usar las opciones --access-key
, --secret-key
, --role
o --credential-file
. Sin embargo, si no se especifican credenciales, CloudFormation comprueba la pertenencia a la pila y limita el ámbito de la llamada a la pila al que pertenece a la instancia.
Sintaxis
cfn-init --stack|-s
stack.name.or.id
\ --resource|-rlogical.resource.id
\ --regionregion
\ --access-keyaccess.key
\ --secret-keysecret.key
\ --rolerolename
\ --credential-file|-fcredential.file
\ --configsets|-cconfig.sets
\ --url|-uservice.url
\ --http-proxyHTTP.proxy
\ --https-proxyHTTPS.proxy
\ --verbose|-v
Opciones
Nombre | Descripción | Obligatorio |
---|---|---|
|
Nombre o ID de la pila. Tipo: cadena Valor predeterminado: Ninguno Ejemplo: |
Sí |
|
El ID de recurso lógico del recurso que contiene los metadatos. Tipo: cadena Ejemplo: |
Sí |
|
El punto de enlace regional de CloudFormation que se debe utilizar. Tipo: cadena Valor predeterminado: Ejemplo: |
No |
|
Clave de acceso de AWS para una cuenta con permiso para llamar a Tipo: cadena |
No |
|
Clave de acceso secreta de AWS que corresponde a la clave de acceso de AWS especificada. Tipo: cadena |
No |
|
El nombre de un rol de IAM asociado a la instancia. Tipo: cadena Condición: El parámetro del archivo de credenciales sustituye a este parámetro. |
No |
|
Un archivo que contiene una clave de acceso secreta y una clave de acceso. El parámetro del archivo de credenciales sustituye a los parámetros --role, --access-key y --secret-key. Tipo: cadena |
No |
|
Una lista separada por comas de configsets para ejecutar (en orden). Tipo: cadena Valor predeterminado: |
No |
|
El punto de enlace de CloudFormation que se debe usar. Tipo: cadena |
No |
|
Un proxy HTTP (no SSL). Use el siguiente formato Tipo: cadena |
No |
|
Un proxy HTTPS. Use el siguiente formato Tipo: cadena |
No |
|
Resultados detallados. Esto es útil para la depuración de casos en los que se produce un error en la inicialización de cfn-init. notaPara depurar eventos de inicialización, debería activar DisableRollback. Para ello, puede usar la consola de CloudFormation, seleccionar Show Advanced Options (Mostrar las opciones avanzadas) y, a continuación, establecer Rollback on failure (Restauración en caso de error) como No. Después, puede usar SSH en la consola y leer los registros en /var/log/cfn-init.log. |
No |
|
Muestra un mensaje de ayuda y sale. |
No |
Ejemplo
Ejemplo de Amazon Linux
En los siguientes fragmentos, se muestra la propiedad UserData
de una instancia de EC2, que ejecuta el configset InstallAndRun
asociado al recurso WebServerInstance
.
Para ver un ejemplo concreto de la plantilla, consulte Implementación de aplicaciones en Amazon EC2.
Para incluir la última versión, agregue yum install -y aws-cfn-bootstrap
a UserData
.
JSON
Propiedad UserData
que usa la función Fn::Join
intrínseca.
{ "UserData": { "Fn::Base64": { "Fn::Join": [ "", [ "#!/bin/bash -xe\n", "", "yum install -y aws-cfn-bootstrap", "/opt/aws/bin/cfn-init -v ", " --stack ", { "Ref": "AWS::StackName" }, " --resource WebServerInstance ", " --configsets InstallAndRun ", " --region ", { "Ref": "AWS::Region" }, "\n" ] ] } } }
YAML
Propiedad UserData
que usa la función Fn::Join
intrínseca.
UserData: !Base64 'Fn::Join': - '' - - | #!/bin/bash -xe - '' - yum install -y aws-cfn-bootstrap - '/opt/aws/bin/cfn-init -v ' - ' --stack ' - !Ref 'AWS::StackName' - ' --resource WebServerInstance ' - ' --configsets InstallAndRun ' - ' --region ' - !Ref 'AWS::Region' - |+
JSON
Propiedad UserData
que usa la función Fn::Sub
intrínseca.
{ "UserData": { "Fn::Base64": { "Fn::Sub": [ "#!/bin/bash -x\n# Install the files and packages from the metadata\n/opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource MyInstance --region ${AWS::Region}\n\n# Signal the status from cfn-init\n/opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackName} --resource MyInstance --region ${AWS::Region}\n", {} ] } } }
YAML
Propiedad UserData
que usa la función Fn::Sub
intrínseca.
UserData: !Base64 'Fn::Sub': - > #!/bin/bash -x # Install the files and packages from the metadata /opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource MyInstance --region ${AWS::Region} # Signal the status from cfn-init /opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackName} --resource MyInstance --region ${AWS::Region} - {}