組み込み属性の上書き - AWS OpsWorks

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

組み込み属性の上書き

重要

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

注記

このトピックは Linux スタックにのみ当てはまります。Windows スタックの組み込み属性は上書きできません。

AWS OpsWorks Stacks は各インスタンスにビルトインクックブックのセットをインストールします。組み込みのクックブックの多くは組み込みのレイヤーをサポートしており、属性ファイルは Apache サーバー設定のような、さまざまなデフォルト システムとアプリケーション設定を定義します。属性ファイルにこれらの設定を指定することで、以下の方法のいずれかで、対応する組み込み属性を上書きすることにより多くの設定をカスタマイズできます。

  • カスタム JSON の属性を定義します。

    このアプローチには、シンプルかつ柔軟であるという利点があります。ただし、カスタム JSON を手動で入力する必要があるため、属性定義を管理する堅牢な方法はありません。

  • カスタムクックブックを実装して、customize.rb 属性ファイルの属性を定義します。

    このアプローチは、カスタム JSON を使用する方法よりも柔軟性には劣りますが、ソース管理の下にカスタムクックブックを配置することができるため、より堅牢な方法となります。

このトピックでは、Apache サーバーを例として、カスタムクックブック属性ファイルを使用して組み込み属性を上書きする方法について説明します。カスタム JSON を使用して属性を上書きする方法の詳細については、「カスタム JSON の使用」を参照してください。属性を上書きする方法の全般的な説明については、「属性の上書き」を参照してください。

注記

属性を上書きすることは設定をカスタマイズする優れた方法ですが、設定は常に属性で表されるものではありません。その場合は、設定ファイルを作成するために組み込みのレシピが使用するテンプレートを上書きすることで、設定ファイルをカスタマイズしてことができます。例については、組み込みテンプレートの上書きを参照してください。

組み込みの属性は、通常設定ファイルを作成するためにセットアップレシピが使用するテンプレートファイルの値を示します。例えば、apache2 セットアップレシピの一つである default.rb では、apache2.conf.erb テンプレートを使用して Apache サーバーの主要な設定ファイルである httpd.conf (Amazon Linux) または apache2.conf (Ubuntu) を作成します。以下は、テンプレートファイルからの抜粋です。

... # # MaxKeepAliveRequests: The maximum number of requests to allow # during a persistent connection. Set to 0 to allow an unlimited amount. # We recommend you leave this number high, for maximum performance. # MaxKeepAliveRequests <%= node[:apache][:keepaliverequests] %> # # KeepAliveTimeout: Number of seconds to wait for the next request from the # same client on the same connection. # KeepAliveTimeout <%= node[:apache][:keepalivetimeout] %> ## ## Server-Pool Size Regulation (MPM specific) ## ...

この例の KeepAliveTimeout 設定は、[:apache][:keepalivetimeout] 属性の値です。この属性のデフォルト値は、以下の抜粋に示す、apache2 クックブックの apache.rb 属性ファイルで定義されます。

... # General settings default[:apache][:listen_ports] = [ '80','443' ] default[:apache][:contact] = 'ops@example.com' default[:apache][:log_level] = 'info' default[:apache][:timeout] = 120 default[:apache][:keepalive] = 'Off' default[:apache][:keepaliverequests] = 100 default[:apache][:keepalivetimeout] = 3 ...
注記

よく使われる組み込みの属性の詳細については、「組み込みクックブックの属性」を参照してください。

組み込み属性の上書きをサポートするために、すべての組み込みクックブックには customize.rb 属性ファイルが含まれています。このファイルは、include_attribute ディレクティブを介してすべてのモジュールに組み込まれます。組み込みクックブックの customize.rb ファイルには属性定義は含まれておらず、組み込み属性には影響を与えません。組み込み属性を上書きするには、同じ名前のカスタムクックブックを組み込みクックブックとして作成して、customize.rb という名前が付けられている属性ファイルにカスタム属性定義として配置します。そのファイルは組み込みバージョンに優先され、関連する各モジュールに含まれます。customize.rb に組み込み属性を定義すると、対応する組み込み属性が上書きされます。

この例では、組み込み [:apache][:keepalivetimeout] 属性を設定して、その値に 3 の代わりに 5 を設定する方法を示します。すべての組み込み属性に対して同様の方法を使用できます。ただし、上書きする属性には注意が必要です。例えば、opsworks 名前空間の属性を上書きすると、組み込みのレシピで問題が発生する場合があります。

重要

