

새로운 *CloudFormation 템플릿 참조 안내서*입니다. 북마크와 링크를 업데이트하세요. CloudFormation을 시작하는 데 도움이 필요한 경우 [AWS CloudFormation 사용 설명서](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)를 참조하세요.

# cfn-init
<a name="cfn-init"></a>

CloudFormation 템플릿에서 Amazon EC2 리소스의 `Metadata` 섹션에 있는 `AWS::CloudFormation::Init`를 사용하여 초기화 태스크를 정의할 수 있습니다. 자세한 내용은 [`AWS::CloudFormation::Init`](aws-resource-init.md) 섹션을 참조하세요.

`cfn-init` 헬퍼 스크립트는 `AWS::CloudFormation::Init` 키에서 템플릿 메타데이터를 읽고 이에 따라 다음과 같이 동작합니다.
+ CloudFormation에서 메타데이터 가져오기 및 구문 분석
+ 패키지 설치
+ 디스크에 파일 쓰기
+ 서비스 활성화/비활성화 및 시작/중지

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

헬퍼 스크립트를 처음 사용하는 경우, *AWS CloudFormation 사용 설명서*의 [Amazon EC2에서 애플리케이션 배포](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/deploying.applications.html) 자습서를 먼저 완료하는 것이 좋습니다.

**Topics**
+ [구문](#cfn-init-Syntax)
+ [옵션](#cfn-init-options)
+ [예제](#cfn-init-examples)
+ [관련 리소스](#cfn-init-related-resources)

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

## 구문
<a name="cfn-init-Syntax"></a>

```
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이 스택 멤버십을 확인하고 해당 인스턴스가 속한 스택에 대한 호출 범위를 제한합니다. 자세한 내용은 [헬퍼 스크립트에 대한 권한](cfn-helper-scripts-reference.md#cfn-helper-scripts-reference-permissions) 섹션을 참조하세요.

## 옵션
<a name="cfn-init-options"></a>


| 이름 | 설명 | 필수 | 
| --- | --- | --- | 
|  `-s, --stack`  | 스택 이름 또는 스택 ID입니다.<br />*유형*: 문자열<br />*기본값*: 없음<br />*예*: `--stack { "Ref" : "AWS::StackName" },` | 예 | 
|  `-r, --resource `  | 메타데이터가 포함된 리소스의 논리적 리소스 ID입니다.<br />*유형*: 문자열<br />*예*: `--resource WebServerHost` | 예 | 
|  `--region`  | 사용할 CloudFormation 리전 엔드포인트입니다.<br />*유형*: 문자열<br />*기본값*: `us-east-1`<br />*예제*: `--region ", { "Ref" : "AWS::Region" },` | 아니요 | 
|  `--access-key`  | CloudFormation에서 `DescribeStackResource`를 호출할 권한이 있는 계정의 AWS 액세스 키입니다. 자격 증명 파일 파라미터가 이 파라미터를 대신합니다.<br />*유형*: 문자열 | 아니요 | 
|  `--secret-key`  | 지정된 AWS 액세스 키에 해당하는 AWS 보안 암호 액세스 키입니다.<br />*유형*: 문자열 | 아니요 | 
|  `--role`  | 인스턴스와 연결되는 IAM 역할의 이름입니다.<br />*유형*: 문자열<br />조건: 자격 증명 파일 파라미터가 이 파라미터를 대신합니다. | 아니요 | 
|  `-f, --credential-file`  | 보안 액세스 키 및 액세스 키가 둘 다 포함된 파일입니다. 자격 증명 파일 파라미터는 --role, --access-key 및 --secret-key 파라미터를 대신합니다.<br />*유형*: 문자열 | 아니요 | 
|  `-c, --configsets`  | (순서대로) 실행할 configset의 쉼표로 구분된 목록입니다.<br />*유형*: 문자열<br />*기본값*: `default` | 아니요 | 
|  `-u, --url`  | 사용할 CloudFormation 엔드포인트입니다.<br />*유형*: 문자열 | 아니요 | 
| `--http-proxy` | HTTP 프록시입니다(비 SSL). 다음 형식을 사용합니다. `http://{{user:password}}@{{host}}:{{port}}` <br />*유형*: 문자열 | 아니요 | 
| `--https-proxy` | HTTPS 프록시입니다. 다음 형식을 사용합니다. `https://{{user:password}}@{{host}}:{{port}}` <br />*유형*: 문자열 | 아니요 | 
| `-v, --verbose` | 상세 정보 표시 출력입니다. 이 옵션은 `cfn-init`가 초기화에 실패하는 사례를 디버깅하는 데 유용합니다. 초기화 이벤트를 디버깅하려면 `DisableRollback`을 켜야 합니다. 그런 다음 콘솔에 대해 SSH 접속을 수행하고 `/var/log/cfn-init.log`에서 로그를 읽습니다. 자세한 내용은 *AWS CloudFormation 사용 설명서*의 [리소스 프로비저닝 시 실패 처리 방법 선택](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stack-failure-options.html)을 참조하세요.  | 아니요 | 
| `-h, --help` | 도움말 메시지를 표시한 후 종료합니다. | 아니요 | 

## 예제
<a name="cfn-init-examples"></a>

### Amazon Linux 예제
<a name="w2aac32c27c21b3"></a>

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

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

#### JSON
<a name="cfn-init-example.json"></a>

`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
<a name="cfn-init-example.yaml"></a>

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

```
UserData:
  Fn::Base64: !Sub |
    #!/bin/bash -xe
    yum update -y aws-cfn-bootstrap
    # Install the files and packages from the metadata
    /opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource WebServerInstance --configsets InstallAndRun --region ${AWS::Region}
```

## 관련 리소스
<a name="cfn-init-related-resources"></a>

샘플 템플릿을 사용한 자습서는 *AWS CloudFormation 사용 설명서*의 [Amazon EC2에서 애플리케이션 배포](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/deploying.applications.html)를 참조하세요.

Windows 예시는 *AWS CloudFormation 사용 설명서*의 [Windows 기반 CloudFormation 스택 부트스트래핑](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-windows-stacks-bootstrapping.html)을 참조하세요.

또한 GitHub 리포지토리를 방문하여 다음 템플릿을 포함하여 `cfn-init`를 사용하는 [샘플 템플릿](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html#sample-templates)을 다운로드할 수 있습니다.
+  [InstanceWithCfnInit.yaml](https://github.com/aws-cloudformation/aws-cloudformation-templates/blob/main/EC2/InstanceWithCfnInit.yaml) 
+  [AutoScalingRollingUpdates.yaml](https://github.com/aws-cloudformation/aws-cloudformation-templates/blob/main/AutoScaling/AutoScalingRollingUpdates.yaml) 

`cfn-init`를 사용하는 LAMP 스택 템플릿은 GitHub 웹 사이트의 [ec2-lamp-server](https://github.com/aws-samples/ec2-lamp-server)를 참조하세요.