AWS CloudFormation에서 "EXPORT_NAME 내보내기는 STACK_NAME에 사용되므로 업데이트할 수 없음(Export EXPORT_NAME cannot be updated as it is in use by STACK_NAME)" 오류를 해결하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2020년 9월 28일

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

간략한 설명

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

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

  1. 내보낸 출력 값을 가져오는 스택을 찾습니다.
  2. 내보낸 값을 가져오는 스택의 스택 템플릿을 업데이트하여 Import 문을 실제 출력 값으로 바꿉니다.
  3. 수정된 템플릿을 사용하여, 값을 가져오는 스택을 업데이트합니다.

​해결 방법

참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생하는 경우 최신 버전의 CLI를 사용하고 있는지 확인하십시오.

내보낸 출력 값을 가져오는 스택 찾기

내보낸 출력 값을 참조하고 있는 스택을 확인하기 위해 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.    [가져오기(Imports)]에서는 사용자 스택에서 내보낸 출력 값을 가져오고 있는 스택을 선택합니다.

스택 템플릿을 업데이트하여 Import 문을 실제 출력 값으로 바꿉니다.

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.    스택을 업데이트 또는 삭제합니다.

이제 가져오기의 연결이 해제되었으므로 값을 내보낸 스택을 업데이트하거나 삭제할 수 있습니다.


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


결제 또는 기술 지원이 필요합니까?