AWS CloudFormation スタックの更新もしくは削除を行おうとしましたが、「Export EXPORT_NAME cannot be updated as it is in use by STACK_NAME」(エクスポート EXPORT_NAME は、STACK_NAME により使用されているため更新できません) というエラーが表示されます。
簡単な説明
更新または削除するスタックから 1 つ以上のスタックがエクスポートした出力値をインポートしている際に、このエラーが発生しました。他のスタックが値をインポートしている時は、スタックを更新または削除することはできません。
このエラーを解決するには、次のステップを実行してください。
- エクスポートされた出力値をインポートするスタックを検索します。
- エクスポートされた値のインポート先として特定したスタックについて、スタックテンプレートを更新して、Importステートメントを実際の出力値に置き換えます。
- 変更されたテンプレートを使用して、インポートスタックを更新します。
解決方法
注: AWS コマンドラインインターフェイス (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] メニューから、 [Exports★] を選択します。
3. [Export Name★] で、ご自身のスタックからエクスポートされた出力値の名前を選択します。
4. [Imports] (インポート) で、ご自身のスタックからエクスポートされた出力値をインポートしているスタックを選択します。
スタックテンプレートを更新して、Import ステートメントを実際の出力値に置き換えます。
1. AWS CloudFormation テンプレートで、スタックのエクスポートされた出力値を参照するすべてのスタックについて、組み込み関数をインポートした値に置き換えます。
たとえば、次の JSON および YAML テンプレートでは、組み込み関数 Fn::ImportValue および !ImportValue は、どちらもインポート値 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