如何解決 AWS CloudFormation 中的「無法更新匯出 EXPORT_NAME,因為它正被 STACK_NAME 使用」錯誤?

2 分的閱讀內容
0

我嘗試更新或刪除我的 AWS CloudFormation 堆疊,但收到如下錯誤: 「無法更新匯出 EXPORT_NAME,因為它正被 STACK_NAME 使用。」

簡短描述

當一個或多個堆疊從您要更新或刪除的堆疊匯入已匯出的輸出值時,就會收到此錯誤。當其他堆疊從您的堆疊匯入值時,您無法更新或刪除堆疊。

若要解決此錯誤,請完成下列步驟:

  1. 找到正在匯入已匯出輸出值的堆疊。
  2. 對於您識別為匯入已匯出值的堆疊,請更新堆疊範本,以實際輸出值取代匯入陳述式。
  3. 使用修改後的範本更新匯入堆疊。

解決方法

**注意:**如果您在執行 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

AWS 官方
AWS 官方已更新 2 年前