CloudFormation의 EC2 인스턴스에 메타데이터를 포함할 때 발생하는 문제를 해결하려면 어떻게 해야 합니까?

3분 분량
0

AWS CloudFormation에서는 AWS::CloudFormation::Init를 사용하여 Amazon Elastic Cloud Compute(Amazon EC2) 인스턴스에 메타데이터를 포함했습니다. 하지만 인스턴스의 변경 사항이 표시되지 않습니다.

해결 방법

전제 조건: CloudFormation 스택의 실패 시 롤백 옵션을 아니요로 설정합니다.

실패 시 롤백아니요로 설정했는데도 EC2 인스턴스에 메타데이터를 포함할 수 없는 경우 다음 조치를 취하세요.

참고: 다음 해결 단계는 Linux 인스턴스로 생성한 CloudFormation 스택에 대한 것입니다.

cfn-init 헬퍼 스크립트가 설치되어 있는지 확인합니다.

CloudFormation 리소스에 신호를 전송하도록 구성된 인스턴스에 cfn-init를 설치했는지 확인하려면 다음 단계를 완료하세요.

  1. SSH를 사용하여 인스턴스에 연결합니다.
  2. cfn-init 또는 aws-cfn-bootstrap 패키지가 디렉터리에 설치되어 있는지 확인합니다.
    cfn-init를 확인하려면 다음 명령을 실행합니다.
    sudo find / -name cfn-init/opt/aws/bin/cfn-init
    /opt/aws/apitools/cfn-init
    /opt/aws/apitools/cfn-init-1.4-34.24.amzn1/bin/cfn-init
    /var/lib/cfn-init
    aws-cfn-bootstrap 패키지를 확인하려면 다음 명령을 실행합니다.
    sudo rpm -q aws-cfn-bootstrapaws-cfn-bootstrap-1.4-34.24.amzn1.noarch
    참고: 위 명령은 RPM 패키지 관리자를 사용하는 배포에서만 작동합니다.

CloudFormation 헬퍼 스크립트는 기본적으로 Amazon Linux Amazon Machine Images(AMI)에 설치됩니다.

인스턴스가 인터넷에 연결되어 있는지 확인

인스턴스가 Amazon Virtual Private Cloud(Amazon VPC)에 있는 경우 다음 방법을 통해 인스턴스를 인터넷에 연결할 수 있습니다.

  • 프라이빗 서브넷의 NAT 디바이스
  • 퍼블릭 서브넷의 인터넷 게이트웨이

인스턴스의 인터넷 연결을 테스트하려면 AWS 홈페이지와 같은 공개 웹페이지를 엽니다. 그런 다음 인스턴스에서 curl 명령어를 실행합니다. 예시:

curl -I https://aws.amazon.com

인스턴스가 인터넷에 연결된 경우 명령은 HTTP 200 상태 코드를 반환합니다.

인터페이스 VPC 엔드포인트를 사용하는 경우 엔드포인트는 인스턴스와 동일한 AWS 리전에 있어야 합니다. 또한 인터페이스 엔드포인트에 연결된 보안 그룹은 Amazon VPC의 프라이빗 서브넷에서 포트 443으로 들어오는 연결을 허용해야 합니다.

cloud-init 또는 cfn-init 로그에서 오류 검색

cloud-init 로그 또는 cfn-init 로그에서 구문 오류나 잘못된 값을 검색하려면 다음 단계를 완료하세요.

  1. SSH를 사용하여 인스턴스에 연결합니다.
  2. 자세한 오류 메시지를 찾으려면 다음 로그에서 error 또는 failure 키워드를 검색하세요.
    /var/log/cloud-init-output.log
    /var/log/cloud-init.log
    /var/log/cfn-init.log
    /var/log/cfn-init-cmd.log
    /var/log/cfn 또는 /var/log/cloud-init 파일에서 error 또는 failure라는 단어의 모든 인스턴스를 분석하려면 다음 명령을 실행합니다.
    grep -ni 'error\|failure' $(sudo find /var/log -name cfn-init\* -or -name cloud-init\*)
    참고: 이전 명령은 파일 이름, 줄 번호 및 오류 메시지를 반환합니다.
  3. 자세한 오류 메시지를 사용하여 오류를 수정한 다음 스택을 업데이트합니다.

cfn-init.log가 존재하지 않는다면 CloudFormation 템플릿이 cfn-init을 실행하지 않은 것입니다.

cfn-init를 실행하도록 UserData 속성을 구성했는지 확인하려면 다음 단계를 완료하세요.

  1. 코드 편집기에서 스택의 CloudFormation 템플릿을 엽니다.
  2. UserData에서 구문 오류, 공백 누락, 맞춤법 오류 및 기타 오타와 같은 오류가 있는지 확인합니다.
  3. 스택, 리소스 및 리전 속성의 값이 올바른지 확인합니다.
  4. UserData 속성의 Fn::Join 내재 함수의 경우, -v를 사용하여 상세 모드에서 cfn-init을 실행합니다. 예제 출력은 예제를 참조하세요.

관련 정보

CloudFormation VPC 엔드포인트에 대한 고려 사항

AWS::CloudFormation::Init

AWS CloudFormation에서 “Failed to receive X resource signal(s) within the specified duration.” 오류를 해결하려면 어떻게 해야 합니까?

AWS 공식
AWS 공식업데이트됨 4달 전
댓글 없음

관련 콘텐츠