내용으로 건너뛰기

CloudFormation 스택의 "Resource already exists in the stack" 오류를 해결하려면 어떻게 해야 합니까?

2분 분량
0

AWS CloudFormation에서 내 스택의 "Resource already exists in the stack" 오류를 해결하고 싶습니다.

간략한 설명

각 리소스에는 고유한 물리적 ID가 있으며, CloudFormation에 정의된 대부분의 리소스에 대해 물리적 ID를 재사용할 수 없습니다.

스택을 생성할 때 리소스의 이름과 값이 다른 리소스와 동일하면 CloudFormation이 리소스를 구분할 수 없습니다. 그러면 "Resource already exists in stack"라는 오류 메시지가 표시됩니다. 또한 CloudFormation에서 정의하거나 관리하지 않는 리소스가 AWS 계정 또는 AWS 리전에 동일한 물리적 ID로 존재하는 경우에도 이 오류가 표시될 수 있습니다.

이 문제를 해결하려면 실패한 리소스의 이름을 고유한 이름으로 변경하거나 해당 리소스의 이름을 정의하지 마십시오. 이름을 정의하지 않으면 CloudFormation은 사용자가 리소스를 만들 때 고유한 이름을 생성합니다. 이 고유한 이름은 기존 리소스와 충돌하지 않습니다.

해결 방법

참고: 다른 스택에 있거나 다른 AWS 서비스로 생성한 리소스와 관련된 오류에 대해 다음 해결 방법을 사용할 수 있습니다. 예를 들어, 식별자가 이미 존재하는 Amazon Simple Queue Service(Amazon SQS) 대기열에서 이 오류가 발생할 수 있습니다.

리소스의 이름 확인

실패한 리소스가 포함된 CloudFormation 템플릿에서 명시적으로 선언된 다른 리소스의 이름이 실패한 리소스와 동일한지 확인합니다.

다음 예시에서는 각 AWS Identity and Access Management(IAM) ManagedPolicy 리소스의 이름(FinalS3WritePolicy)이 동일하기 때문에 스택이 실패합니다.

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

중복 리소스 이름 업데이트

중복된 이름이 있는 리소스의 이름을 업데이트합니다. 예를 들어, FinalS3WritePolicy의 첫 번째 항목을 FinalS3DeletePolicy로 변경합니다. 또는 이름을 제거합니다.

다음 예시에서는 각 IAM ManagedPolicy 리소스의 고유한 이름이 FinalS3DeletePolicyFinalS3WritePolicy이기 때문에 스택 A가 성공합니다. 스택 B는 ManagedPolicyName 속성에 이름 값이 설정되지 않았기 때문에 성공합니다. 리소스가 생성되면 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 공식업데이트됨 5달 전
댓글 없음