カスタム JSON の使用 - AWS OpsWorks

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

カスタム JSON の使用

重要

AWS OpsWorks Stacks は新規顧客を受け付けなくなりました。既存のお客様は、2024 年 5 月 26 日までは OpsWorks コンソール、 API、 CLI、および CloudFormation リソースを通常どおり使用できますが、その時点でこれらのリソースは廃止されます。この移行に備えて、できるだけ早くスタックを AWS Systems Manager に移行することをおすすめします。詳細については、AWS OpsWorks Stacks サポート終了に関する FAQ および AWS Systems Manager アプリケーションマネージャへの AWS OpsWorks Stacks アプリケーションの移行 を参照してください。

いくつかの AWS OpsWorks スタックアクションでは、カスタム JSON を指定できます。これにより、AWS OpsWorks スタックをインスタンスにインストールし、レシピで使用できます。

次の状況で、カスタム JSON を指定できます。

  • スタックを作成、更新、またはクローン化する

    AWS OpsWorks Stacks は、後続のすべての lifecycle events (ライフサイクルイベント) に対するすべてのインスタンスに、カスタム JSON をインストールします。

  • デプロイメントコマンドまたはスタックコマンドを実行する

    AWS OpsWorks Stacks は、そのイベントのためにだけ、インスタンスにカスタム 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 を宣言するには:

  1. スタックのページで、[Stack Settings]、[Edit] の順番に選択します。

  2. [Custom Chef JSON] に JSON オブジェクトを入力し、[Save] を選択します。

注記

カスタム JSON は、デプロイ、レイヤー、およびスタックの各レベルで宣言できます。いくつかのカスタム JSON を個別のデプロイまたはレイヤーのみに対して表示する場合は、この操作を行うことをお勧めします。たとえば、レイヤーレベルで宣言されたカスタム JSON で、スタックレベルで宣言されたカスタム JSON を一時的に上書きしたいとします。複数のレベルでカスタム JSON を宣言する場合、デプロイレベルで宣言されたカスタム JSON は、レイヤーレベルおよびスタックレベルの両方で宣言されたカスタム JSON より優先されます。レイヤーレベルで宣言されたカスタム JSON は、スタックレベルでのみ宣言されたカスタム JSON より優先されます。

AWS OpsWorks スタックコンソールを使用してデプロイ用のカスタム JSON を指定するには、[Deploy App (アプリのデプロイ)] ページで [Advanced (詳細設定)] を選択します。[Custom Chef JSON] ボックスにカスタム JSON を入力し、[Save] を選択します。

AWS OpsWorks スタックコンソールを使用してレイヤー用のカスタム JSON を指定するには、[Layers] (レイヤー) ページで目的のレイヤー用の [Settings] (設定) を選択します。[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 または AWS SDK for Ruby を使用して、Amazon S3 バケットからインスタンスにデータをダウンロードできます。