

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

# AWS Toolkit for Visual Studio AWS Elastic Beanstalk と Amazon Q を使用した Visual Studio での へのデプロイ
<a name="deployment-beanstalk"></a>

AWS Elastic Beanstalk は、アプリケーションの AWS リソースのプロビジョニングプロセスを簡素化するサービスです。Elastic Beanstalk は、アプリケーションのデプロイに必要なすべての AWS インフラストラクチャを提供します。このインフラストラクチャには次のものが含まれます。
+ 実行可能ファイルとアプリケーションのコンテンツをホストする Amazon EC2 インスタンス。
+ Amazon EC2 インスタンスの数を適切に維持することでアプリケーションをサポートする Auto Scaling グループ。
+ 受信トラフィックを帯域幅が最も広い Amazon EC2 インスタンスにルーティングする Elastic Load Balancing ロードバランサー。

このユーザーガイドトピックでは、 AWS Toolkit with Amazon Q で Elastic Beanstalk ウィザードを使用する方法について説明します。Elastic Beanstalk に固有の詳細については、「 [AWS Elastic Beanstalk](https://docs.aws.amazon.com//elasticbeanstalk/latest/dg/Welcome.html)デベロッパーガイド」を参照してください。 AWS Toolkit with Amazon Q の Elastic Beanstalk ウィザードについては、次のトピックセクションで説明します。

**Topics**
+ [ASP.NET アプリケーションのデプロイ (従来)](deployment-beanstalk-traditional.md)
+ [ASP.NET アプリケーション (.NET Core) のデプロイ (レガシー)](deployment-beanstalk-netcore.md)
+ [AWS 認証情報を指定する](deployment-beanstalk-specify-credentials.md)
+ [Elastic Beanstalk への再発行 (レガシー)](deployment-beanstalk-republish.md)
+ [カスタムデプロイ (従来型)](deployment-beanstalk-custom.md)
+ [カスタムデプロイ (.NET Core)](deployment-beanstalk-custom-netcore.md)
+ [複数アプリケーションのサポート](deployment-beanstalk-multiple-application.md)

# .Traditional ASP NET アプリケーションを Elastic Beanstalk にデプロイします。
<a name="deployment-beanstalk-traditional"></a>

このセクションでは、Elastic Beanstalk を介してアプリケーションをデプロできるように、Toolkit for Visual Studio の一部として提供される **[Publish to Elastic Beanstalk]** ウィザードの使用方法を記述します。演習を行う場合は、ウェブアプリケーションのスタータープロジェクトのインスタンスを使うことができます。これは Visual Studio に組み込まれています。または独自のプロジェクトを使用することもできます。

**注記**  
ウィザードでは ASP.NET Core アプリケーションのデプロイもサポートしています。ASP.NET Core については、「[AWS .NET Deployment tool](https://aws.github.io/aws-dotnet-deploy/)」ガイドと、目次にある更新された「[AWSへのデプロイ](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/deployment-chapt.html)」を参照してください。

**注記**  
**[Publish to Elastic Beanstalk]** ウィザードを使用するには、[Web Deploy](http://www.microsoft.com/en-us/download/details.aspx?id=39277) をダウンロードしてインストールする必要があります。ウィザードでは、Web Deploy を用いて Internet Information Services (IIS) ウェブサーバーにウェブアプリケーションやウェブサイトをデプロイします。

## サンプルウェブアプリケーションのスタータープロジェクトを作成するには
<a name="to-create-a-sample-web-application-starter-project"></a>

1. Visual Studio の [**File (ファイル)**] メニューで [**New (新規)**] を選択し、[**Project (プロジェクト)**] を選択します。

1. [**New Project (新規プロジェクト)**] ダイアログボックスのナビゲーションペインで、[**Installed (インストール済み)**]、[**Templates (テンプレート)**]、[**Visual C\$1**] の順に展開し、[**Web**] を選択します。

1. ウェブプロジェクトテンプレートのリストの中から、`Web` と `Application` が説明に含まれるテンプレートのいずれかを選択します。この例では、[**ASP.NET Web Forms Application (ASP.NET Web Forms アプリケーション)**] を選択します。  
![\[New Project window showing ASP.NET web application templates for Visual C# in .NET Framework 4.5.\]](http://docs.aws.amazon.com/ja_jp/toolkit-for-visual-studio/latest/user-guide/images/tkv-new-web-project-console.png)

1. [**Name (名前)**] ボックスに、「`AEBWebAppDemo`」と入力します。

1. [**Location**] ボックスで、開発マシンのソリューションフォルダへのパスを入力するか、[**Browse**] を選択し、ソリューションフォルダを参照して選択し、[**Select Folder**] を選択します。

1. [**Create directory for solution (ソリューションのディレクトリの作成)**] が選択されていることを確認します。**[Solution]** (ソリューション) ドロップダウンリストで、**[Create new solution]** (新しいソリューションの作成) が選択されていることを確認し、**[OK]** を選択します。Visual Studio を用いて、ASP.NET Web Forms Application プロジェクトテンプレートをベースにしたソリューションやプロジェクトを作成できます。新しいソリューションやプロジェクトが表示される Solution Explorer が、Visual Studio の画面に表示されます。  
![\[Solution Explorer window showing project structure with folders and files for a web application.\]](http://docs.aws.amazon.com/ja_jp/toolkit-for-visual-studio/latest/user-guide/images/tkv-web-app-solution-explorer-console.png)

## [Publish to Elastic Beanstalk] ウィザードを使用してアプリケーションをデプロイするには
<a name="to-deploy-an-application-by-using-the-publish-to-elastic-beanstalk-wizard"></a>

1. Solution Explorer で、前のセクションで作成したプロジェクトの **AEBWebAppDemo** プロジェクトフォルダのコンテキスト (右クリック) メニューを開くか、独自のアプリケーションのプロジェクトフォルダのコンテキストメニューを開き、**Elastic Beanstalk AWS に発行**を選択します。  
![\[Solution Explorer context menu showing "Publish to AWS..." option for AEBWebAppDemo project.\]](http://docs.aws.amazon.com/ja_jp/toolkit-for-visual-studio/latest/user-guide/images/tkv-publish-to-aws-console.png)

   **[Publish to Elastic Beanstalk]** ウィザードが表示されます。  
![\[Publish to AWS Elastic Beanstalk wizard interface for creating or redeploying an application environment.\]](http://docs.aws.amazon.com/ja_jp/toolkit-for-visual-studio/latest/user-guide/images/tkv-aeb-wizard-app-console.png)

1. **プロファイル**で、**デプロイに使用するアカウントプロファイル**のドロップダウンリストから、デプロイに使用する AWS アカウントプロファイルを選択します。

   オプションで、使用する AWS アカウントがあり、その AWS アカウントプロファイルをまだ作成していない場合は、プラス記号 (`+`) が付いたボタンを選択して、 AWS アカウントプロファイルを追加できます。

1. **[Region]** (リージョン) ドロップダウンリストから、Elastic Beanstalkをアプリケーションにデプロイしたいリージョンを選択します。

1. **[Deployment Target]** (デプロイ先) では、**[Create a new application environment]** (新しいアプリケーション環境を作成) を選択してアプリケーションの初期デプロイを行うことも、**[Redeploy to an existing environment]** (既存の環境に再デプロイ) を選択してデプロイ済みアプリケーションの再デプロイを行うかこともできます。(前回のデプロイをウィザードまたは [Standalone Deployment Tool] (スタンドアロンデプロイツール) のどちらで実行していてもかまいません。) [**Redeploy to an existing environment**] を選択した場合は、現在稼働中の前回のデプロイに関する情報をウィザードが取得するのに時間を要することがあります。
**注記**  
[**Redeploy to an existing environment (既存の環境に再デプロイする)**] を選択した場合は、リストの中から環境を選択し、[**Next (次へ)**] を選択すると、[**Application Options (アプリケーションオプション)**] ページを直接表示できます。この方法でページを表示した場合は、本セクションで口述する [**Application Options (アプリケーションオプション)**] ページの使用方法について説明している箇所までスキップしてください。

1. **[次へ]** をクリックします。  
![\[Application Environment setup page for AWS with fields for name, environment, and URL.\]](http://docs.aws.amazon.com/ja_jp/toolkit-for-visual-studio/latest/user-guide/images/tkv-aeb-wizard-env-console.png)

1. **[Application Environment]** (アプリケーション環境) ページの **[Application]** (アプリケーション) エリアにある **[Name]** (名前) ドロップダウンリストに、推奨されるデフォルトのアプリケーション名が表示されます。ドロップダウンリストの別の名前を選択することで、デフォルト名を変更できます。

1. **[Environment]** (環境) エリアの **[Name]** (名前) ドロップダウンリストで、Elastic Beanstalk 環境の名前を入力します。このコンテキストでは、*環境*という用語は、アプリケーションのインフラストラクチャ Elastic Beanstalk プロビジョニングを意味します。推奨されるデフォルト名がドロップダウンリストに既に表示されている場合があります。推奨されるデフォルト名が表示されていない場合は自身で入力するか、他に選択候補がある場合は、ドロップダウンリストからいずれか 1 つを選択します。環境の名前は 23 文字より長くすることはできません。

1. **[URL]** エリアでは、ウェブアプリケーションの URL として使用される、デフォルトの `.elasticbeanstalk.com` のサブドメイン候補が表示されます。新しいサブドメイン名を入力することで、デフォルトのサブドメインを変更できます。

1. [**Check availability**] を選択して、ウェブアプリケーションの URL が使用されていないことを確認します。

1. ウェブアプリケーションの URL が使用可能な場合は、[**Next**] を選択します。

![\[AWS EC2 launch configuration settings for deploying an application to Amazon Web Services.\]](http://docs.aws.amazon.com/ja_jp/toolkit-for-visual-studio/latest/user-guide/images/tkv-aeb-wizard-ec2-console.png)


1. **[AWS オプション]** ページの **[Amazon EC2 起動設定]** にある **[コンテナタイプ]** ドロップダウンリストから、アプリケーションで使用する Amazon マシンイメージ (AMI) を選択します。

1. **[Instance type]** (インスタンスタイプ) ドロップダウンリストで、使用する Amazon EC2 インスタンスタイプを指定します。この例では、[**Micro (マイクロ)**] の使用をお勧めします。これにより、インスタンスの実行に関連するコストが最小化されます。Amazon EC2 の料金の詳細については、「[EC2 料金](https://aws.amazon.com/ec2/pricing/)」のページを参照してください。

1. **[Key pair]** (キーペア) ドロップダウンリストで、アプリケーションで使用するインスタンスにサインインする際の Amazon EC2 インスタンスキーペアを選択します。

1. オプションとして、**[Use custom AMI]** (カスタム AMI を使用) ボックスで、**[Container type]** (カスタムタイプ) ドロップダウンリストで指定した AMI を上書きするカスタム AMI を指定できます。カスタム AMI の作成方法の詳細については、[AWS Elastic Beanstalk デベロッパーガイド](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/)の「[カスタム AMI の使用](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.customami.html)」と「[Amazon EC2 インスタンスからの AMI の作成](tkv-create-ami-from-instance.md)」を参照してください。

1. VPC 内でインスタンスを起動する場合は、[**Use a VPC**] ボックスを選択します。

1. オプションとして、Amazon EC2 インスタンスを 1 つだけ起動してアプリケーションをそのインスタンスにデプロイしたい場合、**[Single instance environment]** (単一インスタンス環境) ボックスを選択します。

   このボックスを選択する場合、 Elastic BeanstalkによりAuto Scaling グループが作成されますが、設定はされません。Auto Scaling グループを後で設定したい場合、 AWS マネジメントコンソールを使用できます。

1. オプションとして、アプリケーションをデプロイするインスタンスを条件で制御する場合は、**[Enable Rolling Deployments]** (ローリングデプロイを有効にする) ボックスを選択します。このボックスは [**Single instance environment (単一のインスタンス環境)**] ボックスを選択していない場合のみ選択できます。

1. アプリケーションが Amazon S3 や DynamoDB などの AWS サービスを使用している場合、認証情報を提供する最善の方法は IAM ロールを使用することです。**[Deployed Application Permissions]** (デプロイ済みアプリケーションアクセス許可) エリアでは、ウィザードが環境を起動する際に使用するロールとして既存の IAM ロールを選択するか、または新しくロールを作成することができます。を使用するアプリケーション AWS SDK for .NET は、 AWS サービスにリクエストを行うときに、この IAM ロールによって提供される認証情報を自動的に使用します。

1. アプリケーションから Amazon RDS データベースにアクセスしている場合は、**[Relational Database Access]** エリアのドロップダウンリストで、ウィザードが更新する Amazon RDS セキュリティグループの横のボックスを選択することで、Amazon EC2 インスタンスからそのデータベースにアクセスできます。

1. [**次へ**] を選択します。
   + [**Use a VPC**] を選択した場合は、[**VPC Options**] ページが表示されます。
   + **[Enable Rolling Deployments]** (ローリングデプロイを有効にする) を選択し、かつ **[Use a VPC]** (VPC を使用) を選択しなかった場合は、**[Rolling Deployments]** ページが表示されます。本セクションで後述している [**Rolling Deployments (ローリングデプロイ)**] ページの使用方法について説明している箇所までスキップしてください。
   + **[Use a VPC]** (VPC を使用) および **[Enable Rolling Deployments]** (ローリングデプロイを有効にする) を選択しなかった場合は、**[Application Options]** (アプリケーションオプション) ページが表示されます。本セクションで後述されている **[アプリケーションオプション]** ページの使用方法について説明している箇所までスキップしてください。

1. [**Use a VPC**] を選択した場合は、[**VPC Options**] ページの情報を指定して VPC でアプリケーションを起動します。  
![\[VPC Options interface for configuring AWS Elastic Beanstalk application deployment settings.\]](http://docs.aws.amazon.com/ja_jp/toolkit-for-visual-studio/latest/user-guide/images/tkv-aeb-wizard-vpc-console.png)

   VPC は既に作成されている必要があります。Toolkit for Visual Studio で VPC を作成した場合、Toolkit for Visual Studio によってこのページが自動的に設定されます。[AWS マネジメントコンソール](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/AWSHowTo-vpc-basic.html)で VPC を作成した場合、VPC に関する情報をこのページに入力します。

## VPC へのデプロイに際して特に考慮すべき事項
<a name="key-considerations-for-deployment-to-a-vpc"></a>
+ VPC には、少なくとも 1 つのパブリックサブネットと 1 つのプライベートサブネットが必要です。
+ *[ELB Subnet]* (ELB サブネット) ドロップダウンリストでパブリックサブネットを設定します。Toolkit for Visual Studio は、アプリケーションの Elastic Load Balancing ロードバランサーをパブリックサブネットに向けてデプロイします。パブリックサブネットは、インターネットゲートウェイを指すエントリが含まれているルーティングテーブルに関連付けられています。インターネットゲートウェイは `igw-` で始まる ID を持つため (例 :`igw-83cddaex`)、インターネットゲートウェイを認識することができます。Toolkit for Visual Studio を使用して作成したパブリックサブネットには、パブリックとして識別するタグ値が付与されています。
+ *[Instances Subnet]* (インスタンスサブネット) ドロップダウンリストでプライベートサブネットを設定します。Toolkit for Visual Studio はアプリケーションのAmazon EC2 Eインスタンスをプライベートサブネットに向けてデプロイします。
+ アプリケーションの Amazon EC2 インスタンスは、ネットワークアドレス変換 (NAT) を行うパブリックサブネットの Amazon EC2 インスタンスを介してプライベートサブネットからインターネットに通信します。通信を可能にするには、プライベートサブネットから NAT インスタンスにトラフィックが流れるようにするための [VPC セキュリティグループ](https://console.aws.amazon.com/vpc/home)が必要です。VPC セキュリティグループを [*Security Group*] ドロップダウンリストから指定します。

Elastic Beanstalkアプリケーションを VPC にデプロイする方法の詳細については、[AWS Elastic Beanstalk デベロッパーガイド](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/)を参照してください。

1. **VPC Options** ページですべての情報を入力してから、[**Next**] を選択します。
   + [**Enable Rolling Deployments**] を選択した場合は、[**Rolling Deployments**] ページが表示されます。
   + **[Enable Rolling Deployments]** (ローリングデプロイを有効にする) を選択しなかった場合は、**[Application Options]** (アプリケーションオプション) ページが表示されます。本セクションで後述されている **[アプリケーションオプション]** ページの使用方法について説明している箇所までスキップしてください。

1. **[Enable Rolling Deployments]** (ローリングデプロイを有効にする) を選択した場合は、**[Rolling Deployments]** (ローリングデプロイ) ページの情報を設定して、新しいバージョンのアプリケーションをロードバランス環境のインスタンスにデプロイする際の方法を構成します。例えば、環境内に 4 つのインスタンスがあってインスタンスタイプを変更する場合、一度に 2 つのインスタンスを変更するように環境を設定できます。これにより、アプリケーションを停止することなく変更できます。  
![\[Rolling Deployments configuration interface for AWS application updates and environment settings.\]](http://docs.aws.amazon.com/ja_jp/toolkit-for-visual-studio/latest/user-guide/images/tkv-aeb-wizard-rolling-console.png)

1. *[Application Versions]* (アプリケーションのバージョン) エリアで、一度にデプロイするインスタンスを全体の割合にするか実際の数にするかを制御するオプションを選択します。目的のパーセンテージまたは最大数を指定します。

1. オプションとして、デプロイ中にサービスを実行し続けるインスタンス数を指定する場合は、*[Environment Configuration]* (環境の設定) エリアのボックスを選択します。このボックスを選択した場合は、一度に変更するインスタンスの最大数、サービスを実行し続ける最小のインスタンス数、またはその両方を設定します。

1. [*次へ*] を選択します。

1. [**Application Options**] ページで、構築、Internet Information Services (IIS)、およびアプリケーション設定に関する情報を指定します。  
![\[Application Options interface for configuring build and deployment settings for AWS.\]](http://docs.aws.amazon.com/ja_jp/toolkit-for-visual-studio/latest/user-guide/images/tkv-aeb-wizard-options-console.png)

1. **[Build and IIS Deployment Settings]** (ビルドと IIS デプロイの設定) エリアの **[Project build configuration]** (プロジェクトビルド設定) ドロップダウンリストで、ターゲットビルド設定を選択します。ウィザードが発見できた場合は [**Release (リリース)**] が、発見できなかった場合はアクティブ設定がこのボックスに表示されます。

1. **[App pool]** (アプリケーションプール) ドロップダウンリストで、アプリケーションが必要とする .NET Framework のバージョンを選択します。適切な .NET Framework のバージョンが表示されています。

1. アプリケーションが 32 ビットの場合は、[**Enable 32-bit applications**] ボックスを選択します。

1. **[App path]** (アプリケーションパス) ボックスで、アプリケーションのデプロイに使用する IIS パスを指定します。デフォルトでは、[**Default Web Site/ (デフォルトウェブサイト/)**] が指定され、通常は `c:\inetpub\wwwroot` に変換されます。[**Default Web Site (デフォルトウェブサイト)**] 以外のパスを指定した場合は、ウィザードは指定したパスを指すリダイレクトを [**Default Web Site/ (デフォルトウェブサイト/)**] に配置します。

1. **[Application Settings]** (アプリケーションの設定) エリアの **[Health check URL]** (ヘルスチェック URL) ボックスに、ウェブアプリケーションが応答可能かを判別する際に確認する Elastic Beanstalk の URL を入力します。この URL はルートサーバー URL への相対 URL です。デフォルトではルートサーバーの URL が指定されます。例えば、完全な URL が `example.com/site-is-up.html` である場合は `/site-is-up.html` と入力します。

1. [**Key**] と [**Value**] には、アプリケーションの `Web.config` ファイルに追加したい任意のキーと値のペアを指定できます。
**注記**  
推奨されませんが、**キー**と**値の** エリアを使用して、アプリケーションを実行する AWS 認証情報を指定できます。推奨されるのは、**[AWS Options]** (オプション) ページの **[Identity and Access Management Role]** ドロップダウンリストで IAM ロールを指定する方法です。ただし、IAM ロールの代わりに AWS 認証情報を使用してアプリケーションを実行する必要がある場合は、**キー**行で **AWSAccessKey** を選択します。[**値**] 行にアクセスキーを入力します。**AWSSecretKey** についても同様のステップを繰り返します。

1. **[次へ]** をクリックします。  
![\[Review window for publishing an application to AWS Elastic Beanstalk with deployment details.\]](http://docs.aws.amazon.com/ja_jp/toolkit-for-visual-studio/latest/user-guide/images/tkv-aeb-wizard-review-console.png)

1. [**Review**] ページで、選択したオプションを確認し、[**Open environment status window when wizard closes**] ボックスを選択します。

1. すべてが正しい場合は、[**Deploy (デプロイ)**] を選択します。
**注記**  
アプリケーションをデプロイすると、アプリケーションが使用する AWS リソースの料金が発生し、それはアクティブなアカウントに請求されます。

   Visual Studio ステータスバーおよび **[Output]** (出力) ウィンドウに、デプロイに関する情報が表示されます。これには数分間かかる場合があります。デプロイが完了すると、確認メッセージが [**Output (出力)**] ウィンドウに表示されます。

1. デプロイを削除するには、 AWS Explorer で **Elastic Beanstalk** ノードを展開し、デプロイのサブノードのコンテキスト (右クリック) メニューを開き、**削除**を選択します。削除には数分かかる場合があります。

# Elastic Beanstalk への ASP.NET Core アプリケーションのデプロイ (レガシー)
<a name="deployment-beanstalk-netcore"></a>

**重要**  
このドキュメントでは、従来のサービスと機能について言及しています。更新されたガイドとコンテンツについては、「[AWS .NET Deployment tool](https://aws.github.io/aws-dotnet-deploy/)」ガイドと、目次にある更新された「[AWSへのデプロイ](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/deployment-chapt.html)」を参照してください。

AWS Elastic Beanstalk は、アプリケーションの AWS リソースをプロビジョニングするプロセスを簡素化するサービスです。 は、アプリケーションのデプロイに必要なすべての AWS インフラストラクチャ AWS Elastic Beanstalk を提供します。

Toolkit for Visual Studio では、Elastic Beanstalk AWS を使用して ASP.NET Core アプリケーションを にデプロイできます。ASP.NET Core は、ASP.NET をモジュラー型アーキテクチャで再設計したもので、依存関係のオーバーヘッドを最小限に抑え、アプリケーションのクラウド実行を合理化します。

AWS Elastic Beanstalk を使用すると、さまざまな言語でアプリケーションを簡単にデプロイできます AWS。EElastic Beanstalk は従来の ASP.NET アプリケーションおよび ASP.NET Core アプリケーションの両方をサポートしています。このトピックでは、ASP.NET Core アプリケーションのデプロイについて説明します。

## デプロイウィザードを使用する
<a name="tkv-deploy-using-wizard-netcore"></a>

ASP.NET Core アプリケーションを Elastic Beanstalk にデプロイする最も簡単な方法は、Toolkit for VToolkit for VisualToolkit for Visual Studio を使用します。

以前にツールキットを使用して、従来の ASP.NET アプリケーションをデプロイしたことがある場合、ASP.NET Core の場合もよく似ていることがわかると思います。以下の手順では、デプロイをウォークスルーで体験します。

ツールキットを使用したことがない場合は、ツールキットをインストールした後に最初に行う必要があるのは、ツールキットに AWS 認証情報を登録することです。その方法の詳細については、「How [to Specify the AWS Security Credentials for Your Application](deployment-beanstalk-specify-credentials.md#tkv-deploy-specify-credentials-for-application) for Visual Studio ドキュメント」を参照してください。

ASP.NET Core ウェブアプリケーションをデプロイするには、 Solution Explorer でプロジェクトを右クリックし、パ**ブリッシュ先 AWS... **を選択します。

Publish to AWS Elastic Beanstalk deployment ウィザードの最初のページで、新しい Elastic Beanstalk アプリケーションの作成を選択します。Elastic Beanstalk アプリケーションは、Elastic Beanstalk コンポーネントの論理コレクションで、環境、バージョン、環境設定などがあります。デプロイウィザードでアプリケーションが生成されます。このアプリケーションには、さらにアプリケーションバージョンと環境のコレクションが含まれます。環境には、アプリケーションバージョンを実行する実際の AWS リソースが含まれています。アプリケーションをデプロイするたびに、新しいアプリケーションバージョンが作成され、ウィザードでそのバージョンが環境に指定されます。これらの概念の詳細については、「[Elastic Beanstalk コンポーネント](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/concepts.components.html)」を参照してください。

次に、アプリケーションとその最初の環境の名前を設定します。各環境には一意の CNAME が関連付けられていて、デプロイが完了したときに、アプリケーションにアクセスするためにこの名前を使用できます。

次のページの **AWS Options** では、使用する AWS リソースのタイプを設定できます。この例では、[**Key pair (キーペア)**] セクションを除いて、デフォルト値のままにします。キーペアにより、Windows 管理者パスワードを取得できます。そのため、該当マシンにログオンできます。キーペアをまだ作成していない場合は、[**Create new key pair (新しいキーペアの作成)**] を選択する必要があります。

## アクセス許可
<a name="tkv-deploy-using-wizard-netcore-permissions"></a>

アクセス**許可**ページは、アプリケーションを実行している EC2 インスタンスに AWS 認証情報を割り当てるために使用されます。これは、アプリケーションが を使用して他の AWS SDK for .NET AWS サービスにアクセスする場合に重要です。アプリケーションから他のサービスを使用していない場合、このページの設定をデフォルトのまま利用できます。

## アプリケーションオプション
<a name="tkv-deploy-using-wizard-netcore-app-options"></a>

[**Application Options (アプリケーションオプション)**] ページの詳細は、従来の ASP.NET アプリケーションのデプロイ時に指定するものとは異なります。ここでは、アプリケーションをパッケージするために使用するビルド設定とフレームワークを指定し、アプリケーション用の IIS リソースパスも指定します。

[**Application Options**] ページを完了した後、[**Next (次へ)**] をクリックして設定を確認し、[**Deploy (デプロイ)**] をクリックして、デプロイプロセスを開始します。

## 環境ステータスをチェックする
<a name="tkv-deploy-using-wizard-netcore-check-status"></a>

アプリケーションがパッケージ化されて にアップロードされたら AWS、Visual Studio の AWS Explorer から環境ステータスビューを開いて、Elastic Beanstalk 環境のステータスを確認できます。

環境がオンラインになると、ステータスバーにイベントが表示されます。すべてが完了すると、環境のステータスが正常な状態に移行します。URL をクリックして、サイトを表示することができます。ここから、環境またはリモートデスクトップから、Elastic Beanstalk 環境の一部である Amazon EC2 インスタンスにログを取り込むこともできます。

アプリケーションの最初のデプロイは、新しい AWS リソースを作成するため、その後の再デプロイよりも少し時間がかかります。開発中にアプリケーションを繰り返し更新するときは、ウィザードを最初からもう一度実行するか、または、プロジェクトを右クリックし、[**Republish (再発行)**] オプションを選択することで、簡単に再デプロイできます。

再公開処理では、デプロイウィザードで以前に一通り実行した設定を使用してアプリケーションをパッケージし、アプリケーションバンドルを既存のElastic Beanstalk環境にアップロードします。

# アプリケーションの AWS セキュリティ認証情報を指定する方法
<a name="deployment-beanstalk-specify-credentials"></a>

Publish **to Elastic Beanstalk** ウィザードで指定した AWS アカウントは、ウィザードが Elastic Beanstalk へのデプロイに使用する AWS アカウントです。

推奨されませんが、デプロイ後にアプリケーションが AWS サービスにアクセスするために使用する AWS アカウント認証情報を指定する必要がある場合もあります。推奨される方法は、IAM ロールを指定することです。**[Publish to Elastic Beanstalk]** ウィザードでは、同じことを **[AWS オプション]** ページの **[Identity and Access Management ロール]** ドロップダウンリストから実行できます。レガシーの **[Publish to Amazon Web Services]** ウィザードでは、**[AWS オプション]**」ページの **[IAM ロール]** ドロップダウンリストがこれに相当します。

IAM ロールの代わりに AWS アカウント認証情報を使用する必要がある場合は、次のいずれかの方法でアプリケーションのアカウント認証情報を指定できます AWS 。
+ プロジェクトの `Web.config`ファイルの `appSettings`要素で AWS 、アカウントの認証情報に対応するプロファイルを参照します。(プロファイルを作成するには、[AWS 「認証情報の設定](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-config-creds.html)」を参照してください。) 次の例では、プロファイル名が `myProfile` である認証情報を指定しています。

  ```
  <appSettings>
    <!-- AWS CREDENTIALS -->
    <add key="AWSProfileName" value="myProfile"/>
  </appSettings>
  ```
+ **[Publish to Elastic Beanstalk]** ウィザードを使用する場合、**[アプリケーションオプション]** ページの **[キー]** と **[値]** のエリアにある **[キー]** 列で **[AWS AccessKey]** を選択します。**[値]** 行にアクセスキーを入力します。**AWS SecretKey** についても同じステップを繰り返します。
+ レガシーの **[Publish to Amazon Web Services]** ウィザードでは、**[アプリケーションオプション]** ページの **[アプリケーション認証情報]** エリアで、**[使用する認証情報]** を選択し、**[アクセスキー]** ボックスと **[シークレットキー]** ボックスにアクセスキーとシークレットアクセスキーを入力します。

# Elastic Beanstalk 環境にアプリケーションを再発行する方法 (レガシー)
<a name="deployment-beanstalk-republish"></a>

**重要**  
このドキュメントでは、従来のサービスと機能について言及しています。更新されたガイドとコンテンツについては、「[AWS .NET デプロイツール](https://aws.github.io/aws-dotnet-deploy/)」ガイドを参照してください。

個別の変更を行って既に起動しているElastic Beanstalk環境に新しいバージョンを再発行することで、アプリケーションで反復処理することができます。

1. ソリューションエクスプローラーで、前のセクションで発行したプロジェクトの **[AEBWebAppDemo]** プロジェクトフォルダのコンテキスト (右クリック) メニューを開き、**[Publish to AWS Elastic Beanstalk]** を選択します。  
![\[Solution Explorer context menu showing "Publish to AWS..." option for AEBWebAppDemo project.\]](http://docs.aws.amazon.com/ja_jp/toolkit-for-visual-studio/latest/user-guide/images/tkv-publish-to-aws-console.png)

   **[Publish to Elastic Beanstalk]** ウィザードが表示されます。  
![\[Publish to AWS Elastic Beanstalk dialog with profile and deployment options.\]](http://docs.aws.amazon.com/ja_jp/toolkit-for-visual-studio/latest/user-guide/images/tkv-aeb-wizard-app-console2.png)

1. [**Redeploy to an existing environment (既存の環境への再デプロイ)**] を選択してから、先ほど公開した環境を選択します。**[次へ]** をクリックします。

   [**Review (レビュー)**] ウィザードが表示されます。  
![\[Review wizard showing deployment details for an AWS Elastic Beanstalk application.\]](http://docs.aws.amazon.com/ja_jp/toolkit-for-visual-studio/latest/user-guide/images/tkv-aeb-wizard-app-review.png)

1. [**Deploy (デプロイ)**] をクリックします。アプリケーションは同じ環境に再デプロイされます。

アプリケーションが起動中または終了中の場合は再発行することはできません。

# Elastic Beanstalk アプリケーションのカスタムデプロイ
<a name="deployment-beanstalk-custom"></a>

このトピックでは、Elastic Beanstalkの Microsoft Windows コンテナ用のデプロイマニフェストがアプリケーションのカスタムデプロイをサポートする方法について説明します。

アプリケーションのカスタムデプロイは、AWS リソースを作成およに管理するため、Elastic Beanstalkの力をてこ入れしたいが、アプリケーションがデプロイする方法を完全に制御したいと考えている上級ユーザーのための強力な機能です。アプリケーションのカスタムデプロイでは、Elastic Beanstalk が実行する 3 つの異なるアクションの Windows PowerShell スクリプトを作成します。デプロイが開始されるときには、インストールアクションが使用され、ツールキットまたはウェブコンソールから `RestartAppServer` API が呼び出されるときには、再起動が使用され、新しいデプロイが実行されるときには、以前のデプロイでアンインストールが使用されます。

例えば、デプロイを行う ASP.NET アプリケーションがあり、ドキュメントチームがデプロイに含むための静的ウェブサイトを作成したとします。次のようなデプロイマニフェストを作成して、これを行うことができます。

```
{
  "manifestVersion": 1,
  "deployments": {

    "msDeploy": [
      {
        "name": "app",
        "parameters": {
          "appBundle": "CoolApp.zip",
          "iisPath": "/"
        }
      }
    ],
    "custom": [
      {
        "name": "PowerShellDocs",
        "scripts": {
          "install": {
            "file": "install.ps1"
          },
          "restart": {
            "file": "restart.ps1"
          },
          "uninstall": {
            "file": "uninstall.ps1"
          }
        }
      }
    ]
  }
}
```

各アクションにリストされているスクリプトは、デプロイマニフェストファイルと関連するアプリケーションバンドルに置かれる必要があります。この例では、アプリケーションバンドルには documentation.zip ファイルも含まれ、このファイルにドキュメントチームによって作成された静的ウェブサイトが含まれています。

`install.ps1` スクリプトは、zip ファイルを抽出して、IIS パスをセットアップします。

```
Add-Type -assembly "system.io.compression.filesystem"
[io.compression.zipfile]::ExtractToDirectory('./documentation.zip', 'c:\inetpub\wwwroot\documentation')

powershell.exe -Command {New-WebApplication -Name documentation -PhysicalPath  c:\inetpub\wwwroot\documentation -Force}
```

アプリケーションは IIS で実行されているので、再起動アクションは IIS のリセットを呼び出します。

```
iisreset /timeout:1
```

アンインストールスクリプトでは、インストールステージで使用された、すべての設定とファイルをクリーンアップすることが重要です。それによって、新しいバージョンのインストールフェーズで、以前のデプロイとの競合を回避できます。この例では、静的ウェブサイトの IIS アプリケーションとウェブサイトのファイルを削除する必要があります。

```
powershell.exe -Command {Remove-WebApplication -Name documentation}
Remove-Item -Recurse -Force 'c:\inetpub\wwwroot\documentation'
```

アプリケーションバンドルに含まれているこれらのスクリプトファイルと documentation.zip ファイルを使って、デプロイによって、ASP.NET アプリケーションが作成され、ドキュメントのサイトがデプロイされます。

この例では、単純な静的ウェブサイトをデプロイする簡単な例を選択しましたが、アプリケーションのカスタムデプロイを使うと、あらゆる種類のアプリケーションをデプロイして、Elastic Beanstalk が AWS リソースを管理するようにできます。

# カスタム ASP.NET Core Elastic Beanstalk デプロイ
<a name="deployment-beanstalk-custom-netcore"></a>

このトピックでは、デプロイのしくみと、Elastic BeanstalkおよびToolkit for Visual Studioを使って ASP.NET Core アプリケーションを作成するときにカスタムデプロイで行えることについて説明します。

Toolkit for Visual Studio でデプロイウィザードを完了すると、ツールキットはアプリケーションをバンドルして、それを Elastic Beanstalk に送信します。アプリケーションバンドルを作成する最初のステップは、新しい dotnet CLI を使い、**publish** コマンドを使用して、アプリケーションの発行の準備をすることです。フレームワークと設定は、ウィザードの設定から **publish** コマンドに継承されます。** に **Release`configuration` を選び、** に **netcoreapp1.0`framework` を選んだ場合は、ツールキットは次のコマンドを実行します。

 `dotnet publish --configuration Release --framework netcoreapp1.0` 

**publish** コマンドが完了すると、ツールキットは新しいデプロイマニフェストを発行フォルダに書き込みます。デプロイマニフェストは **aws-windows-deployment-manifest.json** という JSON ファイルであり、これは Elastic Beanstalk Windows コンテナ (バージョン 1.2 以降) はこれを読み込み、アプリケーションのデプロイ方法を決定します。例えば、IIS のルートにデプロイする ASP.NET Core アプリケーションでは、ツールキットは次のようなマニフェストファイルを生成します。

```
{
  "manifestVersion": 1,
  "deployments": {

    "aspNetCoreWeb": [
      {
        "name": "app",
        "parameters": {
          "appBundle": ".",
          "iisPath": "/",
          "iisWebSite": "Default Web Site"
        }
      }
    ]
  }
}
```

`appBundle` プロパティは、アプリケーションのバイナリの場所をマニフェストファイルを基準として指定します。このプロパティは、ディレクトリまたは ZIP アーカイブを指すことができます。`iisPath` プロパティと `iisWebSite` プロパティは、IIS でアプリケーションをホストする場所を示します。

## マニフェストをカスタマイズする
<a name="tkv-deploy-beanstalk-custom-netcore-manifest"></a>

ツールキットは、マニフェストファイルが発行フォルダに存在しない場合のみ、マニフェストファイルを書き込みます。ファイルが存在する場合は、ツールキットは最初のアプリケーションの、マニフェストの `appBundle` セクションの下に一覧表示されている、`iisPath`、`iisWebSite` および `aspNetCoreWeb` プロパティを更新します。これにより、**aws-windows-deployment-manifest.json** をプロジェクトに追加して、マニフェストをカスタマイズできます。これを Visual Studio で ASP.NET Core ウェブアプリケーションに行うには、新しい JSON ファイルをプロジェクトのルートに追加して、その名前を **aws-windows-deployment-manifest.json** とします。

マニフェストは **aws-windows-deployment-manifest.json** という名前である必要があり、プロジェクトのルートに存在する必要があります。Elastic Beanstalk コンテナはルートでマニフェストを検索し、検出された場合にはデプロイツールを呼び出します。ファイルが存在しない場合は、Elastic Beanstalk コンテナは以前のデプロイツールにフォールバックします。これは、アーカイブが **msdeploy** アーカイブであることを想定します。

dotnet CLI の `publish` コマンドにマニフェストが含まれるようにするため、`project.json` ファイルを更新して、マニフェストファイルが `include` の include セクション `publishOptions` に含まれるようにします。

```
{
   "publishOptions": {
     "include": [
       "wwwroot",
       "Views",
       "Areas/**/Views",
       "appsettings.json",
       "web.config",
       "aws-windows-deployment-manifest.json"
     ]
   }
 }
```

マニフェストの宣言が完了し、マニフェストはアプリケーションバンドルに含まれているため、アプリケーションのデプロイの方法をさらに設定することができます。デプロイウィザードがサポートする以上にデプロイをカスタマイズできます。AWS では **aws-windows-deploymentmanifest.json ファイル**に JSON スキーマを定義しており、Toolkit for Visual Studio をインストールすると、セットアップがそのスキーマの URL を登録します。

`windows-deployment-manifest.json` を開くと、スキーマのドロップダウンボックスで選択した、スキーマの URL があります。URL に移動すると、マニフェストで設定できる機能の完全な説明を取得できます。Visual Studio は、選択されたスキーマを使って、マニフェストの編集時に IntelliSense を提供します。

実行できる 1 つのカスタマイズは、アプリケーションが実行される IIS アプリケーションプールの設定です。以下の例では、IIS アプリケーションプール ("customPool") の定義方法を示しています。このアプリケーションプールはプロセスを 60 分ごとにリサイクルし、`"appPool": "customPool"` を使ってアプリケーションに割り当てます。

```
{
  "manifestVersion": 1,
  "iisConfig": {
    "appPools": [
      {
        "name": "customPool",
        "recycling": {
          "regularTimeInterval": 60
        }
      }
    ]
  },
  "deployments": {
    "aspNetCoreWeb": [
      {
        "name": "app",
        "parameters": {
          "appPool": "customPool"
        }
      }
    ]
  }
}
```

さらにマニフェストは、インストール、再起動、アンインストールのアクションの前後に実行する、Windows PowerShell スクリプトを宣言できます。例えば、次のマニフェストは、Windows PowerShell スクリプト `PostInstallSetup.ps1` を実行して、ASP.NET Core アプリケーションが IIS にデプロイされた後にさらにセットアップを行います。このようなスクリプトを追加する場合、スクリプトが `project.json` ファイルの publishOptions の下の include セクションに追加されるようにします。これは `aws-windows-deployment-manifest.json` ファイルの場合と同様です。このようにしない場合は、スクリプトは dotnet CLI の **publish** コマンドの一部として含まれません。

```
{
  "manifestVersion": 1,
  "deployments": {
    "aspNetCoreWeb": [
      {
        "name": "app",
        "scripts": {
          "postInstall": {
            "file": "SetupScripts/PostInstallSetup.ps1"
          }
        }
      }
    ]
  }
}
```

## .ebextensions について
<a name="tkv-deploy-beanstalk-custom-netcore-ebextensions"></a>

Elastic Beanstalk **.ebextensions** 設定ファイルは、他の Elastic Beanstalk コンテナのすべてでサポートされています。.ebextensions を ASP.NET Core アプリケーションに含めるには、`.ebextensions` ディレクトリを、`project.json` ファイル内の `publishOptions` 下の`include` セクションに追加します。.ebextensions の詳細については、[Elastic Beanstalk デベロッパーガイド](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/ebextensions.html)を参照してください。

# .NET および Elastic Beanstalk 用の複数アプリケーションのサポート
<a name="deployment-beanstalk-multiple-application"></a>

デプロイマニフェストを使用すると、複数のアプリケーションを同じElastic Beanstalk 環境にデプロイする能力があります。

デプロイマニフェストは、[ASP.NET Core](http://www.asp.net/core) ウェブアプリケーションおよび従来の ASP.NET アプリケーションの msdeploy アーカイブをサポートします。例えば、フロントエンドに ASP.NET Core を使用したすばらしい新たなアプリケーションを作成し、拡張 API 用のウェブ API プロジェクトがあるとします。また、従来の ASP.NET を使用して作成した管理者アプリがあるとします。

ツールキットのデプロイウィザードは 1 つのプロジェクトのデプロイに重点を置いています。複数のアプリケーションのデプロイを利用するには、アプリケーションバンドルを手動で作成する必要があります。まず、マニフェストを作成します。この例では、ソリューションのルートにマニフェストを作成します。

マニフェストのデプロイセクションには 2 つの子があります。デプロイを行う一連の ASP.NET Core ウェブアプリケーションと、デプロイを行う一連の msdeploy アーカイブです。各アプリケーションで、IIS パスとアプリケーションのビットのマニフェストへの相対位置を設定します。

```
{
  "manifestVersion": 1,
  "deployments": {

    "aspNetCoreWeb": [
      {
        "name": "frontend",
        "parameters": {
          "appBundle": "./frontend",
          "iisPath": "/frontend"
        }
      },
      {
        "name": "ext-api",
        "parameters": {
          "appBundle": "./ext-api",
          "iisPath": "/ext-api"
        }
      }
    ],
    "msDeploy": [
      {
        "name": "admin",
        "parameters": {
          "appBundle": "AmazingAdmin.zip",
          "iisPath": "/admin"
        }
      }
    ]
  }
}
```

作成したマニフェストを使い、Windows PowerShell を使用して、アプリケーションバンドルを作成し、それを実行する既存のElastic Beanstalk環境を更新します。スクリプトは、Visual Studio ソリューションが含まれるフォルダから実行されることを前提として作成されます。

スクリプトで最初に必要なことは、アプリケーションバンドルを作成する、ワークスペースフォルダをセットアップすることです。

```
$publishFolder = "c:\temp\publish"

$publishWorkspace = [System.IO.Path]::Combine($publishFolder, "workspace")
$appBundle = [System.IO.Path]::Combine($publishFolder, "app-bundle.zip")

If (Test-Path $publishWorkspace){
  Remove-Item $publishWorkspace -Confirm:$false -Force
}
If (Test-Path $appBundle){
  Remove-Item $appBundle -Confirm:$false -Force
}
```

フォルダを作成したら、次にフロントエンドの準備を行います。デプロイウィザードと同様に、dotnet CLI を使用してアプリケーションを発行します。

```
Write-Host 'Publish the ASP.NET Core frontend'
$publishFrontendFolder = [System.IO.Path]::Combine($publishWorkspace, "frontend")
dotnet publish .\src\AmazingFrontend\project.json -o $publishFrontendFolder -c Release -f netcoreapp1.0
```

サブフォルダ "frontend" は出力フォルダに使用されていることに注意し、マニフェストで設定するフォルダを一致させます。次に、同様の作業をウェブ API プロジェクトに対して行う必要があります。

```
Write-Host 'Publish the ASP.NET Core extensibility API'
$publishExtAPIFolder = [System.IO.Path]::Combine($publishWorkspace, "ext-api")
dotnet publish .\src\AmazingExtensibleAPI\project.json -o $publishExtAPIFolder -c Release -f netcoreapp1.0
```

管理者サイトは、従来の ASP.NET アプリケーションであるため、dotnet CLI を使用することはできません。管理者アプリケーションには、msbuild を使用して、ビルドターゲットパッケージを渡して msdeploy アーカイブを作成します。デフォルトでは、パッケージターゲットは msdeploy アーカイブを `obj\Release\Package` フォルダの下に作成するため、アーカイブを発行ワークスペースにコピーする必要があります。

```
Write-Host 'Create msdeploy archive for admin site'
msbuild .\src\AmazingAdmin\AmazingAdmin.csproj /t:package /p:Configuration=Release
Copy-Item .\src\AmazingAdmin\obj\Release\Package\AmazingAdmin.zip $publishWorkspace
```

これらすべてのアプリケーションに関する指示を Elastic Beanstalk 環境に与えるには、マニフェストをソリューションから発行ワークスペースにコピーしてフォルダを圧縮します。

```
Write-Host 'Copy deployment manifest'
Copy-Item .\aws-windows-deployment-manifest.json $publishWorkspace

Write-Host 'Zipping up publish workspace to create app bundle'
Add-Type -assembly "system.io.compression.filesystem"
[io.compression.zipfile]::CreateFromDirectory( $publishWorkspace, $appBundle)
```

アプリケーションバンドルの作成が完了したので、ウェブコンソールに移動して、アーカイブをElastic Beanstalk環境にアップロードします。または、引き続き AWS PowerShell コマンドレットを使用して、アプリケーションバンドルを使って、Elastic Beanstalk 環境を更新します。`Set-AWSCredentials` および `Set-DefaultAWSRegion` コマンドレットを使用して、Elastic Beanstalk 環境を含むプロファイルとリージョンに現在のプロファイルとリージョンが設定されていることを確認します。

```
Write-Host 'Write application bundle to S3'
# Determine S3 bucket to store application bundle
$s3Bucket = New-EBStorageLocation
Write-S3Object -BucketName $s3Bucket -File $appBundle


$applicationName = "ASPNETCoreOnAWS"
$environmentName = "ASPNETCoreOnAWS-dev"
$versionLabel = [System.DateTime]::Now.Ticks.ToString()

Write-Host 'Update Beanstalk environment for new application bundle'
New-EBApplicationVersion -ApplicationName $applicationName -VersionLabel $versionLabel -SourceBundle_S3Bucket $s3Bucket -SourceBundle_S3Key app-bundle.zip
Update-EBEnvironment -ApplicationName $applicationName -EnvironmentName $environmentName -VersionLabel $versionLabel
```

ここで、ツールキットまたはウェブコンソールのどちらかの Elastic Beanstalk 環境のステータスページを使用して、更新のステータスを確認します。完了すると、デプロイマニフェストで設定した IIS パスを使って、デプロイされた各アプリケーションに移動できるようになります。