

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

# 3단계: 사용자 지정 쿡북 생성 및 배포
<a name="using-s3-cookbook"></a>

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

스택은 아직 준비되지 않았습니다.
+ 애플리케이션이 MySQL 데이터베이스 서버와 Amazon S3 버킷에 액세스하려면 데이터베이스 호스트 이름과 Amazon S3 버킷 이름 같은 몇 가지 정보가 필요합니다.
+ MySQL 데이터베이스 서버에서 데이터베이스를 설정하고 사진의 메타데이터를 보관할 테이블을 생성해야 합니다.

이러한 작업을 수동으로 처리할 수 있지만 더 나은 방법은 Chef *레시피*를 구현하고 OpsWorks Stacks가 적절한 인스턴스에서 레시피를 자동으로 실행하도록 하는 것입니다. Chef 레시피는 OpsWorks Stacks가 패키지 설치 또는 구성 파일 생성과 같은 인스턴스 작업을 수행하는 데 사용하는 특수 Ruby 애플리케이션입니다. 이 작업들은 여러 레시피와 구성 파일 템플릿 같은 관련 파일을 포함할 수 있는 *쿡북*에 패키징되어 있습니다. 쿡북은 GitHub 같은 레포지토리에 배치되며, 표준 디렉터리 구조를 가져야 합니다. 사용자 지정 쿡북 리포지토리가 없는 경우, [쿡북 리포지토리](workingcookbook-installingcustom-repo.md)에서 설정 방법 단원을 참조하세요.

이 예제에서는 쿡북이 구현되어 [퍼블릭 GitHub 리포지토리](https://github.com/amazonwebservices/opsworks-example-cookbooks/tree/master/photoapp)에 저장되어 있습니다. 이 쿡북에는 `appsetup.rb`와 `dbsetup.rb`라는 2개의 레시피와 `db-connect.php.erb`라는 1개의 템플릿 파일이 포함되어 있습니다.

`appsetup.rb` 레시피는 애플리케이션이 데이터베이스와 Amazon S3 버킷에 액세스하는 데 필요한 정보가 포함된 구성 파일을 생성합니다. 이것은 기본적으로 [데이터베이스에 애플리케이션 연결](gettingstarted-db-recipes.md#gettingstarted-db-recipes-appsetup)에 설명된 `appsetup.rb` 레시피를 약간 수정한 버전입니다. 주된 차이점은 템플릿에 전달되는 변수이며, 액세스 정보를 나타냅니다.

처음 4개의 속성은 데이터베이스 연결 설정을 정의하고 MySQL 인스턴스를 생성할 때 OpsWorks Stacks에서 자동으로 정의합니다.

이 변수들과 오리지널 레시피의 변수들 사이에는 다음 두 가지 차이점이 있습니다.
+ `table`오리지널 레시피와 마찬가지로 변수는 `dbsetup.rb`에 의해 생성되는 데이터베이스 테이블의 이름을 나타내며, 쿡북의 속성 파일에서 정의되는 속성의 값으로 설정됩니다.

  다만 속성의 이름은 `[:photoapp][:dbtable]`로 다릅니다.
+ `s3bucket` 변수는 이 예제에 고유한 것으로서 Amazon S3 버킷 이름을 나타내는 속성의 값인 `[:photobucket]`(으)로 설정됩니다.

   `[:photobucket]`은(는) 뒤에 설명하는 것처럼 사용자 지정 JSON을 사용하여 정의됩니다. 속성에 대한 자세한 정보는 [속성](workingcookbook-installingcustom-components-attributes.md)을(를) 참조하세요.

속성에 대한 자세한 정보는 [속성](workingcookbook-installingcustom-components-attributes.md)을(를) 참조하세요.

`dbsetup.rb` 레시피는 각 사진의 메타데이터를 보관하는 데이터베이스 테이블을 설정합니다. 이것은 기본적으로 `dbsetup.rb`에 설명된 [데이터베이스 설정](gettingstarted-db-recipes.md#gettingstarted-db-recipes-dbsetup) 레시피를 약간 수정한 버전입니다. 자세한 설명은 해당 주제를 참조하세요.

이 예제와 오리지널 레시피의 유일한 차이점인 데이터베이스 스키마에는 Amazon S3 버킷에 저장된 각 사진의 ID, URL, 캡션이 포함된 3개의 열이 있습니다.

레시피가 이미 구현되어 있으므로 나중에 설명하듯이 각 인스턴스의 쿡북 캐시에 포토앱 쿡북을 배포하기만 하면 됩니다. 그러면 OpsWorks Stacks는 적절한 수명 주기 이벤트가 발생할 때 캐시된 레시피를 실행합니다.

**photoapp 쿡북을 배포하려면**

1.  OpsWorks 스택 **스택** 페이지에서 **스택 설정을** 선택한 다음 **편집**을 선택합니다.

1. [**구성 관리**] 섹션에서:
   + [**사용자 지정 Chef 쿡북 사용**]을 [**예**]로 설정합니다.
   + [**리포지토리 유형**]을 Git로 설정합니다.
   + **리포지토리 URL**을 **git://github.com/amazonwebservices/opsworks-example-cookbooks.git**로 설정합니다.

1. **스택** 페이지에서 **명령 실행**을 선택하고 **사용자 지정 쿡북 업데이트(사용자 지정 쿡북 업데이트)** 스택 명령을 선택한 다음 **사용자 지정 쿡북 업데이트(사용자 지정 쿡북 업데이트)**를 선택하여 인스턴스 쿡북 캐시에 새 쿡북을 설치합니다.  
![\[Run Command interface showing Update Custom Cookbooks option and instance selection.\]](http://docs.aws.amazon.com/ko_kr/opsworks/latest/userguide/images/redis_walkthrough_command.png)