

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

# 属性からデータバッグへのスタック設定の移行
<a name="attributes-to-data-bags"></a>

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

OpsWorks スタックは、さまざまなスタック設定を Chef レシピに公開します。これらのスタック設定には、次のような値が含まれます。
+ スタッククックブックのソース URL
+ レイヤーボリューム設定
+ インスタンスのホスト名
+ Elastic Load Balancing DNS名
+ アプリケーションソースの URL
+ ユーザー名

レシピからスタックの設定を参照すると、スタック設定を直接レシピでハードコードするよりも堅牢になり、エラーが起きにくくなります。このトピックでは、これらのスタック設定にアクセスする方法、および Linux 用の Chef 11.10 以前のバージョンの属性から Chef 12 Linux のデータバッグに移行する方法について説明します。

Linux 用の Chef 11.10 以前のバージョンでは、スタック設定は [Chef 属性](https://docs.chef.io/attributes.html)として利用でき、Chef `node` オブジェクトまたは Chef 検索によってアクセスします。これらの属性は、 `/var/lib/aws/opsworks/chef` ディレクトリ内の一連の JSON ファイルの OpsWorks スタックインスタンスに保存されます。詳細については、「[スタック設定およびデプロイ属性: Linux](attributes-json-linux.md)」を参照してください。

Chef 12 Linux で、スタック設定は、[Chef データバッグ](https://docs.chef.io/data_bags.html)として使用でき、Chef 検索を通じてのみアクセスされます。データバッグは、 `/var/chef/runs/run-ID/data_bags` ディレクトリ内の一連の JSON ファイルの OpsWorks スタックインスタンスに保存されます。*run-ID* は、インスタンスで実行される各 Chef OpsWorks に スタックが割り当てる一意の ID です。スタック設定は、現在では Chef 属性として利用できないので、Chef `node` オブジェクトを通じてスタック設定にアクセスすることはできません。詳細については、を参照してください[OpsWorks スタックデータバッグリファレンス](data-bags.md)

たとえば、Linux 用の Chef 11.10 以前のバージョンでは、次のレシピコードで Chef `node` オブジェクトを使用して、アプリケーションの短縮名およびソース URL を表す属性を取得します。次に、Chef ログを使用してこれら 2 つの属性値を書き込みます。

```
Chef::Log.info ("********** The app's short name is '#{node['opsworks']['applications'].first['slug_name']}' **********")
Chef::Log.info("********** The app's URL is '#{node['deploy']['simplephpapp']['scm']['repository']}' **********")
```

Chef 12 Linux では、次のレシピコードで `aws_opsworks_app` 検索インデックスを使用して、`aws_opsworks_app` データバッグの最初のデータバッグ項目のコンテンツを取得します。次に、コードは、Chef ログに 2 つのメッセージを書き込みます。1 つはアプリケーションの短縮名のデータバッグコンテンツで、もう 1 つはアプリケーションのソース URL データバッグのコンテンツです。

```
app = search("aws_opsworks_app").first

Chef::Log.info("********** The app's short name is '#{app['shortname']}' **********")
Chef::Log.info("********** The app's URL is '#{app['app_source']['url']}' **********")
```

Linux 用 Chef 11.10 以前のバージョンからスタック設定にアクセスするレシピコードを Chef 12 Linux に移行するには、次のようにコードを変更する必要があります。
+ Chef 属性の代わりに Chef データバッグにアクセスします。
+ Chef `node` オブジェクトの代わりに Chef 検索を使用します。
+ `opsworks` や などの OpsWorks スタック属性名を使用する代わりに`aws_opsworks_app`、 などの OpsWorks スタックデータバッグ名を使用します`deploy`。

詳細については、「[OpsWorks スタックデータバッグリファレンス](data-bags.md)」を参照してください。