

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

# データベース接続をセットアップする方法
<a name="customizing-rds-setup"></a>

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

カスタムレシピを使用して、アプリケーションサーバーとバックエンドデータベース間の接続をセットアップします。レシピによりアプリケーションサーバーが必要に応じて設定されます。通常、設定ファイルを作成して設定されます。レシピは、スタックがすべてのインスタンスに OpsWorks インストールする[スタック設定およびデプロイ属性](workingcookbook-json.md)の一連の属性から、ホストやデータベース名などの接続データを取得します。

例えば、[Chef 11 Linux スタックの使用開始](gettingstarted.md) のステップ 2 は、2 つのレイヤー(それぞれに 1 つのインスタンスを含む PHP App Server および MySQL) がある MyStack という名前のスタックに基づいています。SimplePHPApp という名前のアプリケーションを PHP App Server インスタンスにデプロイし、バックエンドデータストアとして MySQL インスタンスでデータベースを使用します。アプリケーションをデプロイすると、 OpsWorks スタックによって、データベース接続情報を含むスタック設定およびデプロイ属性がインストールされます。以下の例は、JSON として表されたデータベース接続属性を示しています。

```
{
  ...
  "deploy": {
    "simplephpapp": {
      ...
      "database": {
        "reconnect": true,
        "password": null,
        "username": "root",
        "host": null,
        "database": "simplephpapp"
        ...
      },
      ...
    }
  }
}
```

属性値は OpsWorks スタックによって提供され、生成されるか、ユーザーが提供した情報に基づいています。

SimplePHPApp がデータストアにアクセスするのを許可するには、`appsetup.rb` という名前のカスタムレシピを レイヤーのデプロイ [[lifecycle event]](workingcookbook-events.md) (ライフサイクルイベント) に割り当てることで、PHP アプリケーションサーバーと MySQL データベース間の接続を設定する必要があります。SimplePHPApp をデプロイすると、 OpsWorks Stacks は を実行し`appsetup.rb`、次の抜粋に示すように、接続`db-connect.php`を設定する という名前の設定ファイルを作成します。

```
node[:deploy].each do |app_name, deploy|
  ...
  template "#{deploy[:deploy_to]}/current/db-connect.php" do
    source "db-connect.php.erb"
    mode 0660
    group deploy[:group]

    if platform?("ubuntu")
      owner "www-data"
    elsif platform?("amazon")   
      owner "apache"
    end

    variables(
      :host =>     (deploy[:database][:host] rescue nil),
      :user =>     (deploy[:database][:username] rescue nil),
      :password => (deploy[:database][:password] rescue nil),
      :db =>       (deploy[:database][:database] rescue nil),
      :table =>    (node[:phpapp][:dbtable] rescue nil)
    )
    ...
  end
end
```

接続を特徴づける変数 `host`、`user` などには、[deploy JSON's](workingcookbook-json.md#workingcookbook-json-deploy) (JSON をデプロイする) `[:deploy][:app_name][:database]` 属性から対応する値が設定されます｡ わかりやすいように、この例では、`urler` という名前のテーブルが作成されており、そのテーブル名はクックブックの属性ファイルでは `[:phpapp][:dbtable]` で表されることを前提としていまします。

このレシピにより、PHP アプリケーションサーバーは MySQL レイヤーのメンバーだけでなく任意の MySQL データベースサーバーに実際に接続されます。別の MySQL サーバーを使用するには、`[:database]`属性をサーバーに適した値に設定する必要があります。これを行うには、[カスタム JSON](workingstacks-json.md) を使用します。 OpsWorks スタックは、これらの属性と値をスタック設定とデプロイ属性に組み込み、それら`appsetup.rb`を使用して接続を設定するテンプレートを作成します。スタック設定およびデプロイメント JSON の上書きの詳細については、「[属性の上書き](workingcookbook-attributes.md)」を参照してください。