翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
カスタム JSON の使用
重要
この AWS OpsWorks Stacks サービスは 2024 年 5 月 26 日にサポート終了となり、新規および既存のお客様の両方で無効になっています。できるだけ早くワークロードを他のソリューションに移行することを強くお勧めします。移行についてご質問がある場合は、 AWS re:Post
いくつかの AWS OpsWorks スタックアクションでは、カスタム JSON を指定できます。カスタム JSON は AWS OpsWorks スタックがインスタンスにインストールし、レシピで使用できます。
次の状況で、カスタム JSON を指定できます。
-
スタックを作成、更新、またはクローン化する
AWS OpsWorks スタックは、それ以降のすべてのライフサイクルイベントについて、すべてのインスタンスにカスタム JSON をインストールします。
-
デプロイメントコマンドまたはスタックコマンドを実行する
AWS OpsWorks スタックは、そのイベントに対してのみカスタム JSON をインスタンスに渡します。
カスタム JSON は、有効な JSON オブジェクトで表され、フォーマットされている必要があります。例:
{ "att1": "value1", "att2": "value2" ... }
AWS OpsWorks スタックは次の場所にカスタム JSON を保存します。
Linux インスタンスの場合:
-
/var/chef/runs/
run-ID
/attribs.json -
/var/chef/runs/
run-ID
/nodes/hostname
.json
Windows インスタンスの場合:
-
drive
:\chef\runs\run-ID
\attribs.json -
drive
:\chef\runs\run-ID
\nodes\hostname
.json
注記
Linux 用 Chef 11.10 以前のバージョンでは、Linux インスタンスの以下のパスにカスタム JSON があります。Windows インスタンスは使用できず、attribs.json
ファイルはありません。ログは JSON と同じフォルダまたはディレクトリに保存されます。Linux 用 Chef 11.10 以前のバージョンにおけるカスタム JSON の詳細については、「カスタム JSON を使用した属性の上書き」と「Chef ログ」を参照してください。
/var/lib/aws/opsworks/chef/
hostname
.json
前述のパスで、run-ID
はインスタンスでの Chef の実行ごとに AWS OpsWorks スタックが割り当てる一意の ID で、hostname
はインスタンスのホスト名です。
Chef レシピからカスタム JSON にアクセスするには、標準の Chef node
構文を使用します。
たとえば、デプロイするアプリケーション用のシンプルな設定 (アプリケーションが最初に表示されるかどうか、アプリケーションの初期の前景色と背景色など) を定義するとします。JSON オブジェクトを使用して、次のようにこれらのアプリケーション設定を定義するとします。
{ "state": "visible", "colors": { "foreground": "light-blue", "background": "dark-gray" } }
スタック用のカスタム JSON を宣言するには:
-
スタックのページで、[Stack Settings]、[Edit] の順番に選択します。
-
[Custom Chef JSON] に JSON オブジェクトを入力し、[Save] を選択します。
注記
カスタム JSON は、デプロイ、レイヤー、およびスタックの各レベルで宣言できます。いくつかのカスタム JSON を個別のデプロイまたはレイヤーのみに対して表示する場合は、この操作を行うことをお勧めします。たとえば、レイヤーレベルで宣言されたカスタム JSON で、スタックレベルで宣言されたカスタム JSON を一時的に上書きしたいとします。複数のレベルでカスタム JSON を宣言する場合、デプロイレベルで宣言されたカスタム JSON は、レイヤーレベルおよびスタックレベルの両方で宣言されたカスタム JSON より優先されます。レイヤーレベルで宣言されたカスタム JSON は、スタックレベルでのみ宣言されたカスタム JSON より優先されます。
AWS OpsWorks スタックコンソールを使用してデプロイのカスタム JSON を指定するには、アプリケーションのデプロイページで、アドバンスト を選択します。[Custom Chef JSON] ボックスにカスタム JSON を入力し、[Save] を選択します。
AWS OpsWorks スタックコンソールを使用してレイヤーのカスタム JSON を指定するには、レイヤーページで、目的のレイヤーの設定を選択します。[Custom JSON] ボックスにカスタム JSON を入力し、[Save] を選択します。
詳細については、「 OpsWorks レイヤーの設定の編集」および「アプリケーションのデプロイ」を参照してください。
デプロイまたはスタックコマンドを実行すると、レシピは標準の Chef node
構文を使用してこれらのカスタムの値を取得できます。これにより、カスタム JSON オブジェクトの階層に直接マッピングされます。たとえば、次のレシピコードは、前述のカスタム JSON 値に関するメッセージを Chef ログに書き込みます。
Chef::Log.info("********** The app's initial state is '#{node['state']}' **********") Chef::Log.info("********** The app's initial foreground color is '#{node['colors']['foreground']}' **********") Chef::Log.info("********** The app's initial background color is '#{node['colors']['background']}' **********")
このアプローチは、レシピにデータを渡すのに役立ちます。 AWS OpsWorks スタックはそのデータをインスタンスに追加し、 レシピは標準の Chef node
構文を使用してデータを取得できます。
注記
カスタム JSON は 120 KB に制限されています。さらに容量が必要な場合は、Amazon Simple Storage Service (Amazon S3) でデータの一部を保存することをお勧めします。カスタムレシピは、AWS CLI