VPC でのスタックの実行
仮想プライベートクラウド (VPC) でスタックを作成することにより、スタックのインスタンスへのユーザーアクセスを制御できます。たとえば、スタックのアプリケーションサーバーまたはデータベースにユーザーが直接アクセスできるようにしたくない場合、代わりに、すべてのパブリックトラフィックが Elastic Load Balancing を経由するようにします。
VPC でスタックを実行するための基本的な手順は次のとおりです。
-
Amazon VPC コンソールか API、または AWS CloudFormation テンプレートを使用することにより、適切に設定された VPC を作成します。
-
スタックを作成する際に VPC ID を指定します。
-
適切なサブネットでスタックのインスタンスを起動します。
AWS OpsWorks スタックでの VPC の動作について、以下に簡単に説明します。
重要
VPC エンドポイント機能を使用する場合、スタックの各インスタンスは、Amazon Simple Storage Service (Amazon S3) から次のアクションを完了できる必要があることに注意してください。
-
インスタンスエージェントをインストールする。
-
Ruby などの資産をインストールする。
-
Chef の実行ログをアップロードする。
-
スタックコマンドを取得する。
これらのアクションを有効にするには、スタックのインスタンスが、スタックのリージョンと一致する、以下のバケットにアクセスできる必要があります。それ以外の場合、前述のオペレーションは失敗します。
Chef 12 Linux および Chef 12.2 Windows の場合、バケットは次のとおりです。
エージェントバケット | 資産バケット | ログバケット | DNA バケット |
---|---|---|---|
|
|
|
|
Linux 用 Chef 11.10 以前のバージョンの場合、バケットは次のとおりです。Chef 11.4 スタックは、米国東部 (バージニア北部) リージョン 外のリージョンエンドポイントでサポートされていません。
エージェントバケット | 資産バケット | ログバケット | DNA バケット |
---|---|---|---|
|
|
|
|
詳細については、「VPC エンドポイント」を参照してください。
注記
有効にした VPC エンドポイントに AWS OpsWorks スタックから接続するためには、AWS OpsWorks スタックエージェントによるパブリックエンドポイントへのアクセスが必要であるため、NAT またはパブリック IP のルーティングも設定する必要があります。
VPC の基本
VPC の詳細については、「Amazon Virtual Private Cloud ユーザーガイド」を参照してください。端的に言えば、VPC は 1 つ以上のサブネットで構成され、各サブネットには 1 つ以上のインスタンスが含まれています。また、各サブネットには、送信先 IP アドレスに基づいてアウトバウンドトラフィックを送信する、関連付けられたルーティングテーブルがあります。
-
VPC にあるインスタンスはサブネットに関係なくデフォルトで相互に通信できます。ただし、ネットワークアクセスコントロールリスト (ACL) やセキュリティグループポリシーを変更したり静的 IP アドレスを使用すると、この通信を遮断してしまう可能性があります。
-
サブネットのインスタンスがインターネットと通信できる場合、このサブネットはパブリックサブネットと呼ばれます。
-
サブネットのインスタンスが VPC 内の他のインスタンスとのみ通信でき、インターネットとは直接通信できない場合、このサブネットはプライベートサブネットと呼ばれます。
AWS OpsWorks スタックでは、プライベートサブネットのインスタンスを含むスタック内のすべてのインスタンスが次のエンドポイントにアクセスできるように VPC を設定する必要があります。
-
「AWS OpsWorks スタックの開始方法」の「リージョンのサポート」セクションに記載されている AWS OpsWorks スタックサービスエンドポイントのいずれか。
-
AWS OpsWorks スタックエージェントによって使用される以下のインスタンスサービスエンドポイントのいずれか。エージェントは、マネージドカスタマーインスタンスで実行され、サービスとデータを交換します。
-
opsworks-instance-service.us-east-2.amazonaws.com
-
opsworks-instance-service.us-east-1.amazonaws.com
-
opsworks-instance-service.us-west-1.amazonaws.com
-
opsworks-instance-service.us-west-2.amazonaws.com
-
opsworks-instance-service.ap-south-1.amazonaws.com
-
opsworks-instance-service.ap-northeast-1.amazonaws.com
-
opsworks-instance-service.ap-northeast-2.amazonaws.com
-
opsworks-instance-service.ap-southeast-1.amazonaws.com
-
opsworks-instance-service.ap-southeast-2.amazonaws.com
-
opsworks-instance-service.ca-central-1.amazonaws.com
-
opsworks-instance-service.eu-central-1.amazonaws.com
-
opsworks-instance-service.eu-west-1.amazonaws.com
-
opsworks-instance-service.eu-west-2.amazonaws.com
-
opsworks-instance-service.eu-west-3.amazonaws.com
-
-
Amazon S3
-
オペレーティングシステムに応じたパッケージリポジトリ (Amazon Linux や Ubuntu Linux のリポジトリなど)。
-
使用するアプリケーションとカスタムクックブックのリポジトリ
この接続が可能になるように VPC を設定する方法はさまざまです。次に示すのは、AWS OpsWorks スタックアプリケーションサーバースタックに対応するように VPC を設定した場合の簡単な例です。

