AWS OpsWorks スタック - AWS OpsWorks

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

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 リソース Amazon EC2 インスタンス、Amazon Relational Database Service (RDS) などのグループが含まれます。たとえば、ウェブアプリケーションには、通常、アプリケーションサーバー、データベースサーバー、ロードバランサーなどが必要です。このインスタンスのグループは、一般にスタックと呼ばれています。例として、シンプルなアプリケーションサーバースタックを図に表すと以下のようになります。

インスタンスを作成したり、必要なパッケージをインストールしたりする他に、通常、アプリケーションをアプリケーションサーバーに分散したり、スタックのパフォーマンスを監視したり、セキュリティおよびアクセス許可を管理したりするなどの操作を行う方法が必要です。

AWS OpsWorks スタックは、スタックとアプリケーションを作成および管理するシンプルで柔軟な方法を提供します。

AWS OpsWorks スタックを使用した基本的なアプリケーションサーバースタックの構造は以下のようになります。Elastic Load Balancing ロードバランサーの背後で実行されるアプリケーションサーバーのグループとバックエンド Amazon RDS データベースサーバーで構成されています。

かなりシンプルですが、このスタックはすべての主要な AWS OpsWorks スタックの機能を示しています。構成を以下に示します。

スタック

スタックは AWS OpsWorks スタックの中心となるコンポーネントです。基本的には、共通の目的を持ち、論理的に一緒に管理する必要がある AWS リソース (Amazon EC2 インスタンス、Amazon RDS データベースインスタンスなど) のコンテナです。スタックにより、ユーザーはこれらのリソースをグループで管理することができます。また、インスタンスのオペレーティングシステムや AWS リージョンなどの一部のデフォルトの構成設定もスタックにより定義されます。ユーザーの直接操作から分離する必要のあるスタックコンポーネントがある場合、そのスタックを VPC 内で実行することもできます。

レイヤー

1 つ以上の レイヤー を追加することにより、スタックのコンポーネントを定義します。レイヤーは、アプリケーションへのサービス提供やデータベースサーバーのホスティングなどの特定の目的を果たす一連の Amazon EC2 インスタンスを表します。

パッケージのデフォルト設定を変更してレイヤーをカスタマイズまたは展開したり、Chef レシピを追加して追加のパッケージのインストールなどのタスクを実行したりできます。

すべてのスタックに対して、AWS OpsWorks スタックには、以下の AWS のサービスを表すサービスレイヤーが用意されています。

  • Amazon Relational Database Service

  • Elastic Load Balancing

  • Amazon Elastic Container Service

レイヤーにより、インストールするパッケージ、インストールするパッケージの設定内容、アプリケーションをデプロイする方法などを完全に制御することができます。

レシピおよびライフサイクルイベント

レイヤーによって、Chef レシピに基づいてインスタンスへのパッケージのインストール、アプリケーションのデプロイ、スクリプトの実行などのタスクが処理されます。主要な AWS OpsWorks スタック機能の一つは、ライフサイクルイベントセット (セットアップ、構成、デプロイ、アンデプロイ、シャットダウン) で、これにより、各インスタンスで適切なタイミングで指定したレシピセットが自動的に実行されます。

各レイヤーでは、これらの各ライフサイクルイベントに一連のレシピが割り当てられており、そのイベントとレイヤーのさまざまなタスクの処理に使用されます。例えば、ウェブサーバーレイヤーに属するインスタンスの起動が終了した後、AWS OpsWorks スタックは以下を実行します。

  1. レイヤーの Setup レシピを実行します。これにより、ウェブサーバーのインストールや設定などのタスクが実行できます。

  2. レイヤーの Deploy レシピを実行します。これにより、リポジトリからインスタンスにレイヤーのアプリケーションがデプロイされ、サービスの再開などの関連タスクが実行されます。

  3. スタックのすべてのインスタンスで Configure レシピを実行すると、各インスタンスは新しいインスタンスに適合するように必要に応じて設定を調整できます。

    たとえば、インスタンスでロードバランサーを実行しながら、Configure レシピで新しいインスタンスに含めるロードバランサーの設定を変更できます。

1 つのインスタンスが複数のレイヤーに属している場合、AWS OpsWorks スタックはレイヤーごとにレシピを実行するため、例えば、PHP アプリケーションサーバーと MySQL データベースサーバーをサポートする 1 つのインスタンスを作成できます。

レシピを実装している場合は、各レシピを適切なレイヤーとイベントに割り当てることができ、AWS OpsWorks スタックによって適時に自動的に実行されるようになります。また、レシピはいつでも手動で実行することができます。

インスタンス

