

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

# 12단계: 사용자 지정 JSON을 사용하도록 쿡북 업데이트
<a name="gettingstarted-cookbooks-custom-json"></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 형식으로 정보를 지정할 수 있습니다. 이것은 예컨대 데이터베이스에서 데이터를 가져오는 대신 데이터 중 작고 변하지 않는 부분을 인스턴스에서 레시피가 사용할 수 있도록 만드는 데 유용합니다. 자세한 내용은 [사용자 지정 JSON 사용](workingstacks-json.md) 단원을 참조하십시오.

이 안내서에서는 사용자 지정 JSON을 사용하여 고객 인보이스에 대한 몇 가지 가상 정보를 제공합니다. 사용자 지정 JSON은 이 단계 뒷부분에서 설명합니다.

**인스턴스에서 쿡북을 업데이트하고 새 레시피를 실행하려면**

1. 로컬 워크스테이션에서 다음 레시피 코드를 사용하여 `recipes` 디렉터리의 `opsworks_cookbook_demo` 하위 디렉터리에 `custom_json.rb` 파일을 생성합니다.

   ```
   Chef::Log.info("********** For customer '#{node['customer-id']}' invoice '#{node['invoice-number']}' **********")
   Chef::Log.info("********** Invoice line number 1 is a '#{node['line-items']['line-1']}' **********")
   Chef::Log.info("********** Invoice line number 2 is a '#{node['line-items']['line-2']}' **********")
   Chef::Log.info("********** Invoice line number 3 is a '#{node['line-items']['line-3']}' **********")
   ```

   이 레시피는 로그에 사용자 지정 JSON의 값에 대한 메시지를 표시합니다.

1. 터미널 또는 명령 프롬프트에서 **tar** 명령을 사용하여 `opsworks_cookbook_demo` 디렉터리와 업데이트된 내용 포함된 `opsworks_cookbook_demo.tar.gz` 파일의 새 버전을 만듭니다.

1. 업데이트된 `opsworks_cookbook_demo.tar.gz` 파일을 S3 버킷에 업로드합니다.

1. [5단계: 인스턴스에서 쿡북을 업데이트하고 레시피 실행](gettingstarted-cookbooks-copy-cookbook.md) 단원의 절차에 따라 인스턴스에서 쿡북을 업데이트하고 레시피를 실행합니다. "레시피 실행" 절차에서 **실행할 레시피**에 **opsworks\$1cookbook\$1demo::custom\$1json**를 입력합니다. [**고급**]의 [**사용자 지정 Chef JSON**]에는 다음 사용자 지정 JSON을 입력합니다.

   ```
   {
     "customer-id": "0123",
     "invoice-number": "9876",
     "line-items": {
       "line-1": "tractor",
       "line-2": "passenger car",
       "line-3": "trailer"
     }
   }
   ```

**레시피를 테스트하려면**

1. 이전 절차의 [**execute\$1recipes 명령 실행 중**] 페이지가 표시된 상태에서 [**cookbooks-demo1**]의 [**로그**]에 대해 [**표시**]를 선택합니다. [**execute\$1recipes**] 로그 페이지가 표시됩니다.

1. 로그를 아래로 스크롤하면서 다음과 유사한 항목을 찾습니다.

   ```
   [2015-11-14T14:18:30+00:00] INFO: ********** For customer '0123' invoice '9876' **********
   [2015-11-14T14:18:30+00:00] INFO: ********** Invoice line number 1 is a 'tractor' **********
   [2015-11-14T14:18:30+00:00] INFO: ********** Invoice line number 2 is a 'passenger car' **********
   [2015-11-14T14:18:30+00:00] INFO: ********** Invoice line number 3 is a 'trailer' **********
   ```

   이러한 항목에는 [**고급**]의 [**사용자 지정 Chef JSON**] 상자에 입력한 사용자 지정 JSON의 정보가 표시됩니다.

[다음 단계에서](gettingstarted-cookbooks-data-bags.md)는 Stacks가 각 인스턴스에 저장하는 스택 설정 모음인 데이터 백에서 정보를 가져오도록 OpsWorks 쿡북을 업데이트합니다.