CloudFormation での「カスタム名のリソースを置き換える必要がある場合、スタックを更新できません」というエラーを解決する方法を教えてください。

所要時間1分
0

AWS CloudFormation スタックを更新しようとすると、次のようなエラーメッセージが表示されます。 「CloudFormationは、カスタム名のリソースを置き換える必要がある場合、スタックを更新できません。'MyResource###' の名前を変更してから、スタックを再度更新してください。」

簡単な説明

スタックの更新がカスタム名を持つプロパティを含むリソースを置き換えようとしたときに、このエラーが発生します。CloudFormation は、カスタム名が別の名前に変更されない限り、カスタム名を持つリソースを置き換えません。スタックの障害を防ぐため、スタックを更新する前に、必ずカスタム名の付いたリソースを別の名前に変更してください。

このエラーの解決方法は次のことを前提としています。

  • 既存スタックの更新であり、新規スタックの作成ではない。
  • 既存のカスタム名付きリソースの名前変更であり、新しいカスタム名付きリソースの作成ではない。

解決策

  1. コードエディタで、更新するスタックの CloudFormation テンプレートを開きます。

  2. カスタム名を持つリソースプロパティの名前または値で、別の名前を使用するようにします。

    注: 次の例では、MyRDS リソースの DBInstanceIdentifier プロパティが ProdDB というカスタム名に設定されています。CloudFormation スタックは、ProdDB という名前が ProdDB1 などの別の名前に変更されるまで更新できません。または、テンプレートから DBInstanceIdentifier プロパティを省略すると、CloudFormation が DB インスタンスに使用する一意の物理 ID を生成するようになります。

    "MyRDS": {    "Type": "AWS::RDS::DBInstance",
        "Properties": {
            "DBInstanceClass": "db.m3.medium",
            "Engine": "MySQL",
            "DBInstanceIdentifier": "PRODdb",
            "AllocatedStorage": "10",
            "AutoMinorVersionUpgrade": "true",
            "BackupRetentionPeriod": "0",
        . . .
        . . .
        }
    }

    重要: カスタム名の付いたリソースの名前を変更すると、そのリソースは CloudFormation により置き換えられます。詳細については、「Name 型」を参照してください。特定のリソースを置き換えると、適切なバックアップが行われず、データが失われる可能性があります。詳細については、「置き換え」を参照してください。

  3. CloudFormation テンプレートに変更を保存したら、そのテンプレートを使用してスタックを更新します。

関連情報

CloudFormation スタックで AWS リソースを単一ユニットとして管理する

スタックリソース更新の動作について

AWS リソースとプロパティタイプのリファレンス

AWS公式
AWS公式更新しました 4ヶ月前
コメントはありません

関連するコンテンツ