

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

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

`cfn-hup` 헬퍼는 리소스 메타데이터의 변경 사항을 감지하고 변경 사항이 감지되면 사용자 지정 작업을 실행하는 대몬(daemon)입니다. 따라서 `UpdateStack` API 작업을 통해 실행 중인 Amazon EC2 인스턴스에 대한 구성 업데이트를 수행할 수 있습니다.

자세한 내용을 알아보려면 *AWS CloudFormation 사용 설명서*의 [CloudFormation 스택 업데이트](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/updating.stacks.walkthrough.html)를 참조하세요.

**Topics**
+ [구문](#cfn-hup-Syntax)
+ [옵션](#cfn-hup-options)
+ [cfn-hup.conf 구성 파일](#cfn-hup-config-file)
+ [`hooks.conf` 구성 파일](#cfn-hup-hook-file)
+ [`hooks.d` 디렉터리](#cfn-hup-hooks-dir)
+ [예제](#cfn-hup-examples)
+ [관련 리소스](#cfn-hup-related-resources)

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

```
cfn-hup --config|-c config.dir \
        --no-daemon \
        --verbose|-v
```

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


| 이름 | 설명 | 필수 | 
| --- | --- | --- | 
|   `--config\|-c config.dir`   |  `cfn-hup` 스크립트가 `cfn-hup.conf` 및 `hooks.d` 디렉터리를 찾는 경로를 지정합니다. Windows에서 기본 경로는 `system_drive\cfn`입니다. Linux에서 기본 경로는 `/etc/cfn`입니다.  |  아니요  | 
|   `--no-daemon`   |  이 옵션을 지정하면 `cfn-hup` 스크립트를 한 번 실행한 다음 종료합니다.  |  아니요  | 
|   `-v, --verbose `   |  이 옵션을 지정하면 상세 정보 표시 모드를 사용합니다.  |  아니요  | 

## cfn-hup.conf 구성 파일
<a name="cfn-hup-config-file"></a>

`cfn-hup.conf` 파일은 `cfn-hup` 대몬이 대상으로 지정한 스택의 이름과 AWS 자격 증명을 저장합니다.

`cfn-hup.conf` 파일은 다음 형식을 사용합니다.

```
[main]
stack=<stack-name-or-id>
```


| 이름 | 설명 | 필수 | 
| --- | --- | --- | 
|   `stack`   |  스택 이름 또는 ID입니다. *유형*: 문자열  |  예  | 
|   `credential-file`   |  명령줄 도구에서 사용하는 것과 동일한 형식의 소유자 전용 자격 증명 파일입니다. *유형*: 문자열 *조건*: `role` 파라미터가 이 파라미터를 대신합니다.  |  아니요  | 
|   `role`   |  인스턴스와 연결되는 IAM 역할의 이름입니다. *유형*: 문자열  |  아니요  | 
|   `region`   |  스택이 포함된 AWS 리전의 이름입니다. *예*: us-east-2  |  아니요  | 
|   `umask`   |  `cfn-hup` 대몬에서 사용하는 `umask`입니다. 앞에 0을 사용하거나 사용하지 않고 이 값을 지정할 수 있습니다. 두 경우 모두 Linux `umask` 명령과 유사하게 8진수로 해석됩니다. 이 파라미터는 Windows에 영향을 미치지 않습니다. *유형*: `0`\$1`0777` 사이의 8진수 *기본값*: `022`, 버전 1.4–22 이상 `022`의 기본값은 그룹 및 세계 쓰기 권한을 마스킹하므로 `cfn-hup` 대몬으로 생성한 파일은 기본적으로 그룹 또는 세계 쓰기가 가능하지 않습니다. 버전 1.4 –21 이전의 기본값은 아무것도 마스킹하지 않는 `0`입니다.  |  아니요  | 
|   `interval`   |  리소스 메타데이터에 대한 변경 사항이 있는지 확인하는 데 사용되는 간격(분)입니다. *유형*: 정수 *기본값*: `15`  |  아니요  | 
|   `verbose`   |  상세 정보 로깅을 사용할지 여부를 지정합니다. *유형*: 부울 *기본값*: `false`  |  아니요  | 

## `hooks.conf` 구성 파일
<a name="cfn-hup-hook-file"></a>

`cfn-hup` 대몬이 정기적으로 직접적으로 호출하는 사용자 작업은 `hooks.conf` 구성 파일에서 정의됩니다. `hooks.conf` 파일은 다음 *형식*을 사용합니다.

```
[hookname]
triggers=post.add or post.update or post.remove
path=Resources.<logicalResourceId> (.Metadata or .PhysicalResourceId)(.<optionalMetadatapath>)
action=<arbitrary shell command>
runas=<runas user>
```

이 작업이 실행될 때는 (`cfn-hup`가 있는) 현재 환경의 사본에서 실행되며 `CFN_OLD_METADATA`는 path로 지정된 이전 메타데이터 값으로, `CFN_NEW_METADATA`는 현재 메타데이터 값으로 설정됩니다.

후크 구성 파일은 `cfn-hup` 대몬이 시작될 때만 로드되므로 새 후크를 사용하려면 대몬을 다시 시작해야 합니다. 이전 메타데이터 값의 캐시는 `/var/lib/cfn-hup/data/metadata_db`에 저장됩니다. 이 캐시를 삭제하여 `cfn-hup`가 모든 `post.add` 작업을 다시 실행하도록 강제할 수 있습니다.


| 이름 | 설명 | 필수 | 
| --- | --- | --- | 
|   `hookname`   |  이 후크의 고유 이름입니다. *유형*: 문자열  |  예  | 
|   `triggers`   |  감지할 조건의 쉼표로 구분된 목록입니다. *유효한 값*: `post.add`, `post.update` 또는 `post.remove` *예*: `post.add, post.update`  |  예  | 
|   `path`   |  메타데이터 객체의 경로입니다. 메타데이터 블록 내에서 임의 깊이의 경로를 지원합니다.  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AWSCloudFormation/latest/TemplateReference/cfn-hup.html)  |  예  | 
|   `action`   |  그대로 실행되는 임의 셸 명령입니다.  |  예  | 
|   `runas`   |  명령을 실행할 사용자입니다. `cfn-hup`는 su 명령을 사용하여 해당 사용자로 전환합니다.  |  예  | 

## `hooks.d` 디렉터리
<a name="cfn-hup-hooks-dir"></a>

변경 알림 후크를 배포하는 여러 애플리케이션의 구성을 지원하기 위해 `cfn-hup`에서는 후크 구성 디렉터리에 있는 `hooks.d` 디렉터리를 지원합니다. `hooks.d` 디렉터리에는 후크 구성 파일을 하나 이상 추가로 저장할 수 있습니다. 추가 후크 파일은 `hooks.conf` 파일과 동일한 레이아웃을 사용해야 합니다.

`cfn-hup` 대몬은 이 디렉터리의 각 파일을 구문 분석하고 로드합니다. `hooks.d` 디렉터리에 있는 후크가 `hooks.conf`에 있는 후크와 이름이 같으면 후크가 병합됩니다(즉, 두 파일 모두가 지정하는 모든 값에 대해 `hooks.d`가 `hooks.conf`를 덮어 씀).

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

다음 예제에서는 `LaunchConfig` 리소스와 연결된 `AWS::CloudFormation::Init` 리소스를 변경하면 CloudFormation이 `cfn-auto-reloader.conf` 후크 파일을 트리거합니다.

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

```
...
    "LaunchConfig": {
      "Type" : "AWS::AutoScaling::LaunchConfiguration",
      "Metadata" : {
        "AWS::CloudFormation::Init" : {
...
              "/etc/cfn/hooks.d/cfn-auto-reloader.conf": {
                "content": { "Fn::Join": [ "", [
                  "[cfn-auto-reloader-hook]\n",
                  "triggers=post.update\n",
                  "path=Resources.LaunchConfig.Metadata.AWS::CloudFormation::Init\n",
                  "action=/opt/aws/bin/cfn-init -v ",
                          "         --stack ", { "Ref" : "AWS::StackName" },
                          "         --resource LaunchConfig ",
                          "         --configsets wordpress_install ",
                          "         --region ", { "Ref" : "AWS::Region" }, "\n",
                  "runas=root\n"
                ]]},          
                "mode"  : "000400",
                "owner" : "root",
                "group" : "root"
              }
...
```

### YAML
<a name="cfn-hup-example.yaml"></a>

```
...
  LaunchConfig:
    Type: AWS::AutoScaling::LaunchConfiguration
    Metadata:
      AWS::CloudFormation::Init:
...
            /etc/cfn/hooks.d/cfn-auto-reloader.conf:
              content: !Sub |
                [cfn-auto-reloader-hook]
                triggers=post.update
                path=Resources.LaunchConfig.Metadata.AWS::CloudFormation::Init
                action=/opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource LaunchConfig --configsets wordpress_install --region ${AWS::Region}
                runas=root
              mode: "000400"
              owner: "root"
              group: "root"
...
```

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

또한 GitHub 리포지토리를 방문하여 다음 템플릿을 포함하여 `cfn-hup`를 사용하는 [샘플 템플릿](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) 