CloudFormation エラー「リソースは既にスタックに存在します」を解決する方法を教えてください。

所要時間1分
0

リソース名を変更するか、一意の名前を生成することで、「リソースはスタックに既に存在します」という CloudFormation エラーを解決する方法を学びたいと考えています。

簡単な説明

別のリソースと名前が同じで、同じ値に設定されたリソースを作成する場合、AWS CloudFormation はそれらを区別できません。この場合、「リソースは既にスタックに存在します」というエラーメッセージが表示されます。 各リソースには一意の物理 ID があります。CloudFormation で定義されているほとんどのリソースでは、物理 ID を再利用することはできません。

この問題を解決するには、障害が発生したリソースの名前を一意の名前に変更します。または、そのリソースの名前を定義しないという方法もあります。名前を設定しない場合、CloudFormation によって、リソースの作成時に一意の名前が生成されます。この一意の名前は、既存のリソースと競合しません。

解決策

注: 別のスタックに存在するリソース、または他の AWS リソースで作成したリソースに関連するエラーには、次の解決策を使用できます。たとえば、識別子がすでに存在する Amazon Simple Queue Service (Amazon SQS) キューでこのエラーが表示されることがあります。

障害が発生したリソースの名前を変更するか、一意の名前を生成するには、次の手順を実行します。

  1. 障害が発生したリソースを含む CloudFormation テンプレートで、明示的に宣言された他のリソースに障害が発生したリソースと同じ名前が付けられていないか確認します。

    次の例では、AWS Identity and Access Management (IAM) のそれぞれの ManagedPolicy リソース (ManagedPolicyName) に同じ名前 (FinalS3WritePolicy) が付いています。

    S3DeletePolicy:
        Type: AWS::IAM::ManagedPolicy
        Properties:
          ManagedPolicyName:
            Fn::Join:
            - _
            - - FinalS3DeletePolicy
              - Ref: EnvType
          PolicyDocument:
    ........
    ........
    S3WritePolicy:
        Type: AWS::IAM::ManagedPolicy
        Properties:
          ManagedPolicyName:
            Fn::Join:
            - _
            - - FinalS3WritePolicy
              - Ref: EnvType
          PolicyDocument:
    ........
    ........
  2. 名前が重複しているリソースの名前を更新します。たとえば、最初に出現した FinalS3WritePolicyFinalS3DeletePolicy に変更します。または、名前を削除します。

    次の例では、IAM のそれぞれの ManagedPolicy リソースに一意の名前 FinalS3DeletePolicyFinalS3WritePolicy が付けられているために、スタック A は成功します。どちらの ManagedPolicyName プロパティにも名前値が設定されていないため、スタック B は成功します。リソースが作成されると、CloudFormation はスタック B の IAM のそれぞれの ManagedPolicy リソースに一意の名前を自動的に生成します。

    スタック A:

    S3DeletePolicy:  
        Type: AWS::IAM::ManagedPolicy  
        Properties:  
          ManagedPolicyName:  
            Fn::Join:  
            - _  
            - - FinalS3DeletePolicy  
              - Ref: EnvType  
          PolicyDocument:  
    ........  
    ........  
    S3WritePolicy:  
        Type: AWS::IAM::ManagedPolicy  
        Properties:  
          ManagedPolicyName:  
            Fn::Join:  
            - _  
            - - FinalS3WritePolicy  
              - Ref: EnvType  
          PolicyDocument:  
    ........  
    ........

    スタック B:

    S3DeletePolicy:
        Type: AWS::IAM::ManagedPolicy
        Properties:
          PolicyDocument:
    ........
    ........
    S3WritePolicy:
        Type: AWS::IAM::ManagedPolicy
        Properties:
          PolicyDocument:
    ........
    ........
AWS公式
AWS公式更新しました 7ヶ月前
コメントはありません

関連するコンテンツ