

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 속성
<a name="workingcookbook-installingcustom-components-attributes"></a>

**중요**  
이 AWS OpsWorks Stacks 서비스는 2024년 5월 26일에 수명이 종료되었으며 신규 및 기존 고객 모두에서 비활성화되었습니다. 가능한 한 빨리 워크로드를 다른 솔루션으로 마이그레이션하는 것이 좋습니다. 마이그레이션에 대한 질문이 있는 경우 [AWS re:Post](https://repost.aws/) 또는 [AWS Premium Support](https://aws.amazon.com/support)를 통해 AWS Support 팀에 문의하세요.

레시피 및 템플릿은 구성 설정과 같은 다양한 값을 기반으로 합니다. 이러한 값을 레시피 또는 템플릿에서 직접 하드코딩하지 않고 속성이 각 값을 나타내는 속성 파일을 생성할 수 있습니다. 그런 다음 레시피 또는 템플릿에 명시적 값 대신 속성을 사용합니다. 속성을 사용하는 장점은 쿡북을 손대지 않고 해당 값을 재정의할 수 있다는 점입니다. 이러한 이유 때문에 다음 유형의 값은 항상 속성을 사용하여 정의해야 합니다.
+ 사용자 이름 같이 스택마다 또는 시간 경과에 따라 바뀔 수 있는 값.

  이러한 값을 하드코딩할 경우 값을 바꿔야 할 때마다 레시피 또는 템플릿을 변경해야 합니다. 속성을 사용하여 이러한 값을 정의하면 동일한 쿡북을 모든 스택에서 사용하고 해당 속성만 재정의할 수 있습니다.
+ 암호 또는 보안 키 같은 중요한 값.

  쿡북에 중요한 값을 명시적으로 삽입한다면 노출 위험이 증가할 수 있습니다. 그 대신 더미 값으로 속성을 정의한 후 재정의하여 실제 값을 설정하세요. 이러한 속성을 재정의하는 최상의 방법은 사용자 지정 JSON입니다. 자세한 내용은 [사용자 지정 JSON 사용](workingcookbook-json-override.md) 섹션을 참조하세요.

속성과 속성 재정의 방법에 대한 자세한 정보는 [속성 재정의](workingcookbook-attributes.md) 단원을 참조하세요.

다음은 예제 속성 파일의 한 부분입니다.

```
...
default["apache"]["listen_ports"] = [ '80','443' ]
default["apache"]["contact"] = 'ops@example.com'
default["apache"]["timeout"] = 120
default["apache"]["keepalive"] = 'Off'
default["apache"]["keepaliverequests"] = 100
default["apache"]["keepalivetimeout"] = 3
default["apache"]["prefork"]["startservers"] = 16
default["apache"]["prefork"]["minspareservers"] = 16
default["apache"]["prefork"]["maxspareservers"] = 32
default["apache"]["prefork"]["serverlimit"] = 400
default["apache"]["prefork"]["maxclients"] = 400
default["apache"]["prefork"]["maxrequestsperchild"] = 10000
...
```

 OpsWorks Stacks는 다음 구문을 사용하여 속성을 정의합니다.

```
node.type["attribute"]["subattribute"]["..."]=value
```

다음과 같이 콜론(:)을 사용할 수도 있습니다.

```
node.type[:attribute][:subattribute][:...]=value
```

속성 정의에는 다음의 구성 요소가 있습니다.

## `node.`
<a name="node"></a>

`node.` 접두사는 예제에 나와 있는 것과 같이 선택 항목이며 일반적으로 생략됩니다.

## `type`
<a name="type"></a>

유형은 속성을 재정의할 수 있는지 여부를 제어합니다. OpsWorks Stacks 속성은 일반적으로 다음 유형 중 하나를 사용합니다.
+ `default`는 속성 재정의를 허용하기 때문에 가장 자주 사용되는 유형입니다.
+ `normal`는 표준 OpsWorks Stacks 속성 값 중 하나를 재정의하는 속성을 정의합니다.

**참고**  
Chef는 OpsWorks Stacks에는 필요하지 않지만 프로젝트에 유용할 수 있는 추가 유형을 지원합니다. 자세한 정보는 [속성 정보](http://docs.chef.io/attributes.html)를 참조하세요.

## `attribute name`
<a name="attribute-name"></a>

속성 이름은 표준 Chef 노드 구문 `[:attribute][:subattribute][...]`을 사용합니다. 속성에 원하는 이름을 사용할 수 있습니다. 그러나 [속성 재정의](workingcookbook-attributes.md) 단원에서 설명한 것처럼 사용자 지정 쿡북 속성은 스택 구성 및 배포 속성과 Chef의 [Ohai 도구](https://docs.chef.io/ohai.html)의 속성과 함께 인스턴스의 노드 객체로 병합됩니다. *port* 또는 *user*와 같이 흔히 사용되는 구성 이름은 여러 쿡북에서 나타날 수 있습니다.

이름 충돌을 방지하기 위한 규칙은 예제에 나와 있듯이 2개 이상의 요소를 포함하여 한정된 속성 이름을 생성하는 것입니다. 첫 번째 요소는 고유해야 하며 일반적으로 *Apache* 같은 제품 이름을 기반으로 합니다. 그 뒤에는 특정 값을 식별하는 하나 이상의 하위 속성이 옵니다. 예: `[:user]` 또는 `[:port]`. 프로젝트에 따라 원하는 만큼 여러 개의 하위 속성을 사용할 수 있습니다.

## `value`
<a name="value"></a>

속성은 다음 유형의 값으로 설정될 수 있습니다.
+ 문자열, 예: `default[:apache][:keepalive] = 'Off'`.
+ 숫자(따옴표 없음), 예: `default[:apache][:timeout] = 120`.
+ 부울 값 `true` 또는 `false`(따옴표 없음).
+ 값 목록, 예: `default[:apache][:listen_ports] = [ '80','443' ]`

속성 파일은 Ruby 애플리케이션이므로 노드 구문 및 논리 연산자도 사용할 수 있고 다른 속성을 기반으로 값을 할당할 수도 있습니다. 속성을 정의하는 방법에 대한 자세한 정보는 [속성 정보](https://docs.chef.io/chef_overview_attributes.html)를 참조하세요. 작동 속성 파일의 예는 OpsWorks [https://github.com/aws/opsworks-cookbooks](https://github.com/aws/opsworks-cookbooks) Stacks 내장 쿡북을 참조하세요.