"Export EXPORT_NAME cannot be updated as it is in use by STACK_NAME" 오류를 해결하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2019년 5월 16일

AWS CloudFormation 스택을 업데이트 또는 삭제하려고 했지만, 다음과 유사한 오류가 발생했습니다. "Export EXPORT_NAME cannot be updated as it is in use by STACK_NAME." 이 오류를 해결하려면 어떻게 해야 합니까?

간략한 설명

이 오류는 하나 이상의 스택이 사용자가 업데이트 또는 삭제하려는 스택에서 내보낸 출력 값을 가져오고 있기 때문에 발생합니다. 다른 스택이 사용자 스택에서 값을 가져오고 있는 경우 해당 사용자 스택을 업데이트하거나 삭제할 수 없습니다.

이 오류를 해결하려면 다음 단계를 수행합니다.

  1. 사용자 스택에서 내보낸 출력 값을 참조하고 있는 스택을 확인합니다.
  2. 사용자 스택에서 내보낸 출력 값을 참조하는 모든 스택 템플릿에서 가져온 값을 업데이트합니다. 그런 다음, 가져온 값을 참조하는 스택을 업데이트하거나 삭제합니다.

​해결 방법

사용자 스택에서 내보낸 출력 값을 참조하고 있는 스택 확인

내보낸 출력 값을 참조하고 있는 스택을 확인하기 위해 AWS CLI(명령줄 인터페이스), AWS Tools for PowerShell 또는 AWS CloudFormation 콘솔을 사용할 수 있습니다.

AWS CLI:

1.    내보낸 출력 값을 모두 나열하려면 다음 명령을 실행합니다.

aws cloudformation list-exports

2.    내보낸 출력 값을 가져오고 있는 스택을 모두 나열하려면 다음 명령을 실행합니다.

aws cloudformation list-imports --export-name EXPORT_NAME

참고: EXPORT_NAME을 내보낸 출력 값의 이름으로 대체합니다.

AWS Tools for PowerShell:

1.    내보낸 출력 값을 모두 나열하려면 다음 명령을 실행합니다.

Get-CFNExport

2.    내보낸 출력 값을 가져오고 있는 스택을 모두 나열하려면 다음 명령을 실행합니다.

Get-CFNImportList -ExportName EXPORT_NAME

참고: EXPORT_NAME을 내보낸 출력 값의 이름으로 대체합니다.

AWS CloudFormation 콘솔:

1.    AWS CloudFormation 콘솔을 엽니다.

2.    CloudFormation 메뉴에서 [내보내기]를 선택합니다.

3.    [내보내기 이름]에서는 사용자 스택에서 내보낸 출력 값 이름을 선택합니다.

4.    [가져오기]에서는 사용자 스택에서 내보낸 출력 값을 가져오고 있는 스택을 선택합니다.

사용자 스택에서 내보낸 출력 값을 참조하는 모든 스택 템플릿에서 가져온 값 업데이트

1.    AWS CloudFormation 템플릿에서는 내장 함수를 사용자 스택에서 내보낸 출력 값을 참조하는 모든 스택에 대해 가져온 값으로 대체합니다.

예를 들어, 내장 함수, Fn::ImportValue!ImportValue는 모두 다음 JSON 및 YAML 템플릿에서 가져온 값, arn:aws:s3:::sample로 대체됩니다.

다음은 내장 함수를 포함하는 JSON 템플릿입니다.

{
    "Parameters": {
       "parameterName": {
          "Type": "String"
       }
    },
    "Resources": {
       "testParameter": {
          "Type": "AWS::SSM::Parameter",
          "Properties": {
             "Description": "Test SSM Parameter",
             "Name": { "Ref": "parameterName" },
             "Type": "String",
             "Value": { "Fn::ImportValue": "sample-s3-bucket:Bucket-arn" }
          }
       }
    }
 }

다음은 가져온 값을 포함하는 JSON 템플릿입니다.

{
    "Parameters": {
       "parameterName": {
          "Type": "String"
       }
    },
    "Resources": {
       "testParameter": {
          "Type": "AWS::SSM::Parameter",
          "Properties": {
             "Description": "Test SSM Parameter",
             "Name": { "Ref": "parameterName" },
             "Type": "String",
             "Value": "arn:aws:s3:::sample"
          }
       }
    }
 }

다음은 내장 함수를 포함하는 YAML 템플릿입니다.

Parameters:
  parameterName:
    Type: String
Resources:
  testParameter:
    Type: AWS::SSM::Parameter
    Properties:
      Description: Test SSM Parameter
      Name: !Ref parameterName
      Type: String
      Value: !ImportValue sample-s3-bucket:Bucket-arn

다음은 가져온 값을 포함하는 YAML 템플릿입니다.

Parameters:
  parameterName:
    Type: String
Resources:
  testParameter:
    Type: AWS::SSM::Parameter
    Properties:
      Description: Test SSM Parameter
      Name: !Ref parameterName
      Type: String
      Value: arn:aws:s3:::sample

2.    스택을 업데이트 또는 삭제합니다.


이 문서가 도움이 되었습니까?

AWS에서 개선해야 할 부분이 있습니까?


도움이 필요하십니까?