cfn-init
설명
cfn-init 헬퍼 스크립트는 AWS::CloudFormation::Init
키에서 템플릿 메타데이터를 읽고 이에 따라 다음과 같이 동작합니다.
-
CloudFormation에서 메타데이터 가져오기 및 구문 분석
-
패키지 설치
-
디스크에 파일 쓰기
-
서비스 활성화/비활성화 및 시작/중지
참고
cfn-init를 사용하여 기존 파일을 업데이트하는 경우 동일한 디렉터리에 원본 파일의 백업 사본이 .bak라는 확장명으로 생성됩니다. 예를 들어, /
을 업데이트하면 이 작업에서는 다음과 같은 파일 2개를 생성합니다. path
/to
/file_name
/
파일에는 원본 파일의 내용이 들어 있고, path
/to
/file_name
.bak/
파일에는 업데이트된 내용이 들어 있습니다.path
/to
/file_name
템플릿 메타데이터에 대한 자세한 내용은 AWS::CloudFormation::Init 단원을 참조하십시오.
참고
cfn-init에는 자격 증명이 필요 없기 때문에 --access-key
, --secret-key
, --role
또는 --credential-file
옵션을 사용할 필요가 없습니다. 그러나 자격 증명을 지정하지 않으면 CloudFormation이 스택 멤버십을 확인하고 해당 인스턴스가 속한 스택에 대한 호출 범위를 제한합니다.
구문
cfn-init --stack|-s
stack.name.or.id
\ --resource|-rlogical.resource.id
\ --regionregion
\ --access-keyaccess.key
\ --secret-keysecret.key
\ --rolerolename
\ --credential-file|-fcredential.file
\ --configsets|-cconfig.sets
\ --url|-uservice.url
\ --http-proxyHTTP.proxy
\ --https-proxyHTTPS.proxy
\ --verbose|-v
옵션
명칭 | 설명 | 필수 |
---|---|---|
|
스택 이름 또는 스택 ID입니다. 유형: 문자열 기본값: 없음 예: |
예 |
|
메타데이터가 포함된 리소스의 논리적 리소스 ID입니다. 유형: 문자열 예: |
예 |
|
사용할 CloudFormation 리전 엔드포인트입니다. 유형: 문자열 기본값: 예제: |
아니요 |
|
CloudFormation에서 유형: 문자열 |
아니요 |
|
지정된 AWS 액세스 키에 해당하는 AWS 보안 암호 액세스 키입니다. 유형: 문자열 |
아니요 |
|
인스턴스와 연결되는 IAM 역할의 이름입니다. 유형: 문자열 조건: 자격 증명 파일 파라미터가 이 파라미터를 대신합니다. |
아니요 |
|
보안 액세스 키 및 액세스 키가 둘 다 포함된 파일입니다. 자격 증명 파일 파라미터는 --role, --access-key 및 --secret-key 파라미터를 대신합니다. 유형: 문자열 |
아니요 |
|
(순서대로) 실행할 configset의 쉼표로 구분된 목록입니다. 유형: 문자열 기본값: |
아니요 |
|
사용할 CloudFormation 엔드포인트입니다. 유형: 문자열 |
아니요 |
|
HTTP 프록시입니다(비 SSL). 다음 형식을 사용합니다. 유형: 문자열 |
아니요 |
|
HTTPS 프록시입니다. 다음 형식을 사용합니다. 유형: 문자열 |
아니요 |
|
상세 정보 표시 출력입니다. 이 옵션은 cfn-init가 초기화에 실패하는 사례를 디버깅하는 데 유용합니다. 참고초기화 이벤트를 디버깅하려면 DisableRollback을 켜야 합니다. CloudFormation 콘솔을 사용하고 Show Advanced Options(고급 옵션 표시)를 선택한 다음 Rollback on failure(실패 시 롤백)를 No(아니요)로 설정하여 이 작업을 수행할 수 있습니다. 그런 다음 콘솔에 SSH로 연결하고 /var/log/cfn-init.log에서 로그를 읽을 수 있습니다. |
아니요 |
|
도움말 메시지를 표시한 후 종료합니다. |
아니요 |
예
Amazon Linux 예제
다음 코드 조각은 UserData
리소스와 연결된 InstallAndRun
configset를 실행하는 EC2 인스턴스의 WebServerInstance
속성을 보여줍니다.
전체 예제 템플릿은 Amazon EC2에 애플리케이션 배포 단원을 참조하십시오.
최신 버전을 포함시키려면 UserData
에 yum 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} - {}