Como faço para resolver o erro “O recurso com nome personalizado já existe na pilha” no AWS CloudFormation?

3 minuto de leitura
0

Minha pilha do AWS CloudFormation falha ao criar um recurso e eu recebo uma mensagem de erro informando que meu recurso já existe na pilha. Como faço para resolver esse erro?

Breve descrição

Quando você cria um recurso com nome personalizado com o mesmo nome e definido com o mesmo valor de outro recurso, o CloudFormation não consegue diferenciá-los. Em seguida, você recebe a mensagem de erro: “O recurso com nome personalizado já existe na pilha”. Cada recurso com nome personalizado tem uma ID física exclusiva. Você não pode reutilizar a ID física para a maioria dos recursos definidos no CloudFormation.

Você pode resolver esse erro alterando o nome do recurso com falha para um nome exclusivo. Ou você pode optar por não definir o nome personalizado desse recurso. Se você não definir um nome personalizado, o CloudFormation gerará um nome exclusivo quando o recurso for criado. Esse nome exclusivo não entrará em conflito com seus recursos existentes.

Resolução

1.    No modelo do CloudFormation que contém seu recurso com falha, verifique se outros recursos declarados explicitamente têm o mesmo nome do seu recurso com falha.

No exemplo a seguir, a pilha falha porque cada recurso ManagedPolicy do AWS Identity and Access Management (IAM) (ManagedPolicyName) tem o mesmo nome personalizado (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:
........
........

2.    Atualize o nome de qualquer recurso que tenha um nome duplicado. Por exemplo, altere a primeira instância de FinalS3WritePolicy no exemplo anterior para FinalS3DeletePolicy. Ou remova o nome personalizado.

Nos exemplos a seguir, a Pilha A é bem-sucedida porque cada recurso ManagedPolicy do IAM tem um nome personalizado exclusivo (FinalS3DeletePolicy e FinalS3WritePolicy). A Pilha B é bem-sucedida porque nenhum valor de nome personalizado é definido para nenhuma das propriedades ManagedPolicyName. Quando o recurso é criado, o CloudFormation gera automaticamente um nome exclusivo para cada recurso ManagedPolicy do IAM na Pilha B.

Pilha 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:
........
........

Pilha B:

S3DeletePolicy:
    Type: AWS::IAM::ManagedPolicy
    Properties:
      PolicyDocument:
........
........
S3WritePolicy:
    Type: AWS::IAM::ManagedPolicy
    Properties:
      PolicyDocument:
........
........

**Observação:**Você pode usar a resolução neste artigo para erros relacionados envolvendo recursos que existem em uma pilha diferente ou recursos criados fora do CloudFormation.


AWS OFICIAL
AWS OFICIALAtualizada há 2 anos