AWS CloudFormation에서 "Internal Failure" 오류를 해결하려면 어떻게 해야 하나요?

최종 업데이트 날짜: 2020년 6월 23일

AWS CloudFormation에서 "Internal Failure" 오류를 해결하고 싶습니다.

간략한 설명

AWS CloudFormation 스택을 생성하거나 업데이트할 때 리소스에 대한 작업이 실패하거나 스택을 배포하지 못하면 "Internal Failure" 오류가 발생할 수 있습니다.

다음과 같은 경우에 리소스에 대한 작업이 실패할 수 있습니다.

  • 리소스 또는 속성이 잘못된 값으로 설정되었습니다. 이 문제를 해결하려면 테스트 스택을 배포하여 리소스 또는 속성의 잘못된 값 찾기 섹션의 단계를 따라 완료하세요.
  • 내부 워크플로가 실패했습니다. AWS CloudTrail을 사용하여 이 문제를 해결하려면 CloudTrail 이벤트 로그에서 실패한 API 작업 찾기 섹션의 단계를 따라 완료하세요.

마지막으로 AWS CloudFormation 템플릿의 [출력] 섹션에 잘못된 값을 전달하면 스택이 배포되지 못할 수 있습니다. 이 오류를 해결하려면 AWS CloudFormation 템플릿의 [출력] 섹션에서 값 확인 섹션의 단계를 따라 완료하세요.

해결 방법

테스트 스택을 배포하여 리소스 또는 속성의 잘못된 값 찾기

리소스 속성의 잘못된 값을 찾으려면 실패한 리소스만 포함된 AWS CloudFormation 템플릿으로 테스트 스택을 배포합니다.

테스트 스택이 배포되면 CloudTrail 이벤트 로그에서 실패한 API 작업 찾기 섹션의 단계를 따라하세요.

테스트 스택이 배포되지 않으면 잘못된 값을 찾을 때까지 테스트 스택에서 불필요한 속성을 제거합니다.

다음 예제 시나리오에서는 AWS CloudFormation이 AWS Config로 AWS::Config::ConformancePack 리소스를 생성하려고 할 때 "Internal Failure" 오류가 발생합니다. 오류가 반환되는 이유는 DeliveryS3Bucket 속성이 잘못된 구문을 사용하기 때문입니다. DeliveryS3Bucket 속성은 버킷 이름만 값으로 허용합니다(예: bucketname). 버킷 이름을 포함하는 파일 경로는 허용되는 값이 아닙니다(예: s3://bucketname).

AWSTemplateFormatVersion: 2010-09-09
Resources:
  CloudFormationCanaryPack:
    Type: AWS::Config::ConformancePack
    Properties:
      ConformancePackName: ConformancePackName
      DeliveryS3Bucket: s3://bucketname            # Incorrect value for DeliveryS3Bucket
      TemplateS3Uri: s3://bucketname/prefix

CloudTrail 이벤트 로그에서 실패한 API 작업 찾기

1.    CloudTrail 콘솔을 엽니다.

2.    탐색 창에서 [이벤트 기록]을 선택합니다.

3.    [시간 범위]에 실패한 API 호출을 분리하기 위한 시간 범위를 입력한 다음, [적용]을 선택합니다.

팁: [시작] 시간에 AWS CloudFormation 스택에서 리소스가 CREATE_IN_PROGRESS 또는 UPDATE_IN_PROGRESS 상태로 변경된 시점을 입력합니다. [종료] 시간에는 API 호출이 실패한 시간을 입력합니다.

4.    실패의 근본 원인을 찾으려면 반환된 이벤트의 오류 메시지를 검토하세요.

참고: 일부 API 작업은 실패하면 원래 AWS CloudFormation 템플릿을 업데이트한 다음, 테스트 배포를 수행하여 오류가 해결되었는지 확인해야 합니다.

AWS CloudFormation 템플릿의 [출력] 섹션에서 값 확인

AWS CloudFormation 템플릿에서 [출력] 섹션의 값에 구문 오류가 없도록 합니다. 예를 들어 후행 공백을 제거합니다.

동적 참조로 리소스 속성을 검색하려면 스택 배포 시 해당 속성을 사용할 수 있는지 확인해야 합니다. AWS CloudFormation 외부에서 이를 시뮬레이션하려면 다음과 같이 하면 됩니다.

1.    실패한 속성을 포함한 리소스 유형에 대한 API 호출을 생성*하거나 업데이트*합니다(생성 또는 수정).

2.    스택 생성 또는 업데이트 프로세스에서 Describe* API 호출로 리소스의 현재 속성을 검색합니다.

다음 예제 시나리오에서는 AWS::DMS::ReplicationInstance 리소스의 ReplicationInstancePrivateIpAddresses 속성이 [출력]에 전달되었을 때 스택에서 반환하는 내부 오류를 보여줍니다.

다음 예제에서 인스턴스의 프라이빗 IP 속성은 ReplicationInstance 리소스가 사용 가능으로 상태가 변경된 후부터 사용할 수 있습니다. 스택이 [출력]을 실행할 시점에 ReplicationInstance 사용 가능 상태가 아닐 경우, AWS CloudFormation이 프라이빗 IP 속성을 검색하지 못합니다. 그러면 배포가 실패합니다.

AWSTemplateFormatVersion: 2010-09-09
Resources:
  BasicReplicationInstance:
    Type: AWS::DMS::ReplicationInstance
    Properties:
      ReplicationInstanceClass: dms.t2.small
Outputs:
  DmsInstanceIP:
    Value: !GetAtt BasicReplicationInstance.ReplicationInstancePrivateIpAddresses

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


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