データベース接続をセットアップする方法 - AWS OpsWorks

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

データベース接続をセットアップする方法

重要

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 スタックがすべてのインスタンスにインストールする stack configuration and deployment attributes (スタック設定およびデプロイメント属性)] の属性のセットから取得します。

例えば、Chef 11 Linux スタックの使用開始 のステップ 2 は、2 つのレイヤー(それぞれに 1 つのインスタンスを含む PHP App Server および MySQL) がある MyStack という名前のスタックに基づいています。SimplePHPApp という名前のアプリケーションを PHP App Server インスタンスにデプロイし、バックエンドデータストアとして MySQL インスタンスでデータベースを使用します。アプリケーションをデプロイすると、AWS OpsWorks スタックによって、データベース接続情報を含むスタック設定およびデプロイ属性がインストールされます。以下の例は、JSON として表されたデータベース接続属性を示しています。

{ ... "deploy": { "simplephpapp": { ... "database": { "reconnect": true, "password": null, "username": "root", "host": null, "database": "simplephpapp" ... }, ... } } }

属性値は、AWS OpsWorks スタックによって生成されて供給されるか、ユーザーが指定した情報に基づいて供給されます。

SimplePHPApp がデータストアにアクセスするのを許可するには、appsetup.rb という名前のカスタムレシピを レイヤーのデプロイ [lifecycle event] (ライフサイクルイベント) に割り当てることで、PHP アプリケーションサーバーと MySQL データベース間の接続を設定する必要があります。SimplePHPApp をデプロイすると、AWS OpsWorks スタックによって appsetup.rb が実行され、次の抜粋に示しているように接続をセットアップする db-connect.php という名前の設定ファイルが作成されます。

node[:deploy].each do |app_name, deploy| ... template "#{deploy[:deploy_to]}/current/db-connect.php" do source "db-connect.php.erb" mode 0660 group deploy[:group] if platform?("ubuntu") owner "www-data" elsif platform?("amazon") owner "apache" end variables( :host => (deploy[:database][:host] rescue nil), :user => (deploy[:database][:username] rescue nil), :password => (deploy[:database][:password] rescue nil), :db => (deploy[:database][:database] rescue nil), :table => (node[:phpapp][:dbtable] rescue nil) ) ... end end

接続を特徴づける変数 hostuser などには、deploy JSON's (JSON をデプロイする) [:deploy][:app_name][:database] 属性から対応する値が設定されます。 わかりやすいように、この例では、urler という名前のテーブルが作成されており、そのテーブル名はクックブックの属性ファイルでは [:phpapp][:dbtable] で表されることを前提としていまします。

このレシピにより、PHP アプリケーションサーバーは MySQL レイヤーのメンバーだけでなく任意の MySQL データベースサーバーに実際に接続されます。別の MySQL サーバーを使用するには、[:database] 属性をサーバーに適切な値に設定する必要があります。これは custom JSON (カスタム JSON) を使用して設定することも可能です。AWS OpsWorksスタックは続いて、その属性と値がスタック設定とデプロイメント属性に組み込まれ、appsetup.rb ではその属性と値を使用して、接続をセットアップするテンプレートが作成されます。スタック設定およびデプロイメント JSON の上書きの詳細については、「属性の上書き」を参照してください。