

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

# カスタム JSON を使用した属性の上書き
<a name="workingcookbook-json-override"></a>

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

**注記**  
スタックは、Windows OpsWorks スタックと Linux スタックでは Chef の実行処理が異なるため、このセクションで説明する手法を Windows スタックで使用することはできません。

 OpsWorks スタック属性を上書きする最も簡単な方法は、カスタム JSON で定義することです。カスタム JSON は、スタック設定およびデプロイ属性だけでなく、組み込みおよびカスタムクックブック`default`属性よりも優先されます。詳細については、「[属性の優先順位](workingcookbook-attributes-precedence.md)」を参照してください。

**重要**  
スタック設定およびデプロイ属性を上書きする場合は注意が必要です。例えば、`opsworks` 名前空間の属性を上書きすると、組み込みのレシピに問題が生じる可能性があります。詳細については、「[スタック設定およびデプロイメント属性](workingcookbook-json.md)」を参照してください。

カスタム JSON を使用して、通常、カスタムレシピにデータを渡すために、一意の属性を定義することもできます。属性は単にノードオブジェクトに組み込まれ、レシピは標準の Chef ノード構文を使用してオブジェクトを参照できます。

## カスタム JSON を指定する方法
<a name="workingcookbook-json-override-specify"></a>

カスタム JSON を使用して属性値を上書きするには、最初に属性の完全修飾属性名を決定する必要があります。次に、上書きの対象となる、目的の値に設定された属性を含む JSON オブジェクトを作成します。わかりやすくするために、「[スタック設定およびデプロイ属性: Linux](attributes-json-linux.md)」および「[組み込みクックブックの属性](attributes-recipes.md)」に、一般的に使用されるスタック設定、デプロイ、および組み込みのクックブックの属性、およびそれらの完全修飾名がまとめられています。

オブジェクトの親子関係は、適切な完全修飾 Chef ノードに対応している必要があります。たとえば、Apache の次の属性を変更するとします。
+ ノードが `node[:apache][:keepalivetimeout]` であり、デフォルト値が `3` である [`keepalivetimeout`](attributes-recipes-apache.md#attributes-recipes-apache-keep-timeout) 属性。
+ ノードが `node[:apache][:logrotate][:schedule]` であり、デフォルト値が `"daily"` である `logrotate` [`schedule`](attributes-recipes-apache.md#attributes-recipes-apache-log-schedule) 属性。

この属性を上書きして、値をそれぞれ `5` と `"weekly"` に設定するために、次のカスタム JSON を使用できます。

```
{
  "apache" : {
    "keepalivetimeout" : 5,
    "logrotate" : {
       "schedule" : "weekly"
    }
  }
}
```

## カスタム JSON を指定する場合
<a name="workingcookbook-json-override-when"></a>

次のタスクのカスタム JSON 構造を指定できます。
+ [新しいスタックを作成する](workingstacks-creating.md)
+ [スタックを更新する](workingstacks-edit.md)
+ [スタックコマンドを実行する](workingstacks-edit.md)
+ [スタックをクローン化する](workingstacks-cloning.md)
+ [アプリケーションをデプロイする](workingapps-deploying.md)

 OpsWorks スタックは、タスクごとにカスタム JSON 属性をスタック設定およびデプロイ属性とマージし、インスタンスに送信してノードオブジェクトにマージします。ただし、以下の点に注意してください。
+ スタックの作成、クローン化、または更新時にカスタム JSON を指定する場合、それらの属性はスタック設定およびデプロイ属性にマージされ、以降のすべてのライフサイクルイベントとスタックコマンドで使用されます。
+ デプロイ用にカスタム JSON を指定する場合、それらの属性は対応するイベント専用のスタック設定およびデプロイ属性にマージされます。

  以降のデプロイにそれらのカスタム属性を使用する場合は、再びカスタム JSON を明示的に指定する必要があります。

レシピによって使用される場合、属性はインスタンスにのみ影響することを覚えておく必要があります。属性値を上書きしても、それ以降のレシピでその属性が参照されない場合、その変更は有効ではありません。関連付けられたレシピが実行される前にカスタム JSON が送信されること、または適切なレシピが再実行されることを確認する必要があります。

## カスタム JSON のベストプラクティス
<a name="workingcookbook-json-override-best"></a>

カスタム JSON を使用して任意の OpsWorks スタック属性を上書きできますが、手動での情報の入力は多少面倒であり、ソース管理の対象ではありません。カスタム JSON は以下の目的に最適です。
+ 少数の属性のみを上書きする必要があり、その他の目的でカスタムクックブックを使用する必要がない場合。

  カスタム JSON を使用すると、数個の属性を上書きするためにのみクックブックリポジトリをセットアップして維持するためのオーバーヘッドを回避できます。
+ パスワードや認証キーなどの機密情報を含む値。

  クックブック属性はリポジトリに保存されるため、どの機密情報にも何らかの漏洩のリスクがあります。代わりに、ダミーの値を指定した属性を定義し、カスタム JSON を使用して実際の値を設定できます。
+ 異なることが予想される値。

  たとえば、本稼働用スタックを別の開発およびステージングスタックでサポートする方法が推奨されています。これらのスタックが、支払いを受け付けるアプリケーションをサポートしているとします。カスタム JSON を使用して支払いのエンドポイントを指定する場合、ステージングスタックのテスト URL を指定できます。更新されたスタックを本稼動用スタックに移行する準備ができたら、同じクックブックを使用し、カスタム JSON を使用して支払いのエンドポイントを本稼動用 URL に設定できます。
+ 特定のスタックまたはデプロイコマンドに固有の値。