AWS OpsWorks スタック - AWS OpsWorks

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

AWS OpsWorks スタック

重要

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

クラウドベースのコンピューティングには通常、まとめて作成および管理する必要のある 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

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

レシピと LifeCycle イベント

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

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

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

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

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

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

インスタンスが複数のレイヤーに属している場合、 AWS OpsWorks Stacks は各レイヤーのレシピを実行するため、PHP アプリケーションサーバーと MySQL データベースサーバーをサポートするインスタンスを持つことができます。

レシピを実装している場合は、各レシピを適切なレイヤーとイベントに割り当てると、 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 スタックは自動的にインスタンスを停止して再起動します。

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

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

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

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

アプリケーション

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

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

  • 自動 - インスタンスを起動すると、 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 Stacks は関連するレシピを実行します。例えば、アプリサーバーインスタンスで Deploy イベントが発生すると、 AWS OpsWorks Stacks はレイヤーの Deploy レシピを実行してアプリをダウンロードしたり、関連するタスクを実行したりします。

リソース管理

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

セキュリティと権限

AWS OpsWorks スタックは 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 メトリクスのセットを提供します。これらのメトリクスは、モニタリングページで便宜上要約されています。

    AWS OpsWorks スタックは Windows スタックの標準 CloudWatch メトリクスをサポートします。 CloudWatch コンソールでモニタリングできます。

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

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

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

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

CLI、SDK、 AWS CloudFormation テンプレート

コンソールに加えて、 AWS OpsWorks スタックは、任意のオペレーションの実行に使用できる複数の言語のコマンドラインインターフェイス (CLI) SDKs もサポートしています。以下の機能を考慮してください。

  • AWS OpsWorks スタック CLI は AWS CLI の一部であり、コマンドラインから任意のオペレーションを実行するために使用できます。

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

  • AWS OpsWorks スタックは AWS Tools for Windows PowerShell に含まれており、Windows PowerShell コマンドラインから任意のオペレーションを実行するために使用できます。

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

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