cfn-init - AWS CloudFormation

cfn-init

CloudFormation 템플릿에서 Amazon EC2 리소스의 Metadata 섹션에 있는 AWS::CloudFormation::Init를 사용하여 초기화 태스크를 정의할 수 있습니다. 자세한 내용은 AWS CloudFormation 사용 설명서AWS::CloudFormation::Init를 참조하세요.

cfn-init 헬퍼 스크립트는 AWS::CloudFormation::Init 키에서 템플릿 메타데이터를 읽고 이에 따라 다음과 같이 동작합니다.

  • CloudFormation에서 메타데이터 가져오기 및 구문 분석

  • 패키지 설치

  • 디스크에 파일 쓰기

  • 서비스 활성화/비활성화 및 시작/중지

cfn-init 헬퍼 스크립트는 일반적으로 Amazon EC2 인스턴스 또는 시작 템플릿의 사용자 데이터에서 실행됩니다.

참고

cfn-init를 사용하여 기존 파일을 업데이트하는 경우 동일한 디렉터리에 원본 파일의 백업 사본이 .bak라는 확장명으로 생성됩니다. 예를 들어, /path/to/file_name을 업데이트하면 이 작업에서는 다음과 같은 파일 2개를 생성합니다. /path/to/file_name.bak 파일에는 원본 파일의 내용이 들어 있고, /path/to/file_name 파일에는 업데이트된 내용이 들어 있습니다.

구문

cfn-init --stack|-s stack.name.or.id \ --resource|-r logical.resource.id \ --region region \ --access-key access.key \ --secret-key secret.key \ --role rolename \ --credential-file|-f credential.file \ --configsets|-c config.sets \ --url|-u service.url \ --http-proxy HTTP.proxy \ --https-proxy HTTPS.proxy \ --verbose|-v
참고

cfn-init에는 자격 증명이 필요 없기 때문에 --access-key, --secret-key, --role 또는 --credential-file 옵션을 사용할 필요가 없습니다. 그러나 자격 증명을 지정하지 않으면 CloudFormation이 스택 멤버십을 확인하고 해당 인스턴스가 속한 스택에 대한 호출 범위를 제한합니다. 자세한 내용은 헬퍼 스크립트에 대한 권한 단원을 참조하십시오.

옵션

명칭 설명 필수

-s, --stack

스택 이름 또는 스택 ID입니다.

유형: 문자열

기본값: 없음

: --stack { "Ref" : "AWS::StackName" },

-r, --resource

메타데이터가 포함된 리소스의 논리적 리소스 ID입니다.

유형: 문자열

: --resource WebServerHost

--region

사용할 CloudFormation 리전 엔드포인트입니다.

유형: 문자열

기본값: us-east-1

예제: --region ", { "Ref" : "AWS::Region" },

No

--access-key

CloudFormation에서 DescribeStackResource를 호출할 권한이 있는 계정의 AWS 액세스 키입니다. 자격 증명 파일 파라미터가 이 파라미터를 대신합니다.

유형: 문자열

No

--secret-key

지정된 AWS 액세스 키에 해당하는 AWS 보안 암호 액세스 키입니다.

유형: 문자열

No

--role

인스턴스와 연결되는 IAM 역할의 이름입니다.

유형: 문자열

조건: 자격 증명 파일 파라미터가 이 파라미터를 대신합니다.

No

-f, --credential-file

보안 액세스 키 및 액세스 키가 둘 다 포함된 파일입니다. 자격 증명 파일 파라미터는 --role, --access-key 및 --secret-key 파라미터를 대신합니다.

유형: 문자열

No

-c, --configsets

(순서대로) 실행할 configset의 쉼표로 구분된 목록입니다.

유형: 문자열

기본값: default

No

-u, --url

사용할 CloudFormation 엔드포인트입니다.

유형: 문자열

No

--http-proxy

HTTP 프록시입니다(비 SSL). 다음 형식을 사용합니다. http://user:password@host:port

유형: 문자열

No

--https-proxy

HTTPS 프록시입니다. 다음 형식을 사용합니다. https://user:password@host:port

유형: 문자열

No

-v, --verbose

상세 정보 표시 출력입니다. 이 옵션은 cfn-init가 초기화에 실패하는 사례를 디버깅하는 데 유용합니다.

참고

초기화 이벤트를 디버깅하려면 DisableRollback을 켜야 합니다. 그런 다음 콘솔에 대해 SSH 접속을 수행하고 /var/log/cfn-init.log에서 로그를 읽습니다. 자세한 내용은 AWS CloudFormation 사용 설명서리소스 프로비저닝 시 실패 처리 방법 선택을 참조하세요.

No

-h, --help

도움말 메시지를 표시한 후 종료합니다.

No

예시

Amazon Linux 예제

다음 예제는 WebServerInstance 리소스와 연결된 InstallAndRun configset를 실행하는 EC2 인스턴스의 UserData 속성을 보여줍니다.

최신 버전을 포함시키려면 UserDatayum install -y aws-cfn-bootstrap을 추가합니다.

JSON

Fn::Join 내장 함수를 사용하는 UserData 속성입니다.

{ "UserData": { "Fn::Base64": { "Fn::Join": [ "", [ "#!/bin/bash -xe\n", "", "yum install -y aws-cfn-bootstrap", "/opt/aws/bin/cfn-init -v ", " --stack ", { "Ref": "AWS::StackName" }, " --resource WebServerInstance ", " --configsets InstallAndRun ", " --region ", { "Ref": "AWS::Region" }, "\n" ] ] } } }

YAML

Fn::Join 내장 함수를 사용하는 UserData 속성입니다.

UserData: !Base64 'Fn::Join': - '' - - | #!/bin/bash -xe - '' - yum install -y aws-cfn-bootstrap - '/opt/aws/bin/cfn-init -v ' - ' --stack ' - !Ref 'AWS::StackName' - ' --resource WebServerInstance ' - ' --configsets InstallAndRun ' - ' --region ' - !Ref 'AWS::Region' - |+

JSON

Fn::Sub 내장 함수를 사용하는 UserData 속성입니다.

{ "UserData": { "Fn::Base64": { "Fn::Sub": [ "#!/bin/bash -x\n# Install the files and packages from the metadata\n/opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource MyInstance --region ${AWS::Region}\n\n# Signal the status from cfn-init\n/opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackName} --resource MyInstance --region ${AWS::Region}\n", {} ] } } }

YAML

Fn::Sub 내장 함수를 사용하는 UserData 속성입니다.

UserData: !Base64 'Fn::Sub': - > #!/bin/bash -x # Install the files and packages from the metadata /opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource MyInstance --region ${AWS::Region} # Signal the status from cfn-init /opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackName} --resource MyInstance --region ${AWS::Region} - {}

또한 GitHub 리포지토리를 방문하여 다음 템플릿을 포함하여 cfn-init를 사용하는 샘플 템플릿을 다운로드할 수 있습니다.

Windows 템플릿의 경우 AWS CloudFormation 사용 설명서Microsoft Windows 스택 템플릿 작업을 참조하세요.