AWS CloudFormation スタックを更新しようとすると、次のようなエラーメッセージが表示されます。「カスタム名の付いたリソースを置き換える必要があると、CloudFormation はスタックを更新できません。MYResourceXXX の名前を変更して、もう一度スタックを更新してください。」 このエラーの解決方法を教えてください。
簡単な説明
このエラーは通常、スタックの更新で、プロパティを持つリソースをカスタム名で置き換えようとしたときに発生します。カスタム名が別の名前に変更されない限り、AWS CloudFormation はカスタム名を持つリソースを置き換えません。スタックの失敗を防ぎ、エラーメッセージを回避するには、スタックを更新する前に、カスタム名を持つリソースを変更して別の名前を使用します。
このエラーの解決方法は、以下を前提としています。
- 既存のスタックを更新した。新しいスタックは作成していない。
- 既存のカスタム名のリソースの名前を変更した。新しいカスタム名のリソースは作成していない。
解決方法
1. コードエディタで、更新するスタックの AWS CloudFormation テンプレートを開きます。
2. カスタム名を持つすべてのリソースプロパティの名前または値を別の名前に置き換えます。
;注: 次の例では、 DBInstanceIdentifier プロパティー ( MyRDS リソース内) は、カスタム名 PRODdb に設定されています。PRODdb の名前が PRODdb1 などの別の名前に変更されるまでは、AWS CloudFormation スタックが正常に更新されません。または、テンプレートから DBInstanceIdentifier プロパティを省略することもできます。このようにして、AWS CloudFormation は DB インスタンスに使用する一意の物理 ID を生成します。
"MyRDS": {
"Type": "AWS::RDS::DBInstance",
"Properties": {
"DBInstanceClass": "db.m3.medium",
"Engine": "MySQL",
"DBInstanceIdentifier": "PRODdb",
"AllocatedStorage": "10",
"AutoMinorVersionUpgrade": "true",
"BackupRetentionPeriod": "0",
…
…
}
}
重要: カスタムのリソース名を変更すると、AWS CloudFormation がリソースを置き換えます。詳細については、「Name タイプ」を参照してください。特定のリソースを交換すると、適切なバックアップがない場合にデータが失われる可能性があります。詳細については、置換を参照してください。
3. AWS CloudFormation テンプレートへの変更を保存してから、そのテンプレートを使用してスタックを更新します。
関連情報
AWS CloudFormation スタックの更新
スタックリソースの更新動作
AWS リソースプロパティタイプのリファレンス