組み込み属性ファイル自体のコピーを変更することで、組み込み属性を上書きしないでください。例えば、apache.rb のコピーをカスタムクックブックの apache2/attributes フォルダに配置して、その設定の一部を変更することができます。ただし、このファイルは組み込みバージョンを上書きしてしまうため、組み込みレシピは新たなバージョンの apache.rb を使用するようになります。 AWS OpsWorks Stacks apache.rb が後でビルトインファイルを変更した場合、バージョンを手動で更新しない限り、レシピには新しい値を取得できません。を使用するとcustomize.rb、指定した属性だけがオーバーライドされます。ビルトインレシピは、 up-to-date オーバーライドしていないすべての属性の値を引き続き自動的に取得します。

開始するには、カスタムクックブックを作成します。

クックブックを作成するには
  1. opsworks_cookbooks ディレクトリ内に、apache2 というクックブックのディレクトリを作成して、そこに移動します。

    組み込み属性を上書きするには、カスタムクックブックは組み込みのクックブックと同じ名前である必要があります。この例では apache2 です。

  2. apache2 ディレクトリに attributes ディレクトリを作成します。

  3. customize.rb ファイルを attributes ディレクトリに追加し、それを使用して上書きする組み込みクックブックの属性を定義します。この例では、ファイルには以下のものが含まれます。

    normal[:apache][:keepalivetimeout] = 5
    重要

    組み込みの属性を上書きするには、カスタム属性のタイプが normal 以上であり、対応する組み込み属性名と正確に同じである必要があります。normal タイプでは、すべての default タイプの組み込み属性にカスタム属性が優先されます。詳細については、「属性の優先順位」を参照してください。

  4. opsworks_cookbooks.zip という名前の opsworks_cookbooks.zip アーカイブを作成し、Amazon Simple Storage Service (Amazon S3) バケットにそのアーカイブをアップロードします。わかりやすいよう、ファイルを公開します。後で使用できるように、URL を記録しておきます。また、クックブックをプライベート Amazon S3 アーカイブやその他のタイプのリポジトリに保存することもできます。詳細については、「クックブックリポジトリ」を参照してください。

    Amazon S3 バケットに配信されるコンテンツには、カスタマーコンテンツが含まれている場合があります。機密データの削除の詳細については、「S3 バケットを空にする方法」または「S3 バケットを削除する方法」を参照してください。

カスタム属性を使用するには、スタックを作成し、カスタムクックブックをインストールします。

カスタム属性を使用する
  1. AWS OpsWorks スタックコンソールを開いて [Add Stack] を選択します。

  2. 以下の標準設定を指定できます。

    • 名前 — ApacheConfig

    • リージョン) – 米国西部 (オレゴン)

      いずれのリージョンにもスタックを配置できますが、チュートリアルでは米国西部 (オレゴン) をお勧めします。

    • Default SSH key (デフォルト SSH キー) - Amazon EC2 キーペア

      EC2 キーペアの作成が必要な場合は、Amazon EC2 キーペアを参照してください。キーペアがスタックと同じ AWS リージョンに属している必要があることに注意してください。

    [Advanced>>] を選択し、[Use custom Chef cookbooks] を [Yes] に設定して、以下の設定を指定します。

    • Repository type (リポジトリタイプ) – Http Archive (Http アーカイブ)

    • Repository URL (リポジトリの URL) – 前の手順で記録したクックブックのアーカイブの URL

    そのほかの設定のデフォルト値を受け入れ、[Add Stack] を選択してスタックを作成します。

    注記

    この例では、デフォルトのオペレーティングシステムである Amazon Linux を使用します。希望に応じて、Ubuntu を使用することもできます。唯一の相違点は Ubuntu システムであるということで、組み込みセットアップレシピが apache2.conf という同じ名前の設定ファイルを作成し、それを /etc/apache2 ディレクトリに配置します。

  3. レイヤーの追加 を選択してから、デフォルト設定でスタックに Java アプリケーションアプリケーションサーバーレイヤーを追加します。

  4. デフォルト設定でレイヤーに 24/7 インスタンスを追加し、インスタンスを起動します。

    この例では、t2.micro インスタンスで十分です。

  5. インスタンスをオンラインにしたら、、SSHでインスタンスに接続しますhttpd.conf ファイルは、/etc/httpd/conf ディレクトリにあります。ファイルを確認すると、カスタム KeepAliveTimeout 設定が表示されます。残りの設定には、組み込みの apache.rb ファイルからのデフォルト値があります。httpd.conf の関連する部分は以下のようになります。

    ... # # KeepAliveTimeout: Number of seconds to wait for the next request from the # same client on the same connection. # KeepAliveTimeout 5 ...