この VPC には複数のコンポーネントがあります。
- Subnets
-
この VPC には 2 つのサブネットがあります。1 つはパブリック、もう 1 つはプライベートです。
-
パブリックサブネットには、ロードバランサーとネットワークアドレス変換 (NAT) デバイスがあり、外部アドレスおよびプライベートサブネットのインスタンスと通信できます。
-
プライベートサブネットにはアプリケーションサーバーがあり、パブリックサブネットの NAT およびロードバランサーと通信できますが、外部アドレスとは直接通信できません。
-
- インターネットゲートウェイ
-
インターネットゲートウェイがある場合は、パブリック IP アドレスを使用するインスタンス (ロードバランサーなど) が VPC 外のアドレスと通信できます。
- ロードバランサー
-
Elastic Load Balancing ロードバランサーは、ユーザーからの着信トラフィックを処理し、プライベートサブネットのアプリケーションサーバーに配信して、ユーザーにレスポンスを返します。
- NAT
-
NAT デバイスは、アプリケーションサーバーが制限付きでインターネットにアクセスできるようにします。通常は、外部リポジトリからソフトウェア更新をダウンロードするなどの目的で使用されます。すべての AWS OpsWorks スタックインスタンスは、AWS OpsWorks スタックおよび適切な Linux リポジトリと通信できる必要があります。この問題に対処する方法の 1 つは、関連付けられた Elastic IP アドレスを使用する NAT デバイスをパブリックサブネット内に配置することです。そうすれば、プライベートサブネット内のインスタンスからのアウトバウンドトラフィックを NAT を介してルーティングすることができます。
注記
NAT インスタンスが 1 つあれば、プライベートサブネットのアウトバウンドトラフィックに単一障害点が生まれます。一方に障害が発生した場合に互いにその機能を引き継ぐ NAT インスタンスのペアを使用して VPC を設定することで、信頼性を向上させることができます。詳細については、「Amazon VPC NAT インスタンスの高可用性」を参照してください。NAT ゲートウェイを使用することもできます。詳細については、『Amazon VPC ユーザーガイド』の「NAT」を参照してください。
最適な VPC 設定は、AWS OpsWorks スタックスタックによって異なります。特定の VPC 設定を使用する場合のいくつかの例を次に示します。その他の VPC のシナリオの例については、「Amazon VPC のシナリオ」を参照してください。
- パブリックサブネットで 1 つのインスタンスを使用する
-
パブリックにアクセスできない Amazon RDS インスタンスなどのプライベートリソースに関連付けられていないシングルインスタンスのスタックがある場合、1 つのサブネットを持つ VPC を作成し、そのサブネットにインスタンスを配置できます。デフォルトの VPC を使用しない場合、このインスタンスの Layer では Elastic IP アドレスをこのインスタンスに割り当てる必要があります。詳細については、「OpsWorks Layer の基本」を参照してください。
- プライベートリソースを使用する
-
パブリックにアクセス可能にしてはならないリソースがある場合は、パブリックサブネット 1 つとプライベートサブネット 1 つを持つ VPC を作成できます。たとえば、Auto Scaling を使用する負荷分散環境では、プライベートサブネットにすべての Amazon EC2 インスタンスを配置し、パブリックサブネットにロードバランサーを配置することができます。こうすると、インターネットから Amazon EC2 インスタンスに直接アクセスすることはできませんが、すべての着信トラフィックはロードバランサー経由でルーティングされます。
プライベートサブネットでは、インスタンスを Amazon EC2 の直接ユーザーアクセスから隔離しますが、AWS および Linux パッケージリポジトリへのアウトバウンドリクエストは送信する必要があります。このようなリクエストを許可するために、たとえば、固有の Elastic IP アドレスを持つネットワークアドレス変換 (NAT) デバイスを使用し、NAT 経由でインスタンスのアウトバウンドトラフィックをルーティングすることができます。前の例に示すように、NAT はロードバランサーと同じパブリックサブネットに配置できます。
-
Amazon RDS インスタンスなどのバックエンドデータベースを使用している場合は、それらのインスタンスをプライベートサブネットに配置できます。Amazon RDS インスタンスの場合、異なるアベイラビリティーゾーンのサブネットを少なくとも 2 つ指定する必要があります。
-
プライベートサブネット内のインスタンスに直接アクセスする必要がある場合は (SSH を使用してインスタンスにログインする場合など)、インターネットからのリクエストをプロキシする拠点ホストをパブリックサブネット内に配置できます。
-
- 独自のネットワークを AWS に拡張する
-
独自のネットワークをクラウドに拡張し、VPC からインターネットへの直接アクセスを可能にする必要がある場合は、VPN ゲートウェイを作成できます。詳細については、「シナリオ 3: パブリックサブネットとプライベートサブネット、およびハードウェア VPN アクセスを持つ VPC」を参照してください。
AWS OpsWorks スタックスタックの VPC の作成
このセクションでは、サンプルの AWS CloudFormation テンプレートを使用することで、AWS OpsWorks スタックのスタックに VPC を作成する方法について説明します。テンプレートは、http://cloudformation-templates-us-east-1.s3.amazonaws.com/OpsWorksinVPC.template からダウンロードできます。このトピックで説明するような VPC を手動で作成する方法の詳細については、「シナリオ 2: パブリックサブネットとプライベートサブネットを持つ VPC」を参照してください。ルーティングテーブル、セキュリティグループなどを設定する方法の詳細については、サンプルテンプレートを参照してください。
注記
デフォルトでは、10.0.0.1/24 - us-east-1b
など、CIDR 範囲とアベイラビリティーゾーンを連結したサブネット名が、AWS OpsWorks スタックで表示されます。この名前をよりわかりやすくするには、[Key] を Name
に、[Value] をサブネット名に設定して各サブネットのタグを作成します。AWS OpsWorks スタックは、このサブネット名をデフォルト名に追加します。たとえば、次のプライベートサブネットには
[Name] が Private
に設定されたタグがあり、OpsWorks では 10.0.0.1/24
us-east - 1b - Private
のように表示されます。
AWS CloudFormation コンソールを使用して、わずかのステップで VPC でテンプレートを起動できます。次の手順では、サンプルテンプレートを使用して 米国東部 (バージニア北部) リージョンに VPC を作成します。テンプレートを使用してその他のリージョンに VPC を作成する方法については、手順の後の注意を参照してください。
VPC を作成するには
-
AWS CloudFormation コンソールを開き、[米国東部 (バージニア北部)] リージョンを選択し、[スタックの作成] を選びます。
-
[テンプレートの選択] ページで、[Amazon S3 テンプレート URL の指定] を選択し、テンプレート URL
http://cloudformation-templates-us-east-1.s3.amazonaws.com/OpsWorksinVPC.template
を貼り付けます。[Continue] を選択します。また、「AWS CloudFormation サンプルテンプレート」を開き、AWS OpsWorks スタック VPC のテンプレートを見つけ、[Launch Stack] を選択して、このスタックを起動することもできます。
-
[Specify Parameters (パラメータを指定)] ページで、デフォルトの値をそのまま使用して、[Continue (続行)] を選択します。
-
[Add Tags (タグの追加)] ページで、[Key] を
Name
に、[Value] を VPC の名前に設定してタグを作成します。このタグにより、AWS OpsWorks スタックスタックの作成時に VPC を識別しやすくなります。 -
[Continue (続行)] を選択し、[Close (閉じる)] を選択して、スタックを起動します。
注意: 次のいずれかの方法で、その他のリージョンに VPC を作成できます。
-
[Using Templates in Different Regions (異なるリージョンでのテンプレートの使用)] で適切なリージョンを選択し、AWS OpsWorks スタック VPC のテンプレートを見つけて、[Launch Stack] を選びます。
-
テンプレートファイルをシステムにコピーし、AWS CloudFormation コンソールで適切なリージョンを選択し、[スタックの作成] ウィザードの [テンプレートを Amazon S3 へのアップロード] オプションを使用して、システムからテンプレートをアップロードします。
サンプルテンプレートには、AWS OpsWorks スタックの作成に必要な VPC、サブネット、およびロードバランサー ID を提供する出力が含まれています。AWS CloudFormation コンソールウィンドウの下部にある [出力] タブを選択すると、それらの出力を表示できます。