instance (インスタンス) とは、Amazon EC2 インスタンスなどの 1 つのコンピューティングリソースを意味します。インスタンスは、オペレーティングシステムやサイズなど基本的な設定を定義します。Elastic IP アドレスや Amazon EBS ボリュームなどのその他の設定は、インスタンスのレイヤーによって定義されます。レイヤーのレシピは、パッケージをインストールして設定したりアプリケーションをデプロイしたりするタスクを実行することで設定を完了します。

AWS OpsWorks スタックを使用してインスタンスを作成し、それをレイヤーに追加できます。インスタンスを起動すると、AWS OpsWorks スタックによって、インスタンスとそのレイヤーで指定されている設定を使用して Amazon EC2 インスタンスが起動されます。Amazon EC2 インスタンスの起動後、AWS OpsWorks スタックはインスタンスとサービス間の通信を処理するエージェントをインストールし、ライフサイクルイベントに応じて適切なレシピを実行します。

AWS OpsWorks スタックは、起動方法と停止方法によって区別される以下のインスタンスタイプをサポートしています。

  • 24/7 インスタンスは、ユーザーが手動で起動し、ユーザーが停止するまで実行されます。

  • 時間ベースのインスタンスは、指定した日単位や週単位のスケジュールに応じて AWS OpsWorks スタックによって実行されます。

    このインスタンスにより、予想される使用パターンに対応するようにスタックのインスタンス数を自動的に調整することが可能となります。

  • 負荷ベースのインスタンスは、CPU 使用率などの負荷のメトリクスに基づいて AWS OpsWorks スタックによって自動的に起動および停止されます。

    このインスタンスにより、スタックのインスタンス数を着信トラフィックの変動に対応するように自動的に調整することが可能となります。負荷ベースのインスタンスは Linux ベースのスタックにのみ使用できます。

AWS OpsWorks スタックでは、インスタンスの自動ヒーリングがサポートされています。エージェントとサービスの間の通信が途絶えると、AWS OpsWorks スタックは自動的にインスタンスの停止と再起動を行います。

また、AWS OpsWorks スタックの外部で作成された Linux ベースのコンピューティングリソースをスタックに組み込むこともできます。

  • コンソール、CLI、または API を使用して直接作成した Amazon EC2 インスタンス。

  • 仮想マシンで実行しているインスタンスを含め、独自のハードウェアで実行している On-premises (オンプレミス) インスタンス。

これらのいずれかのインスタンスを登録すると、そのインスタンスは AWS OpsWorks スタックインスタンスになり、AWS OpsWorks スタックで作成したインスタンスと同様の方法で管理できるようになります。

アプリケーション

Amazon S3 バケットなどのリポジトリに、アプリケーションおよび関連ファイルを保存します。各アプリケーションは、アプリケーションタイプを指定した App として表されます。App には、リポジトリからインスタンスにアプリケーションをデプロイするために必要な情報 (リポジトリ URL、パスワードなど) も指定します。アプリケーションをデプロイすると、AWS OpsWorks スタックによって Deploy イベントがトリガーされ、スタックのインスタンスで Deploy レシピが実行されます。

以下の方法でアプリケーションをデプロイすることができます。

  • 自動 - インスタンスを起動すると、AWS OpsWorks スタックによってインスタンスの Deploy レシピが自動的に実行されます。

  • 手動 - 新しいアプリケーションを準備する場合または既存のアプリケーションを更新する必要がある場合、ユーザーは手動でオンラインインスタンスの Deploy レシピを実行できます。

通常は AWS OpsWorks スタックによってスタック全体で Deploy レシピが実行されるようにします。この操作では、他のレイヤーのインスタンスがその設定を適切に変更できます。ただし、すべてのアプリケーションサーバーのインスタンスに新しいアプリケーションをデプロイする前に、それをテストする必要がある場合などには、デプロイをインスタンスのサブセットに制限することができます。

スタックのカスタマイズ

AWS OpsWorks スタックでは、特定の要件に合わせてレイヤーをカスタマイズするためのさまざまな方法が提供されています。

  • さまざまな設定を表す属性を上書きしたり、設定ファイルを作成するために使用したテンプレートをオーバーライドしたりすることで、AWS OpsWorks スタックがパッケージを設定する方法を変更できます。

  • スクリプトの実行や標準外のパッケージのインストールおよび設定などのタスクを実行する独自のレシピを指定することによって、既存のレイヤーを拡張することができます。

すべてのスタックには、レシピの最小限のセットで始める 1 つ以上のレイヤーを含めることができます。パッケージのインストール、アプリケーションのデプロイなどのタスクを処理するレシピを実装することで、レイヤーに機能を追加します。カスタムレシピおよび関連するファイルを 1 つ以上の cookbooks (クックブック) にまとめ、そのクックブックを Amazon S3 や Git などのリポジトリに保管します。

