AWS OpsWorks スタック - AWS OpsWorks

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

AWS OpsWorks スタック

クラウドベースのコンピューティングには通常、まとめて作成および管理する必要のある AWS リソース(Amazon EC2 インスタンスや Amazon Relational Database Service (RDS) インスタンスなど)のグループが関与します。たとえば、ウェブアプリケーションには、通常、アプリケーションサーバー、データベースサーバー、ロードバランサーなどが必要です。このインスタンスのグループは、一般にスタックと呼ばれています。例として、シンプルなアプリケーションサーバースタックを図に表すと以下のようになります。

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

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

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

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

Stacks

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

Layers

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

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

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

  • Amazon Relational Database Service

  • Elastic Load Balancing

  • Amazon Elastic Container Service

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

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

Layer によって、Chef レシピに基づいてインスタンスへのパッケージのインストール、アプリケーションのデプロイ、スクリプトの実行などのタスクが処理されます。キーの 1 つAWS OpsWorksスタック機能は、ライフサイクルイベント— Setup、Configure、Deploy、Undeploy、Shutdown — 各インスタンスで、指定されたレシピのセットを自動的に実行します。

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

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

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

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

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

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

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

Instances

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

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 ベースのコンピューティングリソースをスタックに組み込むこともできます。

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

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

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

Apps

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

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

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

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

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

スタックのカスタマイズ

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

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

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

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

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

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

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

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

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

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

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

リソース管理

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

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

AWS OpsWorks Stacks はAWS Identity and Access Management(IAM) を使用して、ユーザーがアクセスする方法をしっかりと制御できます。AWS OpsWorksスタックには、以下が含まれます。

  • 個々のユーザーが Layer やインスタンスなどのスタックリソースを作成できるかどうかや、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 ログ。CloudTrail またはその代理によって行われた API コールをすべて記録します。AWS OpsWorksAWS アカウントのスタック。

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

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

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

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 OpsWorksStacks SDK は AWS SDK に含まれています。このSDK は、に実装されたアプリケーションで使用できます。Java,JavaScript(ブラウザベースおよび Node.js)、.NET,PHP,Python (boto), またはRuby

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