我嘗試更新或刪除我的 AWS CloudFormation 堆疊,但收到如下錯誤: 「無法更新匯出 EXPORT_NAME,因為它正被 STACK_NAME 使用。」
簡短描述
當一個或多個堆疊從您要更新或刪除的堆疊匯入已匯出的輸出值時,就會收到此錯誤。當其他堆疊從您的堆疊匯入值時,您無法更新或刪除堆疊。
若要解決此錯誤,請完成下列步驟:
- 找到正在匯入已匯出輸出值的堆疊。
- 對於您識別為匯入已匯出值的堆疊,請更新堆疊範本,以實際輸出值取代匯入陳述式。
- 使用修改後的範本更新匯入堆疊。
解決方法
**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請確定您使用的是最新版本的 AWS CLI。
尋找正在匯入已匯出輸出值的堆疊
若要查看哪些堆疊引用匯出的輸出值,請使用 AWS CLI、AWS Tools for PowerShell 或 AWS CloudFormation 主控台。
AWS CLI:
1. 若要列出所有匯出的輸出值,請執行下列命令:
aws cloudformation list-exports
2. 若要列出正在匯入已匯出輸出值的所有堆疊,請執行下列命令:
aws cloudformation list-imports --export-name EXPORT_NAME
**注意:**將 EXPORT_NAME 取代為已匯出輸出值的名稱。
AWS Tools for PowerShell:
1. 若要列出所有匯出的輸出值,請執行下列命令:
Get-CFNExport
2. 若要列出正在匯入已匯出輸出值的所有堆疊,請執行下列命令:
Get-CFNImportList -ExportName EXPORT_NAME
**注意:**將 EXPORT_NAME 取代為已匯出輸出值的名稱。
AWS CloudFormation 主控台:
1. 開啟 AWS CloudFormation 主控台。
2. 從 CloudFormation 功能表中,選擇匯出。
3. 對於匯出名稱,從堆疊中選擇已匯出輸出值的名稱。
4. 對於匯入,選擇要從堆疊匯入已匯出輸出值的堆疊。
更新堆疊範本,以實際輸出值取代匯入陳述式
1. 在 AWS CloudFormation 範本中,將內在函數取代為引用堆疊已匯出輸出值的每個堆疊的匯入值。
例如,內在函數 Fn::ImportValue 和 !ImportValue 在下列 JSON 和 YAML 範本中都會取代為匯入的值 arn:aws:s3:::sample。
具有內在函數的 JSON 範本:
{
"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" }
}
}
}
}
具有匯入值的 JSON 範本:
{
"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"
}
}
}
}
具有內在函數的 YAML 範本:
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
具有匯入值的 YAML 範本:
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. 更新或刪除您的堆疊。
現在匯入已解除關聯,您可以更新或刪除匯出值的堆疊。
相關資訊
列出匯入已匯出輸出值的堆疊
list-exports
list-imports
Get-CFNExport Cmdlet
Get-CFNImportList Cmdlet