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라는 확장명으로 생성됩니다. 예를 들어, /
을 업데이트하면 이 작업에서는 다음과 같은 파일 2개를 생성합니다. path
/to
/file_name
/
파일에는 원본 파일의 내용이 들어 있고, path
/to
/file_name
.bak/
파일에는 업데이트된 내용이 들어 있습니다.path
/to
/file_name
구문
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
참고
cfn-init
에는 자격 증명이 필요 없기 때문에 --access-key
, --secret-key
, --role
또는 --credential-file
옵션을 사용할 필요가 없습니다. 그러나 자격 증명을 지정하지 않으면 CloudFormation이 스택 멤버십을 확인하고 해당 인스턴스가 속한 스택에 대한 호출 범위를 제한합니다. 자세한 내용은 헬퍼 스크립트에 대한 권한 단원을 참조하십시오.
옵션
명칭 | 설명 | 필수 |
---|---|---|
|
스택 이름 또는 스택 ID입니다. 유형: 문자열 기본값: 없음 예: |
예 |
|
메타데이터가 포함된 리소스의 논리적 리소스 ID입니다. 유형: 문자열 예: |
예 |
|
사용할 CloudFormation 리전 엔드포인트입니다. 유형: 문자열 기본값: 예제: |
No |
|
CloudFormation에서 유형: 문자열 |
No |
|
지정된 AWS 액세스 키에 해당하는 AWS 보안 암호 액세스 키입니다. 유형: 문자열 |
No |
|
인스턴스와 연결되는 IAM 역할의 이름입니다. 유형: 문자열 조건: 자격 증명 파일 파라미터가 이 파라미터를 대신합니다. |
No |
|
보안 액세스 키 및 액세스 키가 둘 다 포함된 파일입니다. 자격 증명 파일 파라미터는 --role, --access-key 및 --secret-key 파라미터를 대신합니다. 유형: 문자열 |
No |
|
(순서대로) 실행할 configset의 쉼표로 구분된 목록입니다. 유형: 문자열 기본값: |
No |
|
사용할 CloudFormation 엔드포인트입니다. 유형: 문자열 |
No |
|
HTTP 프록시입니다(비 SSL). 다음 형식을 사용합니다. 유형: 문자열 |
No |
|
HTTPS 프록시입니다. 다음 형식을 사용합니다. 유형: 문자열 |
No |
|
상세 정보 표시 출력입니다. 이 옵션은 참고초기화 이벤트를 디버깅하려면 |
No |
|
도움말 메시지를 표시한 후 종료합니다. |
No |
예시
Amazon Linux 예제
다음 예제는 WebServerInstance
리소스와 연결된 InstallAndRun
configset를 실행하는 EC2 인스턴스의 UserData
속성을 보여줍니다.
최신 버전을 포함시키려면 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} - {}
관련 리소스
또한 GitHub 리포지토리를 방문하여 다음 템플릿을 포함하여 cfn-init
를 사용하는 샘플 템플릿을 다운로드할 수 있습니다.
Windows 템플릿의 경우 AWS CloudFormation 사용 설명서의 Microsoft Windows 스택 템플릿 작업을 참조하세요.