

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# ステップ 3: カスタムクックブックを作成してデプロイする
<a name="using-s3-cookbook"></a>

**重要**  
この AWS OpsWorks Stacks サービスは 2024 年 5 月 26 日にサポート終了となり、新規および既存のお客様の両方で無効になっています。できるだけ早くワークロードを他のソリューションに移行することを強くお勧めします。移行についてご質問がある場合は、[AWS re:Post](https://repost.aws/) または[AWS プレミアムサポート](https://aws.amazon.com/support)を通じて AWS サポート チームにお問い合わせください。

スタックは、まだ完全には準備できていません。
+ アプリケーションが MySQL データベースサーバーと Amazon S3 バケットにアクセスするためには、データベースのホスト名や Amazon S3 バケット名などの情報が必要です。
+ MySQL データベースサーバーにデータベースをセットアップし、写真のメタデータを保持するためのテーブルを作成する必要があります。

これらのタスクは手動で処理できますが、Chef *レシピ*を実装し、適切なインスタンスで OpsWorks スタックでレシピを自動的に実行することをお勧めします。Chef レシピは、 OpsWorks スタックがパッケージのインストールや設定ファイルの作成などのタスクをインスタンスで実行するために使用する特殊な 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` というテンプレートファイルが含まれています。

`appsetup.rb` レシピは、アプリケーションがデータベースおよび Amazon S3バケットにアクセスするために必要となる情報を含む設定ファイルを作成します。これは基本的に [アプリケーションをデータベースに接続する](gettingstarted-db-recipes.md#gettingstarted-db-recipes-appsetup) で説明した `appsetup.rb` レシピを軽微に修正したものです。主な違いはテンプレートに渡される変数であり、これらはアクセス情報を表します。

最初の 4 つの属性はデータベース接続設定を定義し、MySQL インスタンスの作成時に OpsWorks スタックによって自動的に定義されます。

これらの変数には、元のレシピの変数と異なる点が 2 つあります。
+ 元のレシピと同じように、`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 スタックは、後述するように、適切なライフサイクルイベントが発生したときにキャッシュされたレシピを実行します。

**photoapp クックブックをデプロイするには**

1.  OpsWorks スタック**スタック**ページで、**スタック設定**を選択し、**編集**を選択します。

1. [**Configuration Management**] セクションで、次のように設定します。
   + [**Use custom Chef cookbooks**] を [**Yes**] に設定します。
   + [**Repository type**] を Git に設定します。
   + **Repository URL** を **git://github.com/amazonwebservices/opsworks-example-cookbooks.git** に設定します。

1. **[Stack]** (スタックスタック) ページで **[Run Command]** (コマンドの実行) を選択し、**[Update Custom Cookbooks]** (カスタムクックブックの更新) スタックコマンドを選択します。次に、**[Update Custom Cookbooks]** (カスタムクックブックの更新) を選択して、インスタンス クックブックキャッシュに新しいクックブックをインストールします。  
![\[Run Command interface showing Update Custom Cookbooks option and instance selection.\]](http://docs.aws.amazon.com/ja_jp/opsworks/latest/userguide/images/redis_walkthrough_command.png)