

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

# 属性の優先順位
<a name="workingcookbook-attributes-precedence"></a>

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

属性を一意に定義した場合、Chef によってその属性はノードオブジェクトに組み込まれるだけです。ただし、任意の属性ソースが任意の属性を定義できるため、同じ属性に複数の定義が存在し、値が異なる可能性があります。たとえば、組み込みの `apache2` クックブックは `node[:apache][:keepalive]` を定義しますが、カスタム JSON またはカスタムクックブックでこの属性を定義することもできます。属性に複数の定義がある場合、後で説明する順序に従って定義が評価され、最も優先順位の高い定義がノードオブジェクトに組み込まれます。

属性は次のように定義されます。

```
node.type[:attribute][:sub_attribute][:...]=value
```

属性に複数の定義がある場合、 タイプはどの定義が優先されるかを決定し、その定義はノードオブジェクトに組み込まれます。 OpsWorks スタックは次の属性タイプを使用します。
+ **default** (デフォルト) - これは最も一般的なタイプであり、基本的に「この属性がまだ定義されていない場合はこの値を使用する」ことを意味します。属性のすべての定義が `default` タイプである場合、評価順序の最初の定義が優先され、それ以降の値は無視されます。スタックは OpsWorks 、すべてのスタック設定とデプロイ属性定義を `default` type に設定することに注意してください。
+ **normal** (通常) - このタイプの属性は、評価順序で以前に定義されているすべての `default` または `normal` 属性を上書きします。たとえば、組み込みクックブックの最初の属性が `default` タイプであり、2 番目が `normal` タイプのユーザー定義属性である場合、2 番目の定義が優先されます。
+ **set** (セット) - これは、古いクックブックに表示される可能性のある非推奨のタイプです。このタイプは、優先順位が同じである `normal` に置き換えられました。

Chef は、他のすべての属性定義よりも優先される `automatic` タイプなど、いくつかの追加属性タイプをサポートしています。Chef の Ohai ツールによって生成された属性定義は、すべて `automatic` タイプであるため、事実上読み取り専用です。これは通常問題ではありません。上書きする理由がなく、 OpsWorks スタックの属性とは異なるためです。ただし、カスタムクックブック属性の名前を指定するときには、Ohai 属性とは異なる名前になるように注意する必要があります。詳細については、「[属性について](http://docs.chef.io/attributes.html)」を参照してください。

**注記**  
Ohai ツールは、コマンドラインから実行できる実行可能ファイルです。インスタンスの Ohai 属性のリストを取得するには、ターミナルウィンドウでインスタンスにログインし、`ohai` を実行します。それによって非常に長い出力が生成することに注意してください。

ノードオブジェクトにさまざまな属性定義を組み込む手順を以下に示します。

1. カスタムスタック設定属性をスタック設定属性とデプロイ属性にマージします。

   カスタム JSON の属性は、スタックまたは特定のデプロイに対して設定できます。これらの属性は最初に評価されるため、事実上 `normal` タイプです。1 つ以上のスタック設定 の属性がカスタム JSON でも定義されている場合、カスタム JSON の値が優先されます。それ以外の場合、 OpsWorks スタックによってカスタム JSON 属性はスタック設定に組み込まれるだけです。

1. デプロイカスタム JSON 属性をスタック設定属性とデプロイ属性にマージします。

   カスタムのデプロイ JSON 属性も実際は `normal` タイプであるため、組み込みおよびカスタムのスタック設定 JSON や組み込みのデプロイ JSON より優先されます。

1. インスタンスのノードオブジェクトにスタック設定およびデプロイ属性をマージします。

1. インスタンスの組み込みクックブック属性をノードオブジェクトにマージします。

   組み込みクックブック属性はすべて `default` タイプです。1 つまたは複数の組み込みクックブック属性がスタック構成およびデプロイ属性でも定義されている場合 (通常はカスタム JSON で定義されているため)、スタック設定の定義は組み込みクックブックの定義よりも優先されます。他の組み込みクックブック属性はすべて、単にノードオブジェクトに組み込まれます。

1. インスタンスのカスタムクックブック属性をノードオブジェクトにマージします。

   カスタムクックブック属性は、通常 `normal` タイプまたは `default` タイプです。一意の属性はノードオブジェクトに組み込まれます。カスタムクックブック属性がステップ 1～3 でも定義されている場合 (通常はカスタム JSON で定義されているため)、優先順位はカスタムクックブック属性のタイプによって異なります。
   + ステップ 1～3 で定義された属性は、カスタムクックブック `default` 属性よりも優先されます。
   + カスタムクックブック `normal` 属性は、ステップ 1～3 の定義よりも優先されます。

**重要**  
スタック設定属性または組み込みクックブック属性を上書きするために、カスタムクックブックの `default` 属性を使用しないでください。カスタムクックブックの属性は最後に評価されるため、`default` 属性の優先順位は最も低く、何も上書きすることができません。