He intentado actualizar o eliminar mi pila de AWS CloudFormation, pero he recibido un error similar al siguiente: «La exportación EXPORT_NAME no se puede actualizar porque STACK_NAME la está utilizando».
Breve descripción
Aparece este error cuando una o más pilas importan un valor de salida exportado de la pila que desea actualizar o eliminar. No puede actualizar ni eliminar su pila cuando otras pilas importan valores de su pila.
Para resolver este error, siga estos pasos:
- Busque las pilas que importan el valor de salida exportado.
- Para las pilas que identifique como importadoras del valor exportado, actualice la plantilla de pila para reemplazar las sentencias de importación por el valor de salida real.
- Actualice la pila de importación con la plantilla modificada.
Resolución
Nota: Si recibe errores al ejecutar los comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), asegúrese de utilizar la versión más reciente de AWS CLI.
Busque las pilas que importan el valor de salida exportado
Para ver qué pilas hacen referencia al valor de salida exportado, utilice la AWS CLI, AWS Tools para PowerShell o la consola de AWS CloudFormation.
AWS CLI:
1. Para mostrar todos los valores de salida exportados, ejecute el siguiente comando:
aws cloudformation list-exports
2. Para ver una lista de todas las pilas que importan un valor de salida exportado, ejecute el siguiente comando:
aws cloudformation list-imports --export-name EXPORT_NAME
Nota: Sustituya EXPORT_NAME por el nombre del valor de salida exportado.
AWS Tools para PowerShell:
1. Para mostrar todos los valores de salida exportados, ejecute el siguiente comando:
Get-CFNExport
2. Para ver una lista de todas las pilas que importan un valor de salida exportado, ejecute el siguiente comando:
Get-CFNImportList -ExportName EXPORT_NAME
Nota: Sustituya EXPORT_NAME por el nombre del valor de salida exportado.
Consola de AWS CloudFormation:
1. Abra la consola de AWS CloudFormation.
2. En el menú de CloudFormation, seleccione Exportaciones.
3. En Nombre de exportación, seleccione el nombre del valor de salida exportado de su pila.
4. En Importaciones, elija las pilas que importan el valor de salida exportado de su pila.
Actualice la plantilla de pila para reemplazar las sentencias de importación por el valor de salida real
1. En su plantilla de AWS CloudFormation, sustituya las funciones intrínsecas por los valores importados para cada pila que haga referencia al valor de salida exportado de su pila.
Por ejemplo, las funciones intrínsecas Fn::ImportValue y !ImportValue se sustituyen por el valor importado arn:aws:s3:::sample en las siguientes plantillas de JSON y YAML.
Plantilla JSON con función intrínseca:
{
"Parameters": {
"parameterName": {
"Type": "String"
}
},
"Resources": {
"testParameter": {
"Type": "AWS::SSM::Parameter",
"Properties": {
"Description": "Test SSM Parameter",
"Name": { "Ref": "parameterName" },
"Type": "String",
"Value": { "Fn::ImportValue": "sample-s3-bucket:Bucket-arn" }
}
}
}
}
Plantilla JSON con valor importado:
{
"Parameters": {
"parameterName": {
"Type": "String"
}
},
"Resources": {
"testParameter": {
"Type": "AWS::SSM::Parameter",
"Properties": {
"Description": "Test SSM Parameter",
"Name": { "Ref": "parameterName" },
"Type": "String",
"Value": "arn:aws:s3:::sample"
}
}
}
}
Plantilla YAML con función intrínseca:
Parameters:
parameterName:
Type: String
Resources:
testParameter:
Type: AWS::SSM::Parameter
Properties:
Description: Test SSM Parameter
Name: !Ref parameterName
Type: String
Value: !ImportValue sample-s3-bucket:Bucket-arn
Plantilla YAML con valor importado:
Parameters:
parameterName:
Type: String
Resources:
testParameter:
Type: AWS::SSM::Parameter
Properties:
Description: Test SSM Parameter
Name: !Ref parameterName
Type: String
Value: arn:aws:s3:::sample
2. Actualice o elimine su pila.
Ahora que las importaciones están desvinculadas, puede actualizar o eliminar la pila que exportó los valores.
Información relacionada
Enumerar las pilas que importan un valor de salida exportado
list-exports
list-imports
Get-CFNExport Cmdlet
Get-CFNImportList Cmdlet