AWS の使用開始 - .NET ウェブアプリのホスティング

AWS の使用開始
.NET ウェブアプリのホスティング
AWS の使用開始 .NET ウェブアプリのホスティング
AWS の使用開始 .NET ウェブアプリのホスティング
AWS の使用開始: .NET ウェブアプリのホスティング
Copyright © 2017 Amazon Web Services, Inc. and/or its affiliates. All rights reserved.
Amazon's trademarks and trade dress may not be used in connection with any product or service that is not Amazon's, in any
manner that is likely to cause confusion among customers, or in any manner that disparages or discredits Amazon. All other
trademarks not owned by Amazon are the property of their respective owners, who may or may not be affiliated with, connected to,
or sponsored by Amazon.
AWS の使用開始 .NET ウェブアプリのホスティング
Table of Contents
.NET ウェブアプリのホスティング .................................................................................................. 1
ウェブアプリのホスティングアーキテクチャ ............................................................................. 1
チュートリアル ..................................................................................................................... 3
料金 .................................................................................................................................... 3
セットアップ ................................................................................................................................ 4
Sign Up for AWS .................................................................................................................. 4
Create an IAM User .............................................................................................................. 4
Create a Key Pair ................................................................................................................. 6
Virtual Private Cloud(VPC)の設定 ........................................................................................ 7
ステップ 1: バケットを作成する ..................................................................................................... 9
ステップ 2: アプリケーションサーバーを作成する ........................................................................... 11
Amazon EC2 インスタンス用のセキュリティグループを作成します。 ......................................... 11
IAM ロールを作成します。 ................................................................................................... 12
EC2 インスタンスを起動する ................................................................................................ 13
ステップ 3: データベースサーバーを作成する ................................................................................. 15
DB インスタンスのセキュリティグループを作成する ................................................................ 15
DB インスタンスの起動 ....................................................................................................... 16
ステップ 4: アプリをデプロイする ................................................................................................. 20
EC2 インスタンスへの接続 ................................................................................................... 20
EC2 インスタンスの設定 ...................................................................................................... 21
サンプルアプリの設定 .......................................................................................................... 23
カスタム Windows AMI の作成 .............................................................................................. 24
ステップ 5: ウェブアプリのスケーリングと負荷分散を実行する ......................................................... 26
Auto Scaling と負荷分散を設定する ....................................................................................... 26
ロードバランサーをテストする ............................................................................................. 28
ステップ 6: ウェブサイトへのドメイン名の関連付け ........................................................................ 30
ドメイン名を登録する .......................................................................................................... 30
ドメインのトラフィックをルーティングするためにネームサーバーを割り当てる .......................... 31
ドメインとサブドメインのレコードセットを作成する ............................................................... 31
DNS プロバイダーをセットアップする ................................................................................... 32
ステップ 7: クリーンアップ .......................................................................................................... 33
Amazon Route 53 ホストゾーンの削除 ................................................................................... 33
Auto Scaling グループを削除する .......................................................................................... 34
ロードバランサーを削除する ................................................................................................. 34
カスタム AMI の削除 ........................................................................................................... 34
DB インスタンスの終了 ....................................................................................................... 35
Amazon S3 バケットの削除 .................................................................................................. 35
Related Resources ...................................................................................................................... 37
iv
AWS の使用開始 .NET ウェブアプリのホスティング
ウェブアプリのホスティングアーキテクチャ
アマゾン ウェブ サービスでの .NET
ウェブアプリのホスティング
ウェブアプリは、ユーザーがウェブブラウザまたは専用のウェブクライアントでアクセスする任意の
ソフトウェアです。ウェブアプリは、通常、論理的な階層として構造化されます。たとえば、一般的
な構造では 3 つの階層が使用されます。最初の階層はウェブブラウザで、ユーザーインターフェイス
を表示します。中間層はアプリケーションサーバーで、アプリケーションの機能を提供します。3 番
目の階層はデータベースサーバーまたはファイルシステムで、データを保存します。
このチュートリアルでは、AWS インフラストラクチャで、スケーラブルで堅牢なウェブアプリをホス
トするプロセスについて順を追って説明します。ベストプラクティスを示しながら、サンプル .NET
アプリをデプロイします。このチュートリアルを完了すると、以下のことができるようになります。
• バケットと呼ばれる場所を作成し、HTML、CSS、JavaScript、イメージなど、ウェブアプリの静的
ファイルを格納するために使用します。
• EC2 インスタンスと呼ばれる仮想サーバーを作成し、クラウドでアプリケーションサーバーとして
使用します。
• DB インスタンスと呼ばれるデータベースサーバーを作成します。
• サンプル .NET ウェブアプリをアプリケーションサーバーにデプロイします。
• トラフィックを最小数のアプリケーションサーバーに分散させるようにスケーリングと負荷分散を
セットアップします。
• ドメイン名とウェブアプリを関連付けます。
ウェブアプリのホスティングアーキテクチャ
ウェブアプリを作成してデプロイする前に、要件を確実に満たすアーキテクチャを設計する必要
があります。次の表は、Amazon EC2、Amazon EBS、Amazon S3、Auto Scaling、Elastic Load
Balancing、Amazon CloudWatch、Amazon Route 53、Amazon CloudFront がどのように連携して、
シームレスでコスト効率の高いアーキテクチャを実現できるかを示しています。
要件
ソリューション
低価格で信頼性の高いアプリ
ケーションサーバーとデータ
ベースサーバー
• Amazon EC2 はクラウドの仮想サーバーを提供します。仮想
サーバーにアクセス可能なプロトコル、ポート、およびソース
IP アドレス範囲を指定し制御します。
1
AWS の使用開始 .NET ウェブアプリのホスティング
ウェブアプリのホスティングアーキテクチャ
要件
ソリューション
• Amazon EBS は Amazon EC2 仮想サーバーに永続的ファイルシ
ステムを提供します。
• Amazon RDS は管理しやすくコスト効率が良くサイズ変更が可
能なデータベースサーバーを提供します。
ピーク容量を処理でき、余分な
容量が必要ないときにはコスト
が発生しないサーバーをプロビ
ジョニングする簡単な方法
• Elastic Load Balancing はホストのヘルスチェックをサポート
し、アベイラビリティーゾーンと呼ばれる複数の分離された場
所にまたがって仮想サーバーにトラフィックを分散し、負荷分
散のローテーションからダイナミックに仮想サーバーを追加ま
たは削除します。
• Auto Scaling は必要に応じて拡大または縮小できるサーバーグ
ループをサポートします。
• CloudWatch は仮想サーバーのメトリックスデータを収集しま
す。このデータは Auto Scaling で利用できます。
ウェブアプリにユーザーをルー
ティングする信頼性とコスト効
率に優れた方法
• Amazon Route 53 は人間が読み取れる名前を IP アドレスに
マッピングします。
次の図は、前の表で説明したサービスを採用するウェブアプリ向けのアーキテクチャの例を示して
います。ウェブ層とアプリケーション層は、パブリックサブネットの EC2 インスタンスで実行され
ます。RDP 経由での EC2 インスタンスへのアクセスは、ファイアウォールとして機能するセキュリ
ティグループによって制御されます。Auto Scaling グループには、現在の負荷を処理できるように
拡張できる EC2 インスタンス群が保持されます。この Auto Scaling グループは、単一のアベイラビ
リティーゾーンで発生する可能性のある障害から保護するため、複数のアベイラビリティーゾーン
にまたがっています。ロードバランサーは、EC2 インスタンス間でトラフィックを均等に分散しま
す。Auto Scaling グループが負荷に基づいてインスタンスを起動または終了すると、ロードバラン
サーはそれに応じて自動的に調整します。データベース層は、プライベートサブネットの DB インス
タンスによって構成されます。これはマスターとローカルスレーブを含み、フェイルオーバーに備え
て複数のアベイラビリティーゾーンに配置されます。EC2 インスタンスから DB インスタンスへのア
クセスは、セキュリティグループによって制御されます。Amazon S3 はアプリの静的コンテンツを格
納します。Amazon Route 53 は、AWS にホストされているインフラストラクチャに対して、ドメイ
ン名の安全で信頼できるルーティングを提供します。
2
AWS の使用開始 .NET ウェブアプリのホスティング
チュートリアル
チュートリアル
このチュートリアルでは、AWS で .NET ウェブアプリを ホストするプロセスについて順を追って説
明します。写真のアップロードや参照を可能にするサンプルアプリをデプロイします。AWS へのアク
セスには AWS マネジメントコンソールを使用します。
1.
ウェブアプリのファイル用のバケットの作成 (p. 9)
2.
3.
アプリケーションサーバーの作成 (p. 11)
データベースサーバーの作成 (p. 15)
4.
5.
アプリケーションサーバーへのアプリのデプロイ (p. 20)
ウェブアプリのスケーリングと負荷分散 (p. 26)
6.
ドメイン名とウェブサイトを関連付ける (p. 30)
7.
クリーンアップ (p. 33)
または、Elastic Beanstalk を使用して、サーバーの作成、負荷分散、スケーリング、および監視を
行うことができます。詳細については、AWS の使用開始: Deploying a Web App または AWS Elastic
Beanstalk 開発者ガイド を参照してください。
料金
AWS 簡易見積りツールを使用して、AWS でウェブアプリをホストするための概算コストを計算しま
す。
AWS アカウントを作成したのが過去 12 か月以内であれば、AWS 無料利用枠の対象となります。
AWS の料金に関する詳細については、「料金」を参照してください。
3
AWS の使用開始 .NET ウェブアプリのホスティング
Sign Up for AWS
AWS でホストするウェブアプリを
セットアップする
このチュートリアルを開始する前に、まだ実行していない場合は次のタスクを実行します。
タスク
• Sign Up for AWS (p. 4)
• Create an IAM User (p. 4)
• Create a Key Pair (p. 6)
• Virtual Private Cloud(VPC)の設定 (p. 7)
Sign Up for AWS
When you sign up for Amazon Web Services (AWS), your AWS account is automatically signed up for
all services in AWS and you can start using them immediately. You are charged only for the services
that you use.
If you created your AWS account less than 12 months ago, you can get started with AWS for free. For
more information, see AWS Free Tier.
If you have an AWS account already, skip to the next step. If you don't have an AWS account, use the
following procedure to create one.
To create an AWS account
1.
https://aws.amazon.com/ を開き、[AWS アカウントの作成] を選択します。
2.
オンラインの手順に従います。
サインアップ手順の一環として、通話呼び出しを受け取り、電話のキーパッドを用いて PIN を入
力することが求められます。
Create an IAM User
Services in AWS require that you provide credentials when you access them, so that the service can
determine whether you have permission to access its resources. The console requires your password.
You can create access keys for your AWS account to access the command line interface or API.
4
AWS の使用開始 .NET ウェブアプリのホスティング
Create an IAM User
However, we don't recommend that you access AWS using the credentials for your AWS account;
we recommend that you use AWS Identity and Access Management (IAM) instead in order to better
protect your AWS resources from unauthorized access.
Create an IAM user, and then add the user to an IAM group with administrative permissions or and
grant this user administrative permissions. You can then access AWS using a special URL and the
credentials for the IAM user.
If you signed up for AWS but have not created an IAM user for yourself, you can create one using the
IAM console.
自分用の IAM ユーザーを作成し、そのユーザーを管理者グループに追加するには
1.
https://console.aws.amazon.com/iam/ で Identity and Access Management (IAM) コンソールにサ
インインします。
2.
ナビゲーションペインで [Users]、[Add user] の順に選択します。
3.
[User name] で、ユーザー名 (Administrator など) を入力します。名前には、英数字のほか
に、プラス記号 (+)、等号 (=)、カンマ (,)、ピリオド (.)、アットマーク (@)、下線 (_)、ハイフン
(-) を使用できます。名前は、大文字と小文字が区別されず、最大 64 文字で構成できます。
4.
[AWS マネジメントコンソール access] の横のチェックボックスをオンにし、[Custom password]
を選択して、新しいユーザーのパスワードをテキストボックスに入力します。オプションとして
[Require password reset] を選択し、ユーザーが次回サインインしたときに新しいパスワードを選
択することを強制できます。
5.
6.
[Next: Permissions] を選択します。
[Set permissions for user] ページで、[Add user to group] を選択します。
7.
8.
[Create group] を選択します。
[Create group] ダイアログボックスで、新しいグループの名前を入力します。名前には、英数字
のほかに、プラス記号 (+)、等号 (=)、カンマ (,)、ピリオド (.)、アットマーク (@)、下線 (_)、ハ
イフン (-) を使用できます。名前は、大文字と小文字が区別されず、最大 128 文字で構成できま
す。
9. [Filter] で、[Job function] を選択します。
10. ポリシーリストで、[AdministratorAccess] のチェックボックスをオンにします。次に、[Create
group] を選択します。
11. グループのリストに戻り、新しいグループのチェックボックスをオンにします。必要に応じて
[Refresh] を選択し、リスト内のグループを表示します。
12. [Next: Review] を選択して、新しいユーザーに追加するグループメンバーシップのリストを表示
します。続行する準備ができたら、[Create user] を選択します。
この同じプロセスを繰り返して新しいグループとユーザーを作成し、AWS アカウントのリソースへの
アクセス権をユーザーに付与できます。ポリシーを使用して特定の AWS リソースに対するユーザー
のアクセス権限を制限する方法については、「アクセス管理」と「AWS リソースの管理に関するポリ
シーの例」を参照してください。
To sign in as this new IAM user, sign out of the AWS console, then use the following URL, where
your_aws_account_id is your AWS account number without the hyphens (for example, if your AWS
account number is 1234-5678-9012, your AWS account ID is 123456789012):
https://your_aws_account_id.signin.aws.amazon.com/console/
Enter the IAM user name and password that you just created. When you're signed in, the navigation
bar displays "your_user_name @ your_aws_account_id".
If you don't want the URL for your sign-in page to contain your AWS account ID, you can create an
account alias. From the IAM dashboard, click Customize and enter an alias, such as your company
name. To sign in after you create an account alias, use the following URL:
5
AWS の使用開始 .NET ウェブアプリのホスティング
Create a Key Pair
https://your_account_alias.signin.aws.amazon.com/console/
To verify the sign-in link for IAM users for your account, open the IAM console and check under IAM
users sign-in link on the dashboard.
Create a Key Pair
AWS uses public-key cryptography to secure the login information for your instance. You specify
the name of the key pair when you launch your instance, then provide the private key to obtain the
administrator password for your Windows instance so you can log in using RDP.
If you haven't created a key pair already, you can create one using the Amazon EC2 console.
To create a key pair
1.
Open the Amazon EC2 console.
2.
From the navigation bar, in the region selector, click 米国西部 (オレゴン).
3.
In the navigation pane, click Key Pairs.
4.
5.
Click Create Key Pair.
Enter a name for the new key pair in the Key pair name field of the Create Key Pair dialog box,
and then click Create. Choose a name that is easy for you to remember.
6.
The private key file is automatically downloaded by your browser. The base file name is the name
you specified as the name of your key pair, and the file name extension is .pem. Save the private
key file in a safe place.
Important
7.
This is the only chance for you to save the private key file. You'll need to provide the name
of your key pair when you launch an instance and the corresponding private key each time
you connect to the instance.
Prepare the private key file. This process depends on the operating system of the computer that
you're using.
•
If your computer runs Mac OS X or Linux, use the following command to set the permissions
of your private key file so that only you can read it.
$ chmod 400 my-key-pair.pem
•
If your computer runs Windows, use the following steps to convert your .pem file to a .ppk file
for use with PuTTY.
a.
b.
c.
d.
e.
f.
g.
Download and install PuTTY from http://www.chiark.greenend.org.uk/~sgtatham/putty/.
Be sure to install the entire suite.
Start PuTTYgen (for example, from the Start menu, click All Programs > PuTTY >
PuTTYgen).
Under Type of key to generate, select SSH-2 RSA.
Click Load. By default, PuTTYgen displays only files with the extension .ppk. To locate
your .pem file, select the option to display files of all types.
Select your private key file and then click Open. Click OK to dismiss the confirmation
dialog box.
Click Save private key. PuTTYgen displays a warning about saving the key without a
passphrase. Click Yes.
Specify the same name that you used for the key pair (for example, my-key-pair) and
then click Save. PuTTY automatically adds the .ppk file extension.
6
AWS の使用開始 .NET ウェブアプリのホスティング
Virtual Private Cloud(VPC)の設定
Virtual Private Cloud(VPC)の設定
Amazon VPC を使用すると、Virtual Private Cloud(VPC)と呼ばれるユーザーが定義した仮想ネット
ワークに対して AWS リソースを起動できます。このチュートリアルでは VPC を使用する必要があり
ます。したがって、デフォルト VPC が既に存在するか確認し、存在しない場合は作成します。
デフォルト VPC が存在するかテストするには
1.
Amazon VPC コンソールを開きます。
2.
ナビゲーションバーで、[米国西部 (オレゴン)] がリージョンとして選択されていることを確認し
ます。
3.
ナビゲーションペインで [Your VPCs] をクリックします。
4.
次のいずれかが当てはまります。
• リストが空です。つまり、デフォルト VPC が存在しません。
• リストにデフォルト VPC(CIDR ブロックが 172.31.0.0/16 の VPC)があります。
• リストにデフォルト以外の VPC(CIDR ブロックが 172.31.0.0/16 でない VPC)が 1 つ以
上あります。
デフォルト VPC が存在する場合は、このチュートリアルでそれを使用でき、次の手順は省略できま
す。そうでない場合は、次の手順に従って、このチュートリアルで使用する 2 つのパブリックサブ
ネットを持つ VPC を作成します。
VPC を作成するには
1.
VPC ダッシュボードで、[Start VPC Wizard] をクリックします。
2.
[Step 1: Select a VPC Configuration] ページで、[VPC with a Single Public Subnet] が選択されて
いることを確認し、[Select] をクリックします。
3.
[Step 2: VPC with a Single Public Subnet] ページで、以下を実行します。
a.
[VPC name] に、VPC のわかりやすい名前を入力します。
b.
[Availability Zone] で、リストから最初のアベイラビリティーゾーンを選択します。
c.
[Subnet name] で、名前を「Public subnet」から「Public subnet 1」に変更します。
d.
他のデフォルトの設定はそのままにしておき、[Create VPC] をクリックします。
e.
確認ページで、[OK] をクリックします。
4.
ナビゲーションペインで [Route Tables] をクリックします。[Main] 列が [Yes] のルートテーブル
を見つけます。これがメインルートテーブルです。メインルートテーブルの [Name] 列をクリッ
クし、「Main」と入力して Enter キーを押します。他のルートテーブルの [Name] 列をクリック
し、「Custom」と入力して Enter キーを押します。
5.
2 番目のパブリックサブネットを以下のように追加して、アプリケーションサーバーがサブネッ
トを 2 つ持つようにします(デフォルト VPC は既に各アベイラビリティーゾーン用のパブリッ
クサブネットを持つことに注意してください)。
a.
ナビゲーションペインで [Subnets] をクリックします。
b.
[Create Subnet] をクリックします。
c.
[Name tag] で、名前として「Public subnet 2」と入力します。
d.
[VPC] で、自分の VPC を選択します。
e.
[Availability Zone] で、リストから 2 番目のアベイラビリティーゾーンを選択します。
f.
[CIDR block] で、「10.0.1.0/24」と入力します。
g.
[Yes, Create] をクリックします。
h.
[Public subnet 2] という名前のサブネットを選択し、[Route Table] タブを選択します。
[Edit] をクリックし、[Change to] から [Custom] という名前のルートテーブルを選択し、
7
AWS の使用開始 .NET ウェブアプリのホスティング
Virtual Private Cloud(VPC)の設定
[Save] をクリックします。このステップは、このサブネットを、インターネットへのルート
を持つパブリックサブネットにするために必要です。
次に、デフォルト VPC または作成した VPC にデータベースサーバー用のプライベートサブネットを
追加する必要があります。
2 つのプライベートサブネットを VPC に追加するには
1.
ナビゲーションペインで [Subnets] をクリックします。
2.
3.
[Create Subnet] をクリックします。
[Name tag] で、名前として「Private subnet 1」と入力します。
4.
[VPC] で、自分の VPC を選択します。
5.
[Availability Zone] で、リストから最初のアベイラビリティーゾーンを選択します。
6.
7.
[CIDR block] で、「10.0.2.0/24」と入力します。
[Yes, Create] をクリックします。
8.
[Create Subnet] をクリックします。
9.
[Name tag] で、名前として「Private subnet 2」と入力します。
10. [VPC] で、自分の VPC を選択します。
11. [Availability Zone] で、リストから 2 番目のアベイラビリティーゾーンを選択します。
12. [CIDR block] で、「10.0.3.0/24」と入力します。
13. [Yes, Create] をクリックします。
Amazon VPC の詳細については、Amazon VPC ユーザーガイド を参照してください。
8
AWS の使用開始 .NET ウェブアプリのホスティング
ステップ 1: アプリのファイル用の
バケットを作成する
Amazon Simple Storage Service(Amazon S3)を使用して、アプリの写真を保存できます。Amazon
S3 のストレージは複数のデータセンターに分散して冗長化できるので、低コストで高レベルの耐久性
を実現できます。各ファイルは、Amazon S3 内のバケットと呼ばれる場所にオブジェクトとして格納
されます。
Note
バケットの作成時には課金されません。オブジェクトをバケットに保管するとき、そしてバ
ケットへ、またはバケットからオブジェクトを転送するときにのみ請求が発生します。詳細
については、Amazon S3 料金表を参照してください。
アプリの静的コンテンツ用のバケットを作成します。アプリのデプロイ時にこのバケットにオブジェ
クトを追加します。
アプリ用のバケットを作成するには
1.
Amazon S3 コンソールを開きます。
2.
[Create Bucket] をクリックします。
3.
[Create a Bucket – Select a Bucket Name and Region] ダイアログボックスで、以下の操作を実行
します。
a.
[Bucket Name] ボックスで、バケットの名前を指定します。この名前は、Amazon S3 にあ
る既存のすべてのバケット名と異なる必要があります。一意性を確実にする方法の 1 つは、
バケット名を組織名で始めることです。AWS リージョンによっては、バケット名にその他
の制限があることがあります。詳細は、Amazon Simple Storage Service 開発者ガイドの
「Bucket Restrictions and Limitations」を参照してください。
b.
[Region] ボックスで、[Oregon] を選択します。
c.
[Create] をクリックします。
9
AWS の使用開始 .NET ウェブアプリのホスティング
10
AWS の使用開始 .NET ウェブアプリのホスティング
Amazon EC2 インスタンス用のセ
キュリティグループを作成します。
ステップ 2: アプリケーションサー
バーを作成する
Amazon EC2 を使用して、ウェブアプリを実行するための仮想サーバーを作成できます。これらの仮
想サーバーは、EC2 インスタンスと呼ばれます。通常、Amazon マシンイメージ(AMI)と呼ばれる
ベースイメージから開始します。
Amazon EC2 を使用して仮想サーバーを作成するには、次のタスクを完了します。
タスク
• Amazon EC2 インスタンス用のセキュリティグループを作成します。 (p. 11)
• IAM ロールを作成します。 (p. 12)
• EC2 インスタンスを起動する (p. 13)
Amazon EC2 インスタンス用のセキュリティグ
ループを作成します。
セキュリティグループには、EC2 インスタンスに到達できるトラフィックを制御するファイアウォー
ルとしての働きがあります。インスタンスを起動する際、1 つまたは複数のセキュリティグループに
割り当てることができます。セキュリティグループが割り当てられたインスタンスに到達できるトラ
フィックを制御するルールを、各セキュリティグループに追加します。セキュリティグループのルー
ルはいつでも変更できます。新しいルールは直ちに有効になります。
このチュートリアルでは、セキュリティグループを作成し、次のルールを追加します。
• すべての場所からのインバウンド HTTP アクセスを許可する
• インスタンスに接続できるようにコンピュータのパブリック IP アドレスからのインバウンド RDP
のトラフィックを許可する
セキュリティグループを作成して設定するには
1.
単一のコンピュータや信頼するネットワーク上のすべてのコンピュータなど、インスタンスへの
アクセスを必要とするユーザーを決定します。このチュートリアルでは、コンピュータのパブ
11
AWS の使用開始 .NET ウェブアプリのホスティング
IAM ロールを作成します。
リック IP アドレスを使用できます。この IP アドレスはサービスを使用して取得できます。たと
えば、AWS では、http://checkip.amazonaws.com/ のようなサービスを提供しています。IP アド
レスを提供する別のサービスを検索するには、検索フレーズ「what is my IP address」を使用し
ます。
ISP 経由で、またはファイアウォールの内側から静的な IP アドレスなしで接続している場合は、
クライアントコンピュータで使用されている IP アドレスの範囲を見つける必要があります。こ
のアドレス範囲が不明の場合、このチュートリアルでは 0.0.0.0/0 を使用してください。ただ
し、これによりだれでも RDP を使用してインスタンスにアクセスできるため、実稼働環境では
安全ではありません。
2.
Amazon EC2 コンソールを開きます。
Tip
Amazon VPC コンソールを使いセキュリティグループを作成することも可能です。ただ
し、Amazon EC2 コンソールの代わりに Amazon VPC コンソールを使う場合は、これら
の方向を変更しなければならない場合があります。
3.
ナビゲーションバーで、[米国西部 (オレゴン)] がリージョンとして選択されていることを確認し
ます。
4.
ナビゲーションペインで [Security Groups] をクリックして、[Create Security Group] をクリック
します。
5.
セキュリティグループの名前として「WebServerSG」を入力し、説明を入力します。
6.
] リストから使用している VPC を選択します。
7.
[Inbound] タブで、次のようにルールを追加します。
8.
a.
[Add Rule] をクリックし、[Type] リストから [RDP] を選択します。[Source] で、[Custom IP]
を選択し、テキストボックスのステップ 1 で決定したパブリック IP アドレスの範囲を入力し
ます。
b.
[Add Rule] をクリックし、[Type] リストから [HTTP] を選択します。
[Create] をクリックします。
詳細については、『Windows インスタンスの Amazon EC2 ユーザーガイド』の「セキュリティグ
ループ」を参照してください。
IAM ロールを作成します。
AWS へのリクエストはすべて、AWS が発行した認証情報を使用して暗号で署名される必要がありま
す。したがって、EC2 インスタンスで実行するソフトウェアの認証情報を管理するための戦略が必
要です。これらの認証情報を、安全で、ソフトウェアにアクセスできる方法で、配信、保存、および
ローテーションする必要があります。
IAM ロールは、インスタンスで実行しているソフトウェアの AWS 認証情報を効果的に管理できるよ
うに設計されています。IAM ロールを作成し、ソフトウェアに必要なアクセス許可を使用してその
ロールを設定します。このアプローチの詳細については、『Windows インスタンスの Amazon EC2
ユーザーガイド』の「Amazon EC2 の IAM ロール」および『IAM ユーザーガイド』の「ロール(委任
とフェデレーション)」を参照してください。
以下の手順では、AWS へのフルアクセスをウェブアプリに付与する IAM ロールを作成します。実稼
働環境では、ウェブアプリがアクセスできるリソースとサービスを制限できます。
AWS へのフルアクセスを持つ IAM ロールを作成するには
1.
IAM コンソールを開きます。
2.
ナビゲーションペインで [Roles] をクリックし、続いて [Create New Role] をクリックします。
12
AWS の使用開始 .NET ウェブアプリのホスティング
EC2 インスタンスを起動する
3.
ロールの名前を入力し、[Next Step] をクリックします。インスタンスを起動するときに必要にな
るため、この名前を忘れないでください。
4.
[AWS Service Roles] で、[Amazon EC2] を選択します。[Select Policy Template] で、[Power
User Access] を選択します。ポリシーを確認し、[Next Step] をクリックします。
5.
ロール情報を確認し、[Create Role] をクリックします。
EC2 インスタンスを起動する
キーペア、セキュリティグループ、IAM ロールを作成したので、インスタンスを起動する準備ができ
ました。
Important
AWS アカウントを作成したのが過去 12 か月以内で、Amazon EC2 と Amazon EBS の無料利
用枠を使い切っていない場合、無料利用枠内で利用できるオプションを選択することで、こ
のインスタンスには一切費用がかかりません。それ以外の場合は、このインスタンスを起動
してから終了するまでの間、インスタンスがアイドル状態のままであっても、Amazon EC2
の標準使用料が発生します。中断することなくチュートリアルを実行し、チュートリアルが
終了したらインスタンスを終了する場合、合計料金は最小限に抑えられます。詳細について
は、「Amazon EC2 料金表」を参照してください。
EC2 インスタンスを起動するには
1.
2.
3.
4.
5.
6.
Amazon EC2 コンソールを開きます。
ナビゲーションバーで、[米国西部 (オレゴン)] がリージョンとして選択されていることを確認し
ます。
ナビゲーションペインで [Instances] をクリックし、[Launch Instance] をクリックします。
[Choose an Amazon Machine Image] ページで、[Free tier only] をクリックし、Windows AMI を
選択します。このチュートリアルの説明は、Windows Server 2012 R2 を実行していることを前提
としています。
[Choose an Instance Type] ページで、デフォルトでは t2.micro インスタンスが選択されてい
ます。無料利用枠内に抑えるには、このインスタンスタイプのままにします。Next: Configure
Instance Details をクリックします。
[Configure Instance Details] ページで以下の操作を実行します。
a.
T2 インスタンスは、サブネットで起動する必要があります。[Network] から使用する VPC を
選択し、[Subnet] からパブリックサブネットのうち 1 つを選択します。
b.
[Auto-assign Public IP] について、リストで [Enable] が選択されていることを確認します。そ
れ以外の場合、インスタンスはパブリック IP アドレスまたはパブリック DNS 名を取得しま
せん。
c.
7.
8.
9.
[IAM role] から IAM ロールを選択します。インスタンスを起動するときに IAM ロールを選択
する必要があることに注意してください。実行中のインスタンスにロールを追加することは
できません。
d. [Review and Launch] をクリックします。ルートボリュームのタイプを指定するよう求められ
たら、タイプを選択し、[Next] をクリックします。
[Review Instance Launch] ページで、[Edit security groups] をクリックします。[Configure
Security Group] ページで、[Select an existing security group] をクリックし、作成したセキュリ
ティグループのリストから [WebServerSG] を選択して [Review and Launch] をクリックします。
[Review Instance Launch] ページで、[Launch] をクリックします。
[Select an existing key pair or create a new key pair] ダイアログボックスで、[Choose an existing
key pair] を選択し、「AWS でホストするウェブアプリをセットアップする (p. 4)」で作成した
キーペアを選択します。確認のチェックボックスをクリックし、[Launch Instances] をクリック
します。
13
AWS の使用開始 .NET ウェブアプリのホスティング
EC2 インスタンスを起動する
10. ナビゲーションペインの [Instances] をクリックして、インスタンスのステータスを表示します。
最初は、インスタンスのステータスは pending です。ステータスが running に変わったら、イ
ンスタンスは使用できる状態です。
14
AWS の使用開始 .NET ウェブアプリのホスティング
DB インスタンスのセキュリティグループを作成する
ステップ 3: データベースサーバー
を作成する
Amazon Relational Database Service(Amazon RDS)を使用してデータベースサーバーを実行でき
ます。このステップでは、マルチ AZ DB インスタンスを起動します。これは、Amazon RDS によっ
て、異なるアベイラビリティーゾーンに同期スタンバイレプリカが自動的にプロビジョニングされて
維持されることを意味します。DB インスタンスに対する更新は、別のアベイラビリティーゾーンに
あるスタンバイに同時にレプリケートされるので、同期が維持されるとともに、最新のデータベース
更新が DB インスタンスの障害から保護されます。特定のタイプの計画的メンテナンスの実行時、ま
たは DB インスタンスの障害やアベイラビリティーゾーンの障害の発生時に、Amazon RDS は自動的
にスタンバイにフェイルオーバーします。DB インスタンスの名前レコードは変化しないため、アプ
リでのデータベース操作は、管理者による手動での作業なしに再開できます。
タスク
• DB インスタンスのセキュリティグループを作成する (p. 15)
• DB インスタンスの起動 (p. 16)
DB インスタンスのセキュリティグループを作成
する
アプリケーションサーバーがデータベースサーバーにアクセスすることを許可するセキュリティグ
ループを作成します。
DB インスタンスのセキュリティグループを作成するには
1.
Amazon EC2 コンソールを開きます。
Tip
Amazon VPC コンソールを使いセキュリティグループを作成することも可能です。ただ
し、Amazon EC2 コンソールの代わりに Amazon VPC コンソールを使う場合は、これら
の方向を変更しなければならない場合があります。
15
AWS の使用開始 .NET ウェブアプリのホスティング
DB インスタンスの起動
2.
ナビゲーションバーで、[米国西部 (オレゴン)] がリージョンとして選択されていることを確認し
ます。
3.
ナビゲーションペインで [Security Groups] をクリックして、[Create Security Group] をクリック
します。
4.
セキュリティグループの名前として「DBServerSG」と入力し、説明を入力します。
5.
] リストから使用している VPC を選択します。
6.
[Inbound] タブで、[Add Rule] をクリックします。[Type] リストから [MS SQL] を選択します。
[Source] の [Custom IP] を選択し、テキストボックスに「WebServerSG」という文字列の入力を
開始し、表示された WebServerSG セキュリティグループを選択します。
7.
[Create] をクリックします。
DB インスタンスの起動
セキュリティグループを作成したので、インスタンスを起動する準備ができました。
Important
このインスタンスを起動してから終了するまでの間、インスタンスがアイドル状態のままで
あっても、Amazon RDS の標準使用料が発生します。中断することなくチュートリアルを実
行し、チュートリアルが終了したら DB インスタンスを終了する場合、合計料金は最小限に抑
えられます。詳細については、Amazon RDS 料金表を参照してください。
インスタンスを起動するには
1.
Amazon RDS コンソールを開きます。
2.
ナビゲーションバーで、[米国西部 (オレゴン)] がリージョンとして選択されていることを確認し
ます。
3.
ナビゲーションペインで、[Subnet Groups] をクリックし、[Create DB Subnet Group] をクリック
します。
4.
[Create DB Subnet Group] ページで次のように設定します。
a.
[Name] に名前を入力します。たとえば、「my-db-subnet-group」と入力します。
b.
[Description] に説明を入力します。
c.
[VPC ID] から VPC を選択します。
d.
[Availability Zone] で、リストから最初のアベイラビリティーゾーンを選択します。[Subnet
ID] からプライベートサブネットを選択し、[Add] をクリックします。
e.
[Availability Zone] で、リストから 2 番目のアベイラビリティーゾーンを選択します。
[Subnet ID] からプライベートサブネットを選択し、[Add] をクリックします。
f.
[Yes, Create] をクリックします。
5.
ナビゲーションペインで [Instances] をクリックし、[Launch DB Instance] をクリックします。
6.
[Select Engine] ページで、[MySQL] タブを選択し、[Select] をクリックします。
16
AWS の使用開始 .NET ウェブアプリのホスティング
DB インスタンスの起動
7.
[Do you plan to use this database for production purposes] ページで、[Yes, use Multi-AZ
Deployment and Provisioned IOPS Storage as defaults while creating this instance] を選択し、
[Next] をクリックします。
8.
[Specify DB Details] ページで、以下の作業を行います。
a.
デフォルトのライセンスモデルとデフォルトの DB エンジンバージョンをそのままにしてお
きます。
b.
[DB Instance Class] リストから [db.t2.micro] を選択します。
c.
[Multi-AZ Deployment] で、[Yes] を選択します。マルチ AZ 配置はより高コストですが、使用
することがベストプラクティスです。
d.
[Storage Type] から [General Purpose (SSD)] を選択し、[Allocated Storage] をデフォルト値
のままにしておきます。
e.
[DB Instance Identifier] に「my-db-instance」と入力します。
f.
[Master Username] に「db_user」と入力します。
g.
[Master Password] と[Confirm Password] にパスワードを入力します。安全な場所にパスワー
ドを記録します。
h.
[Next] をクリックします。
17
AWS の使用開始 .NET ウェブアプリのホスティング
DB インスタンスの起動
9.
[Configure Advanced Settings] ページで、以下の操作を行います。
a.
[Network & Security] で、[VPC] から VPC を選択し、[VPC Security Groups] から
[DBServerSG] を選択します。
b.
[Database Options] で、[Database Name] に「my_database」と入力します。
c.
[Launch DB Instance] をクリックします。
18
AWS の使用開始 .NET ウェブアプリのホスティング
DB インスタンスの起動
10. 起動には数分かかることがあります。インスタンスの作成中であるという通知が表示されたら、
[Close] をクリックします。
ナビゲーションペインの [Instances] をクリックして、DB インスタンスのステータスを表示します。
最初は、DB インスタンスのステータスは creating です。ステータスが available に変わった
ら、DB インスタンスは使用できる状態です。
19
AWS の使用開始 .NET ウェブアプリのホスティング
EC2 インスタンスへの接続
ステップ 4: アプリをデプロイする
以下のタスクを完了して、EC2 インスタンスにサンプル .NET アプリをデプロイします。
タスク
• EC2 インスタンスへの接続 (p. 20)
• EC2 インスタンスの設定 (p. 21)
• サンプルアプリの設定 (p. 23)
• カスタム Windows AMI の作成 (p. 24)
EC2 インスタンスへの接続
EC2 インスタンスを起動すると、それに接続して、普通のコンピュータと同じように使用できます。
Windows インスタンスに接続するには、最初の管理者パスワードを取得し、リモートデスクトップを
使用してインスタンスに接続するときにそのパスワードを指定する必要があります。
管理者アカウントの名前は、オペレーティングシステムの使用言語によって異なります。たとえば、
英語では Administrator、フランス語では Administrateur、ポルトガル語では Administrador です。詳細
については、Microsoft TechNet Wiki の「Localized Names for Administrator Account in Windows」を
参照してください。
Windows インスタンスに接続するには
1.
インスタンスが実行中になったあと数分間待ちます。その後、以下の手順に従って、インスタン
ス用に自動的に生成された管理者パスワードを取得します。
a.
[Instances] ページで、インスタンスを選択し、[Connect] をクリックします。
b.
[Connect To Your Instance] ダイアログボックスで、[Get Password] をクリックします。
c.
[Browse or Choose File] をクリックし、キーペアを作成したときに保存したプライベート
キーファイル(.pem)を見つけ、[Open] をクリックします。
d.
[Decrypt Password] をクリックします。コンソールに、インスタンスのデフォルトの管理者
パスワードが表示されます。
20
AWS の使用開始 .NET ウェブアプリのホスティング
EC2 インスタンスの設定
e.
2.
パスワードを保存するか、クリップボードにコピーします。このパスワードはインスタンス
に接続するのに必要です。
[Download Remote Desktop File] をクリックします。ブラウザによって .rdp ファイルを開くか、
保存するよう求められます。どちらでもかまいません。
• .rdp ファイルを開いた場合は、[Remote Desktop Connection] ダイアログボックスが表示されま
す。
• .rdp ファイルを保存した場合は、ダウンロードしたディレクトリまで移動して .rdp ファイルを
ダブルクリックすると、[Remote Desktop Connection] ダイアログボックスが表示されます。
3.
リモート接続の発行元が不明であるという警告が表示されることがあります。[Connect] をクリッ
クしてインスタンスに接続します。
4.
メッセージが表示されたら、オペレーティングシステムの管理者アカウントと、以前に記録また
はコピーしたパスワードを使用して、インスタンスにログインします。
Tip
コピーアンドペーストすると、データが壊れることがあります。ログインしようとした
ときに "Password Failed" というエラーが発生した場合は、パスワードを手動で入力して
ください。
5.
自己署名証明書の性質上、セキュリティ証明書を認証できないという警告が表示されることがあ
ります。[Yes] をクリックして続行します。
6.
インスタンスに接続したら、[Close] をクリックして [Connect To Your Instance] ダイアログボッ
クスを閉じます。
7.
(オプション)インスタンスの管理者アカウントのパスワードを変更できます。インスタンスか
らコマンドプロンプトウィンドウを開き(Windows キー + R キーを押し、「cmd」と入力して
Enter キーを押します)、以下のコマンドを実行します。
net use Administrator new_password
EC2 インスタンスの設定
インスタンスを設定するために、必要なサーバーコンポーネントをインストールして、ウェブサー
バーを起動します。
ウェブサーバーを起動するには
1.
インスタンスから、タスクバーの [Server Manager] をクリックします。
2.
[Add roles and features] をクリックします。
3.
[Before you begin] ページで、[Next] をクリックします。
4.
[Select installation type] ページで、[Role-based or feature-based installation] を選択して、[Next]
をクリックします。
5.
[Select destination server] ページで、サーバープールからインスタンスを選択して、[Next] をク
リックします。
6.
[Select server roles] ページで、[Web Server (IIS)] を選択し [Add features] をクリックして、
[Next] をクリックします。
7.
[Select features] ページで、[.NET Framework 4.5 Features] を展開して [ASP.NET 4.5] を選択
し、[Next] をクリックします。
8.
[Web Server Role (IIS)] ページで、[Next] をクリックします。
9.
[Select role services] ページで、[Application Development] を選択し、以下の機能を選択して、
[Next] をクリックします。
21
AWS の使用開始 .NET ウェブアプリのホスティング
EC2 インスタンスの設定
10. [Confirm installation selections] ページで、[Restart the destination server automatically if required]
を選択します。確認を求められたら、[Yes] をクリックします。[Install] をクリックします。
11. インストールが完了したら、[Close] をクリックします。
12. 次のステップに進む前に、ウェブサーバーが実行中であることを確認します。コンピュー
タで Amazon EC2 コンソールを開き、[Instances] ページで、インスタンスを選択します。
[Description] タブで、パブリック DNS 名をコピーします。ウェブブラウザで、インスタンスのパ
ブリック DNS 名をアドレスバーに貼り付けて、Enter キーを押します。次の画像のような IIS の
ウェルカムページが表示されます。IIS のウェルカムページが表示されない場合は、自分のセキュ
リティグループで HTTP トラフィックが許可されていることを確認してください。
22
AWS の使用開始 .NET ウェブアプリのホスティング
サンプルアプリの設定
サンプルアプリの設定
まず、サンプルアプリをインスタンスにダウンロードします。
サンプルアプリをダウンロードするには
1.
Internet Explorer を開いて BaseImageGallery.zip をダウンロードします。
2.
BaseImageGallery.zip の処理方法を選択するメッセージが表示されたら、[Open] をクリック
して、Windows エクスプローラーでファイルを開きます。
3.
このフォルダーのすべての内容を選択し、Ctrl + C キーを押してファイルをコピーします。ロー
カルの C:\inetpub\wwwroot フォルダーに移動し、Ctrl + V キーを押してファイルをこのフォ
ルダーに貼り付けます。
4.
右クリックして [New] をポイントし、[Folder] を選択します。フォルダー名を「Upload」として
Enter キーを押します。
5.
Upload フォルダーを右クリックし、[Properties] をクリックして、[Security] タブを選択します。
[Edit] をクリックし、[IIS_IUSRS] を選択して完全なコントロールを許可し、[OK] をクリックし
ます。
次に、アプリを更新して、画像が Amazon S3 バケットに自動的に公開され、Amazon RDS データ
ベースに接続されるようにします。バケットの名前と DB インスタンスの情報が必要になります。DB
インスタンスの情報を入手するには、RDS コンソールの [DB Instances] ページでインスタンスを選択
します。
バケットとデータベースサーバーを使用するようにアプリを設定するには
1.
テキストエディターで Default.aspx.cs を開きます(ファイルを右クリックし、[Open with]、
[Try an app on this PC] の順にクリックして、[Notepad] を選択します)。
2.
次のコードの my-bucket-name を実際のバケット名に置き換えます。
private const string ImageBucketName = "my-bucket-name";
3.
次のコードの my-database-instance を実際のデータベースエンドポイントに置き換えます。
(このエンドポイントを見つけるには、Amazon RDS コンソールで DB インスタンスを選択しま
す。:3306 は含めないでください)。
private string dbinstance = "my-database-instance";
4.
次のコードの master-user を実際のマスターユーザーに置き換えます。
private string userid ="master-user";
5.
次のコードの master-password を実際のデータベースマスターパスワードに置き換えます。
private string password ="master-password";
6.
次のコードの database-name を実際のデータベース名に置き換えます。
private string database ="database-name";
7.
Default.aspx.cs ファイルを保存します。
これで、ウェブサイトを再起動してテストすることができます。
23
AWS の使用開始 .NET ウェブアプリのホスティング
カスタム Windows AMI の作成
ウェブサイトをテストするには
1.
[Start] メニューをクリックし、[Administrative Tools]、[Internet Information Services (IIS)
Manager] の順にクリックします。
2.
[IIS Manager] で、サーバーのノードを展開し、[Sites] ノードを展開します。
3.
[Default Web Site] を右クリックして [Manage Website] をポイントし、[Restart] をクリックしま
す。
4.
ホームペインで、[IIS] の [Default Document] をダブルクリックし、[Default.aspx] を選択します。
[Actions] ペインで、[Default.aspx] がリストの最初の項目になるまで [Move Up] をクリックしま
す。
5.
コンピュータで Amazon EC2 コンソールを開き、[Instances] ページで、インスタンスを選択しま
す。[Description] タブで、パブリック DNS 名をコピーします。ウェブブラウザで、インスタンス
のパブリック DNS 名をアドレスバーに貼り付けて、Enter キーを押します。これにより、フォト
ギャラリーアプリの操作画面が表示されます。表示されるコントロールは、使っているブラウザ
によって異なります。次の画像のように [Browse] ボタンが表示されることも、[Choose File] ボタ
ンが表示されることもあります。
6.
お望みとあれば、アプリを使って画像をアップロードすることもできます。[Upload an image] で
ボタン([Browse] または [Choose File])をクリックし、ローカルコンピュータにある画像ファイ
ルをダブルクリックします。画像ファイルの名前が表示されます。[Upload] をクリックすると、
画像ファイルが Amazon S3 バケットにアップロードされ、画像に関する情報が DB インスタン
スに格納され、操作画面にサムネイル画像が表示されます。画像のサイズは 4 MB 未満にする必
要があります。そうでない場合、「Maximum request length exceeded」というエラーメッ
セージが表示されます。
カスタム Windows AMI の作成
EC2 インスタンスをカスタマイズしたので、独自の AMI を作成できます。独自の AMI を使用する
と、それと同じ設定で新しい EC2 インスタンスをすばやく起動できます。
実行中の Amazon EBS-backed インスタンスから AMI を作成するには
1.
Amazon EC2 コンソールを開きます。
2.
ナビゲーションペインの [Instances] をクリックします。
3.
[Instances] ページで、EC2 インスタンスを選択します。[Actions] をクリックして [Image] を選択
し、[Create Image] をクリックします。
24
AWS の使用開始 .NET ウェブアプリのホスティング
カスタム Windows AMI の作成
4.
[Create Image] ダイアログボックスで、一意のイメージ名と、イメージの説明(255 文字以内、
オプション)を指定して、[Create Image] をクリックします。
AMI の状態を確認するには、[AMIs] ページに移動します。AMI が作成される間、そのステータスは
pending です。[Snapshots] ページに移動すると、新しい AMI を使って起動するすべてのインスタ
ンスのルートデバイスボリュームの作成に使用される、スナップショットを作成したことがわかりま
す。
AMI を作成したので、その元になったインスタンスはもう必要ありません。次のステップでは、Auto
Scaling を使用して新しいインスタンスを起動するためです。インスタンスを終了するには、インスタ
ンスを選択して [Actions] をクリックし、[Instance State]、[Terminate] の順にクリックします。
25
AWS の使用開始 .NET ウェブアプリのホスティング
Auto Scaling と負荷分散を設定する
ステップ 5: ウェブアプリのスケー
リングと負荷分散を実行する
このステップでは、EC2 インスタンスの Auto Scaling と Elastic Load Balancing を設定します。Auto
Scaling は、アプリケーションのニーズに基づいて自動的に EC2 インスタンスを起動または終了する
ように設計されています。Auto Scaling は、作成したスケーリングポリシーに基づいてインスタンス
を起動または終了します。たとえば、CPU 利用率が 60% を超える状態が 10 分間続いたときに追加
のインスタンスを起動するように Auto Scaling を設定できます。あるいは、トラフィックの減少が予
想される週末はインスタンスの半分を終了するように Auto Scaling を設定できます。インスタンスを
監視して、最適なパフォーマンスが発揮されていること、常に少なくとも 1 つは正常なインスタンス
が実行されていることを保証することができます。詳細については、Auto Scaling を参照してくださ
い。
Elastic Load Balancing は、アプリケーションの可用性とスケーラビリティを高めるのに役立つように
設計されています。複数の EC2 インスタンス間で、アプリケーションの着信トラフィックを負荷分
散することが簡単にできます。アプリケーションの処理能力の要件の変化に合わせて、ロードバラン
サーから動的にインスタンスを追加または削除できます。
ロードバランサーが利用可能になると、ロードバランサーの実行時間に応じて 1 時間ごと、または 1
時間未満の時間について課金されます。負荷分散はインスタンスの実行時間と比べると小さなコスト
であることに注意してください。
詳細については、「Elastic Load Balancing 料金表」を参照してください。ロードバランサーの詳細に
ついては、「Elastic Load Balancing ユーザーガイド」を参照してください。
タスク
• Auto Scaling と負荷分散を設定する (p. 26)
• ロードバランサーをテストする (p. 28)
Auto Scaling と負荷分散を設定する
ここでは、最小数が 1 インスタンス、最大数も 1 インスタンスで負荷分散と自動スケーリングがな
されるウェブアプリの基本インフラストラクチャをセットアップして、1 つのインスタンスに対し
てのみ課金されるようにします。容量に変化があるたびに 1 つずつスケールアウトするように Auto
Scaling を設定します。CPU 使用率が高いと自動的にインスタンスを追加するために、CloudWatch
26
AWS の使用開始 .NET ウェブアプリのホスティング
Auto Scaling と負荷分散を設定する
アラームを作成します。独自のウェブアプリをデプロイするときは、ベストプラクティスに従って、
アベイラビリティーゾーンを 1 つ失った場合でもアプリが実行できるようにします。スケールインポ
リシーなど、追加のポリシーを作成することもできます。
アプリのスケーリングと負荷分散を実行するには
1.
Amazon EC2 コンソールを開きます。
2.
ナビゲーションバーで、[米国西部 (オレゴン)] がリージョンとして選択されていることを確認し
ます。
3.
ナビゲーションペインで、[Load Balancers] をクリックし、[Create Load Balancer] をクリックし
ます。
4.
[Define Load Balancer] ページで、以下を実行します。
5.
a.
ロードバランサーの名前を入力します。たとえば「my-lb」です。
b.
[Create LB Inside] リストから VPC を選択します。
c.
その他の設定はデフォルト値のままにしておきます。
d.
[Continue] をクリックします。
[Configure Health Check] ページで、以下を実行します。
a.
[Ping Protocol] と [Ping Port] はデフォルト値のままにしておきます。
b.
[Ping Path] を「/」に設定します。これは、クエリをデフォルトページに送信します。デ
フォルトページの名前は index.html かどうかを問いません。
c.
[Healthy Threshold] を「2」に設定します。
d.
[Continue] をクリックします。
6.
デフォルト以外の VPC を選択すると、[Select Subnets] ページでサブレットを選択するよう求め
られます。2 つのパブリックサブネットを選択して、[Continue] をクリックします。
7.
[Assign Security Groups] ページで、[Select an existing security group] をクリック
し、WebServerSG セキュリティグループを選択します。[Continue] をクリックします。
8.
[Continue] をクリックして、[Add Instances to Load Balancer] ページをスキップします。ロード
バランサーに EC2 インスタンスを追加するには Auto Scaling を使用します。
9.
[Continue] をクリックして、タグの追加をスキップします。
10. 設定を確認し、[Create] をクリックします。ロードバランサーが作成されたら、[Close] をクリッ
クします。
11. ナビゲーションペインで、[Launch Configurations] をクリックします。Auto Scaling を初めて使
う場合は、ウェルカムページが表示されます。[Create Auto Scaling group] をクリックします。
12. [Create launch configuration] をクリックします。
13. [Choose AMI] ページで、[My AMIs] タブを選択し、「カスタム Windows AMI の作成 (p. 24)」で
作成した AMI を選択します。
14. [Choose Instance Type] ページで、[General purpose] タブを選択し、t2.micro インスタンスタ
イプを選択して、[Next: Configure details] をクリックします。
15. [Configure details] ページで、以下を実行します。
a.
[Create Launch Configuration] で、起動設定の名前を入力し(たとえば「my-lc」)、[IAM
role] リストから IAM ロールを選択します。
b.
[Advanced Details] を展開します。
c.
[User data] で、[As text] を選択して以下のスクリプトを入力します。
#!/bin/bash
yum update -y
service httpd start
chkconfig httpd on
d.
[Assign a public IP address to every instance] を選択します。
27
AWS の使用開始 .NET ウェブアプリのホスティング
ロードバランサーをテストする
e.
[Skip to review] をクリックします。
16. [Review] ページで、[Edit security groups] をクリックします。[Select an existing security group]
をクリックし、作成した WebServerSG セキュリティグループを選択して、[Review] をクリック
します。
17. [Review] ページで、[Create launch configuration] をクリックします。
18. [Select an existing key pair or create a new key pair] ダイアログボックスで、[Choose an existing
key pair] を選択し、「AWS でホストするウェブアプリをセットアップする (p. 4)」で作成した
キーペアを選択します。確認チェックボックスをクリックし、[Create launch configuration] をク
リックします。
19. [Configure Auto Scaling group details] ページで、以下を実行します。
a.
Auto Scaling グループの名前を入力します。たとえば「my-asg」です。
b.
[Group size] で、テキストボックスに「2」と入力します。
c.
[Network] リストから VPC を選択し、[Subnet] リストから 2 つのパブリックサブネットを
選択します。これは、耐障害性の高いアプリを構築する際のベストプラクティスです。片方
のアベイラビリティーゾーンが停止すると、トラフィックがもう片方のアベイラビリティー
ゾーンにルーティングされます。
d.
[Advanced Details] を展開します。[Receive traffic from Elastic Load Balancer(s)] を選択しま
す。テキストフィールドからロードバランサーを選択します。
e.
[Next: Configure scaling policies] をクリックします。
20. [Configure scaling policies] ページで、以下を実行します。
a.
[Use scaling policies to adjust the capacity of this group] を選択します。
b.
[Increase Group Size] で、[Add new alarm] をクリックします。
c.
[Create Alarm] ダイアログボックスで、[create topic] をクリックします。SNS トピックの名
前と受取人のメールアドレスを入力します。[Whenever] はデフォルト設定のままにします
([Average] と [CPU Utilization])。[Is] で、[>] を選択し、「60」パーセントと指定します。
[For at least] で、「2」回連続の「5 Minutes」と指定します。[Create Alarm] をクリックし
ます。
d.
[Increase Group Size] の [Take the action] で、中央のボックスに「1」と入力します。これ
は、設定した CPU 使用率のしきい値に達するたびに、アラームが Auto Scaling グループに
インスタンスを 1 つ追加することを意味します。
e.
(オプション)[Decrease Group Size] で、同様の手順に従ってスケールダウン用のポリシー
を作成することもできます。
f.
[Review] をクリックします。
21. [Review] ページで、[Create Auto Scaling group] をクリックします。
22. [Close] をクリックします。
ロードバランサーをテストする
まず、インスタンスの準備が完了していることを確認します。[Auto Scaling Groups] ページから Auto
Scaling グループを選択して、[Instances] タブを選択します。
28
AWS の使用開始 .NET ウェブアプリのホスティング
ロードバランサーをテストする
当初、インスタンスの状態は Pending です。状態が InService になると、使用する準備が整ってい
ます。
次に、インスタンスがロードバランサーに登録されていることを確認します。[Load Balancers] ペー
ジからロードバランサーを選択して、[Instances] タブを選択します。
インスタンスの状態が OutOfService である場合は、まだ登録中の可能性があります。状態が
InService になると、使用する準備が整っています。インスタンスの準備が整ったら、次のようにし
てロードバランサーをテストできます。
ロードバランサーをテストするには
1.
2.
[Load Balancers] ページからロードバランサーを選択します。
[Description] タブで、DNS 名を見つけます。この名前は次の形式です。
my-lb-xxxxxxxxxx.us-east-1.elb.amazonaws.com
3.
ウェブブラウザで、ロードバランサーの DNS 名をアドレスバーに貼り付けて、Enter キーを押し
ます。ウェブサイトが表示されることを確認します。
29
AWS の使用開始 .NET ウェブアプリのホスティング
ドメイン名を登録する
ステップ 6: Amazon Route 53 を使
用してウェブサイトにドメイン名を
関連付ける
顧客がお客様のウェブサイトにアクセスするための最も簡単な方法は、覚えやすいドメイン名を使
用する方法です。このページの手順では、"example.com" をお客様のドメイン名に置き換えてくださ
い。
Amazon Route 53 は、可用性と拡張性に優れたドメインネームシステム(DNS)ウェブサービスで
す。ドメイン名(www.example.com など)を、コンピュータが相互の接続に使用する数字の IP ア
ドレス(192.0.2.1 など)に変換することで閲覧者をウェブサイトにルーティングする、極めて信頼
性が高く、コスト効率のよい方法として設計されています。Amazon Route 53 を使用する場合、設定
したドメインと、サービスが応答するクエリの数に対してのみ料金が発生します。詳細については、
「Amazon Route 53」を参照してください。
ウェブサイトとドメイン名を関連付けるには、Amazon Route 53 を使用して以下のタスクを実行しま
す。
タスク
• ドメイン名を登録する (p. 30)
• ドメインのトラフィックをルーティングするためにネームサーバーを割り当てる (p. 31)
• ドメインとサブドメインのレコードセットを作成する (p. 31)
• DNS プロバイダーをセットアップする (p. 32)
ドメイン名を登録する
まだドメイン名を登録していない場合は、ドメイン名を登録します。インターネットのドメイン名
は、Internet Corporation for Assigned Names and Numbers(ICANN)によって管理されています。ド
メイン名は、ドメイン名のレジストリを管理する ICANN 認定機関であるドメイン名レジストラを使
用して登録します。レジストラのウェブサイトで、ドメイン名の登録に関する詳細な手順と料金情報
を確認します。詳細については、以下のリソースを参照してください。
• Amazon Route 53 を使用してドメイン名を登録するには、『Amazon Route 53 開発者ガイド』の
「Amazon Route 53 を使用したドメイン名の登録」を参照してください。
30
AWS の使用開始 .NET ウェブアプリのホスティング
ドメインのトラフィックをルーティング
するためにネームサーバーを割り当てる
• 認定されているレジストラのリストについては、「認定レジストラディレクトリ」を参照してくだ
さい。
ドメインのトラフィックをルーティングするため
にネームサーバーを割り当てる
DNS サーバーの最も重要な機能は、覚えやすいドメイン名とホスト名を、対応する数値の IP アドレ
スに変換することです。ホストゾーンを作成する場合、Amazon Route 53 はホストゾーンに 4 つの
ネームサーバーを割り当てます。これらのネームサーバーは委託セットと呼ばれます。
ネームサーバーを割り当てるには
1.
Amazon Route 53 コンソールを開きます。Amazon Route 53 を始めて使用する場合は、ウェ
ルカムページが表示されます。[DNS Management] の [Get Started Now] ボタンをクリックし、
[Create Hosted Zone] をクリックします。
2.
[Hosted Zones] ページで、[Create Hosted Zone] をクリックします。
3.
[Domain Name] ボックスにドメイン名を入力し、[Create] をクリックします。
4.
先ほど作成したホストゾーンを選択します。詳細ペインの [Delegation Set] に、ドメインに割り
当てられたネームサーバーのリストが表示されます。
ドメインとサブドメインのレコードセットを作成
する
使っているドメイン名のクエリを、ロードバランサーの DNS 名にルーティングするエイリアスリ
ソースレコードセットを作成します。
ルートドメインのエイリアスレコードセットを設定するには
1.
2.
3.
4.
[Hosted Zones] ページで、ドメイン用に作成したホストゾーンを選択します。
[Go to Record Sets] をクリックします。
[Create Record Set] をクリックします。
[Create Record Set] で以下の作業を行います。
a.
デフォルト名のままにしておきます。これはルートドメインです。
b.
[Type] リストで、[A – IPv4 address] を選択します。
31
AWS の使用開始 .NET ウェブアプリのホスティング
DNS プロバイダーをセットアップする
c.
e.
[Alias] で [Yes] をクリックします。エイリアスにより、Amazon Route 53 はドメイン名を
ウェブサイトと関連付けることができます。それ以外の場合、エイリアスレコードは IP アド
レスに関連付ける必要があります。
[Alias Target] をクリックします。リストからロードバランサーのエンドポイントを選択しま
す。エンドポイントの前にプレフィックス「dualstack」を追加します。
[Routing Policy] リストで [Simple] を選択します。
f.
g.
[Evaluate Target Health] は [No] に設定されたままにしておきます。
[Create] をクリックします。
d.
DNS プロバイダーをセットアップする
新しいドメイン名を登録し、このチュートリアルの実行中にその名前を使用してきた場合
は、Amazon Route 53 を DNS プロバイダーとしてセットアップできます。
または、以前に別のウェブサイトに関連付けられていたドメイン名を再利用する場合は、そのドメイ
ン名でホストされているサービスの継続的な可用性を確保するために、他の DNS レコードを現在の
DNS プロバイダーから Amazon Route 53 に転送する必要がある場合があります。Amazon Route 53
でレプリケートする必要のある DNS レコードを特定するには、現在の DNS プロバイダーでドメイン
に対して設定されている DNS レコード設定をチェックします。Start of Authority(SOA)レコードと
Name Server(NS)レコードは Amazon Route 53 に転送してはなりません。これらのレコードは、
ネームサーバーが割り当てられるときに Amazon Route 53 によって設定されるため、変更しないでく
ださい。
最初に、お客様のドメイン名を登録するために使用したドメイン名レジストラにログインします。レ
ジストラによって表示されるウェブインターフェイスを使用して、お客様のドメインのネームサー
バーを、[Delegation Sets] で書き留めたネームサーバーの値に変更します。これを行う方法は、使用
したレジストラによって異なります。
インターネット DNS リソルバーネットワークがネームサーバーの変更の適用を完了するまで、2 ~
48 時間待ちます。ネームサーバーの変更の適用が完了したかどうかを確認するには、dig(Mac OS
X、Unix、Linux の場合)または nslookup(Windows の場合)などのコマンドラインユーティリティ
を使用します。以下の例は、dig を使用して、お客様のドメインに関連付けられているネームサーバー
を確認する方法を示しています。
dig example.com
Amazon Route 53 を使用して割り当てた AWS ネームサーバーが出力の AUTHORITY SECTION に含
まれていれば、それは DNS の変更が DNS リソルバーネットワーク全体に適用されたことを意味しま
す。
;; AUTHORITY
example.com.
example.com.
example.com.
example.com.
SECTION:
118928 IN
118928 IN
118928 IN
118928 IN
NS
NS
NS
NS
ns-806.awsdns-36.net.
ns-1456.awsdns-54.org.
ns-1713.awsdns-22.co.uk.
ns-105.awsdns-13.com.
DNS の変更の適用が完了したら、カスタムドメイン名を使用してウェブサイトを表示できるようにな
ります。
www サブドメイン(www.example.com)をウェブブラウザで開く場合、ドメイン
(example.com)にリダイレクトされます。
32
AWS の使用開始 .NET ウェブアプリのホスティング
Amazon Route 53 ホストゾーンの削除
ステップ 7: クリーンアップ
このチュートリアルを完了したら、料金が生じないように、作成した AWS リソースを削除してくだ
さい。
タスク
• Amazon Route 53 ホストゾーンの削除 (p. 33)
• Auto Scaling グループを削除する (p. 34)
• ロードバランサーを削除する (p. 34)
• カスタム AMI の削除 (p. 34)
• DB インスタンスの終了 (p. 35)
• Amazon S3 バケットの削除 (p. 35)
Amazon Route 53 ホストゾーンの削除
ホストゾーンを削除する前に、作成したレコードセットを削除する必要があります。NS レコードと
SOA レコードを削除する必要はありません。これらはホストゾーンが削除されるときに自動的に削除
されます。
レコードセットを削除するには
1.
Amazon Route 53 コンソールを開きます。
2.
ナビゲーションバーで、[米国西部 (オレゴン)] がリージョンとして選択されていることを確認し
ます。
3.
ドメイン名のリストで、ドメイン名に対応するチェックボックスをオンにし、[Go to Record
Sets] をクリックします。
レコードセットのリストで、作成した A レコードに対応するチェックボックスをオンにします。
各レコードセットのタイプは [Type] 列に表示されます。
[Delete Record Set] をクリックします。
確認を求められたら、[Confirm] をクリックします。
4.
5.
6.
Amazon Route 53 ホストゾーンを削除するには
1.
2.
前のステップを終了した画面で [Back to Hosted Zones] をクリックします。
ドメイン名に対応するチェックボックスをオンにしてから [Delete Hosted Zone] をクリックしま
す。
33
AWS の使用開始 .NET ウェブアプリのホスティング
Auto Scaling グループを削除する
3.
確認を求められたら、[Confirm] をクリックします。
Auto Scaling グループを削除する
Auto Scaling グループが必要ではなくなったと判断した場合は、削除できます。コンソールを使用し
て Auto Scaling グループを削除すると、Auto Scaling グループ内の EC2 インスタンスとスケーリング
ポリシーの CloudWatch アラームがすべて終了します。Auto Scaling グループを削除した後、起動設
定を削除できます。
Auto Scaling グループを削除するには
1.
Amazon EC2 コンソールを開きます。
2.
ナビゲーションバーで、[米国西部 (オレゴン)] がリージョンとして選択されていることを確認し
ます。
3.
ナビゲーションペインで、[Auto Scaling Groups] をクリックします。
4.
Auto Scaling グループを選択し、[Actions] をクリックして [Delete] をクリックします。
5.
確認を求めるメッセージが表示されたら、[Yes, Delete] をクリックします。[Desired]、[Min]、
[Max] の各列の値が 0 に変わり、EC2 インスタンスは terminating 状態に入ります。
起動設定を削除するには
1.
ナビゲーションペインで、[Launch Configurations] をクリックします。
2.
起動設定を選択し、[Actions] をクリックして [Delete launch configuration] をクリックします。
3.
確認を求めるメッセージが表示されたら、[Yes, Delete] をクリックします。
ロードバランサーを削除する
ロードバランサーが必要ではなくなった場合は、削除することができます。
Important
ロードバランサーを削除しても、そのロードバランサーに関連付けられた EC2 インスタンス
は実行され続けます。インスタンスが動作している間は、インスタンスの利用料金が発生し
ます。
ロードバランサーを削除するには
1.
Amazon EC2 コンソールを開きます。
2.
ナビゲーションバーで、[米国西部 (オレゴン)] がリージョンとして選択されていることを確認し
ます。
3.
ナビゲーションペインで、[Load Balancers] をクリックします。
4.
ロードバランサーを選択し、[Actions] をクリックして、[Delete] をクリックします。
5.
確認を求めるメッセージが表示されたら、[Yes, Delete] をクリックします。
カスタム AMI の削除
AMI が必要ではなくなった場合は、登録を解除できます。AMI の登録を解除すると、それを使用して
新しいインスタンスを起動できなくなります。ただし、お客様が既に AMI から起動したインスタンス
34
AWS の使用開始 .NET ウェブアプリのホスティング
DB インスタンスの終了
には影響しません。また、AMI の作成時に作成されたスナップショットにも影響しません。スナップ
ショットを削除するまで、スナップショットの料金が発生します。
AMI の登録を解除し、関連付けられたスナップショットを削除するには
1.
Amazon EC2 コンソールを開きます。
2.
ナビゲーションバーで、[米国西部 (オレゴン)] がリージョンとして選択されていることを確認し
ます。
3.
ナビゲーションペインの [AMIs] をクリックします。
4.
AMI を選択し、[Actions] をクリックして、[Deregister] をクリックします。確認を求められたら、
[Continue] をクリックします。
5.
ナビゲーションペインで、[Snapshots] をクリックします。
6.
スナップショットを選択し、[Actions] をクリックして、[Delete] をクリックします。確認を求め
るメッセージが表示されたら、[Yes, Delete] をクリックします。
DB インスタンスの終了
DB インスタンスが必要なくなったら、終了することができます。DB インスタンスのステータスが
deleted に変わると、DB インスタンスの課金が停止します。
DB インスタンスを終了するには
1.
Amazon RDS コンソールを開きます。
2.
ナビゲーションバーで、[米国西部 (オレゴン)] がリージョンとして選択されていることを確認し
ます。
3.
ナビゲーションペインの [Instances] をクリックします。
4.
DB インスタンスを選択し、[Instance Actions] をクリックして [Delete] をクリックします。
5.
[Delete DB Instance] ダイアログボックスで、[Create final snapshot?] リストから [No] を選択
し、[Yes, Delete] をクリックします。
これが本稼働データベースである場合は、後で必要に応じて DB インスタンスを復元できるよう
に、最終スナップショットを作成することをお勧めします。
Amazon S3 バケットの削除
Amazon S3 バケットを削除する前に、バケット内のすべてのオブジェクトを削除する必要がありま
す。また、バケットのログ記録が無効になっていることを確認する必要があります。ログ記録を無効
にしていない場合、バケット内のオブジェクトを削除するときにバケットにログが書き込まれます。
バケットのログ記録を無効にするには
1.
Amazon S3 コンソールを開きます。
2.
バケットを選択し、[Properties] をクリックします。
3.
[Properties] ペインで [Logging] をクリックします。
4.
[Enabled] チェックボックスをオフにします。
5.
[Save] をクリックします。
バケット内のオブジェクトを削除するには
1.
Amazon S3 コンソールを開きます。
35
AWS の使用開始 .NET ウェブアプリのホスティング
Amazon S3 バケットの削除
2.
バケットを選択します。
3.
4.
1 つ以上のオブジェクトを選択し、[Actions] をクリックして [Delete] をクリックします。
表示される確認メッセージで [Yes, Delete] をクリックします。
バケットを削除するには
1.
2.
Amazon S3 コンソールを開きます。
バケットを選択し、[Actions] をクリックして [Delete] をクリックします。
3.
確認を求めるメッセージが表示されたら、[Yes, Delete] をクリックします。
36
AWS の使用開始 .NET ウェブアプリのホスティング
Related Resources
The following table lists some of the AWS resources that you'll find useful as you work with AWS.
Resource
Description
AWS Products & Services
Information about the products and services that AWS
offers.
AWS Documentation
Official documentation for each AWS product, including
service introductions, service features, and API reference.
AWS Discussion Forums
Community-based forums for discussing technical
questions about Amazon Web Services.
Contact Us
A central contact point for account questions such as
billing, events, and abuse. For technical questions, use the
forums.
AWS Support Center
The hub for creating and managing your AWS Support
cases. Also includes links to other helpful resources, such
as forums, technical FAQs, service health status, and AWS
Trusted Advisor.
AWS Support
The home page for AWS Support, a one-on-one, fastresponse support channel to help you build and run
applications in the cloud.
AWS Architecture Center
Provides the necessary guidance and best practices to
build highly scalable and reliable applications in the AWS
cloud. These resources help you understand the AWS
platform, its services and features. They also provide
architectural guidance for design and implementation of
systems that run on the AWS infrastructure.
AWS Security Center
Provides information about security features and resources.
AWS Economics Center
Provides access to information, tools, and resources
to compare the costs of Amazon Web Services with IT
infrastructure alternatives.
37
AWS の使用開始 .NET ウェブアプリのホスティング
Resource
Description
AWS Technical Whitepapers
Provides technical whitepapers that cover topics such as
architecture, security, and economics. These whitepapers
have been written by the Amazon team, customers, and
solution providers.
AWS Blogs
Provides blog posts that cover new services and updates to
existing services.
AWS Podcast
Provides podcasts that cover new services, existing
services, and tips.
38