カスタムレシピは手動で実行することができますが、AWS OpsWorks スタックでは、以下の 5 つのライフサイクルイベントがサポートされているため、ユーザーはこのプロセスを自動化することもできます。

  • Setup イベントは、新しいインスタンスが正常にブートした後に発生します。

  • Configure イベントは、インスタンスがオンライン状態に移行したときとオンライン状態から移行したときに、スタックのすべてのインスタンスで発生します。

  • Deploy イベントは、ユーザーがアプリケーションをデプロイするときに発生します。

  • Undeploy イベントは、ユーザーがアプリケーションを削除するときに発生します。

  • Shutdown イベントは、ユーザーがインスタンスを停止するときに発生します。

各レイヤーで、各イベントに任意の数のレシピを割り当てることができます。レイヤーのインスタンスでライフサイクルイベントが発生すると、AWS OpsWorks スタックは関連付けられているレシピを実行します。例えば、アプリケーションサーバーのインスタンスで Deploy イベントが発生した場合は、AWS OpsWorks スタックによって、そのアプリケーションをダウンロードしたり関連タスクを実行したりする、レイヤーの組み込み Deploy レシピが実行されます。

リソース管理

Elastic IP アドレスなどの他の AWS リソースをスタックに組み込むことができます。AWS OpsWorks スタックのコンソールや API を使用して、スタックにリソースを登録したり、登録したリソースをインスタンスにアタッチしたり、登録したリソースをインスタンスからデタッチしたり、あるインスタンスから別のインスタンスにリソースを移動したりすることができます。

セキュリティおよびアクセス許可

AWS OpsWorks Stacks は、AWS Identity and Access Management (IAM) と統合され、ユーザーが AWS OpsWorks スタックにアクセスする方法を制御するために、以下を含む強固な方法を提供します。

  • 個々のユーザーがレイヤーやインスタンスなどのスタックリソースを作成できるかどうか、SSH または RDP を使用してスタックの Amazon EC2 インスタンスに接続できるかどうかなど、個々のユーザーが各スタックを操作する方法。

  • AWS OpsWorks スタックがユーザーに代わって Amazon EC2 インスタンスなどの AWS リソースを操作するために実行できる方法。

  • AWS OpsWorks スタックインスタンスで実行されるアプリケーションが Amazon S3 バケットなどの AWS リソースにアクセスする方法。

  • ユーザーの SSH パブリックキーと RDP パスワードを管理する方法、およびインスタンスに接続する方法。

モニタリングとロギング

AWS OpsWorks スタックには、スタックをモニタリングしたり、スタックやレシピに関する問題をトラブルシューティングしたりできるように、以下に示すいくつかの機能が用意されています。すべてのスタック用:

  • AWS OpsWorks スタックには、Linux スタック用に一連のカスタム CloudWatchメトリクスが用意されており、便利なように [Monitoring] (モニタリング) ページにまとめられています。

    AWS OpsWorks スタックでは、Windows スタック用に標準の CloudWatch メトリクスがサポートされています。CloudWatch コンソールでそれらをモニタリングできます。

  • CloudTrail ログ。AWS アカウントの AWS OpsWorks スタックまたはその代理によって行われた API コールをすべて記録します。

  • イベントログ。スタックのすべてのイベントをリスト表示します。

  • Chef ログ。実行されたレシピや発生したエラーなど、各インスタンスで各ライフサイクルイベントに対して起こったことの詳細を表示します。

Linux ベースのスタックには、スタックのインスタンスに関する詳細モニタリングデータの収集と表示に使用できる Ganglia マスターレイヤーもあります。

CLI、SDK、および AWS CloudFormation テンプレート

AWS OpsWorks スタックでは、コンソールに加えて、複数の言語に対応するコマンドラインインターフェイス (CLI) と SDK もサポートされていて、操作の実行に使用できます。以下の機能を考慮してください。

  • AWS OpsWorks スタックの CLI は、AWS CLI の一部であり、コマンドラインから操作を実行するために使用できます。

    AWS CLI は、複数の AWS サービスをサポートし、Windows、Linux、または OS X システムにインストールできます。

  • AWS OpsWorks スタックは、AWS Tools for Windows PowerShell (Windows PowerShell 用 AWS ツール) に含まれ、PowerShell のコマンドラインからの操作の実行に使用できます。

  • AWS OpsWorks スタック SDK は AWS SDK に含まれ、JavaJavaScript (ブラウザベースおよび Node.js)、.NETPHPPython (boto)、または Ruby で実装したアプリケーションで使用できます。

AWS CloudFormation テンプレートを使用して、スタックをプロビジョニングすることもできます。「AWS OpsWorks のスニペット」に記載されたいくつかの例を参照してください。