チュートリアル: Elastic Beanstalk を使用した、Linux での ASP.NET Core アプリケーションのデプロイ - AWS Elastic Beanstalk

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

チュートリアル: Elastic Beanstalk を使用した、Linux での ASP.NET Core アプリケーションのデプロイ

このチュートリアルでは、新しい ASP.NET Core アプリケーションをビルドし、Elastic Beanstalk を使用して Amazon Linux2 環境にデプロイするプロセスについて説明します。

このチュートリアルでは、最初に、.NET Core SDK の dotnet コマンドラインツールを使用して、次の操作を行います。

  • ASP.NET を使用して HTTP リクエストを処理するアプリケーションを生成します。

  • ランタイム依存関係をインストールします。

  • ウェブアプリケーションをローカルにコンパイルして実行します。

  • アプリケーションアーティファクトを出力ディレクトリに公開します。アーティファクトには、コンパイルされたソースコード、ランタイム依存関係、および構成ファイルが含まれます。

次に、新しく作成したアプリケーションで次の操作を行います。

  • 公開されたアーティファクトを含むアプリケーションソースバンドルを作成します。

  • Amazon Linux 2 環境を作成し、Elastic Beanstalk を使用してアプリケーションをデプロイします。

  • Elastic Beanstalk によって作成されたサイト URL を開いて、アプリケーションを実行します。

アプリケーションのソースコードは dotnet-core-linux-tutorial-source.zip にあります。

デプロイ可能なソースバンドルは、 dotnet-core-linux-tutorial-bundle にあります。

前提条件

このチュートリアルでは、NET Core SDK を使用して基本的な .NET Core ウェブアプリケーションを生成し、ローカルで実行して、デプロイ可能なパッケージを構築します。

要件
  • .NET Core 3.1 以降

.NET core SDK をインストールするには
  1. microsoft.com/net/core からインストーラーをダウンロードします。開発プラットフォームを選択します。[.NET Core SDK をダウンロード] を選択します。

  2. インストーラーを実行し、手順に従います。

注記

このチュートリアルの例は、Windows コマンドラインからのリストですが、.NET Core SDK は、いくつかのオペレーティングシステムでの開発プラットフォームをサポートしています。このチュートリアルで示す dotnet コマンドは、異なる開発プラットフォーム間で一貫しています。

このチュートリアルでは、コマンドラインツールの ZIP ユーティリティを使用して、Elastic Beanstalk にデプロイできるソースバンドルを作成します。Windows で zip コマンドを使用するには、UnxUtils をインストールします。( UnxUtils は、 zipや などの便利なコマンドラインユーティリティの軽量コレクションですls。) または、Windows エクスプローラーや他の ZIP ユーティリティを使用して、ソースバンドルアーカイブを作成できます。

をインストールするには UnxUtils
  1. UnxUtils をダウンロードします。

  2. ローカルディレクトリにアーカイブを抽出します。たとえば、C:\Program Files (x86) と指定します。

  3. Windows の PATH ユーザー変数にバイナリへのパスを追加します。たとえば、C:\Program Files (x86)\UnxUtils\usr\local\wbin と指定します。

    1. Windows キーを押し、environment variables と入力します。

    2. [Edit environment variables for your account] (アカウントの環境変数を編集する) を選択します。

    3. PATH を選択して、編集 を選択します。

    4. セミコロンで区切って、[Variable value] フィールドにパスを追加します。例: C:\item1\path;C:\item2\path

    5. [OK] を 2 回選択して、新しい設定を適用します。

    6. 実行中のコマンドプロンプトウィンドウを閉じ、コマンドプロンプトウィンドウを再度開きます。

  4. 新しいコマンドプロンプトウィンドウを開き、zip コマンドを実行して、動作することを確認します。

    > zip -h Copyright (C) 1990-1999 Info-ZIP Type 'zip "-L"' for software license. ...

.NET Core プロジェクトをウェブアプリケーションとして生成する

dotnet コマンドラインツールを使用して新しい C# .NET Core ウェブアプリケーションプロジェクトを生成し、ローカルで実行します。デフォルトの .NET Core ウェブアプリケーション Hello World! が表示されます。

新しい .NET core プロジェクトを生成するには
  1. 新しいコマンドプロンプトウィンドウを開き、ユーザーフォルダに移動します。

    > cd %USERPROFILE%
  2. dotnet new コマンドを使用して、新しい .NET Core プロジェクトを生成します。

    C:\Users\username> dotnet new web -o dotnet-core-tutorial The template "ASP.NET Core Empty" was created successfully. Processing post-creation actions... Running 'dotnet restore' on dotnet-core-tutorial\dotnet-core-tutorial.csproj... Determining projects to restore... Restored C:\Users\username\dotnet-core-tutorial\dotnet-core-tutorial.csproj (in 154 ms). Restore succeeded.
ウェブサイトをローカルで実行するには
  1. dotnet restore コマンドを使用して、依存関係をインストールします。

    C:\Users\username> cd dotnet-core-tutorial C:\Users\username\dotnet-core-tutorial> dotnet restore Determining projects to restore... All projects are up-to-date for restore.
  2. dotnet run コマンドを使用して、アプリケーションをローカルで構築し起動します。

    C:\Users\username\dotnet-core-tutorial> dotnet run info: Microsoft.Hosting.Lifetime[0] Now listening on: https://localhost:5001 info: Microsoft.Hosting.Lifetime[0] Now listening on: http://localhost:5000 info: Microsoft.Hosting.Lifetime[0] Application started. Press Ctrl+C to shut down. info: Microsoft.Hosting.Lifetime[0] Hosting environment: Development info: Microsoft.Hosting.Lifetime[0] Content root path: C:\Users\username\dotnet-core-tutorial
  3. localhost:5000 を開き、デフォルトのウェブブラウザからサイトを表示します。

    アプリケーションが、ウェブブラウザに表示されるようにHello World!を戻します。

ウェブサーバーでアプリケーションを実行するには、web.config 設定ファイルとランタイム依存関係で、コンパイルされたソースコードをバンドルする必要があります。dotnet ツールには、dotnet-core-tutorial.csprojで、設定に基づいてディレクトリでこれらのファイルを収集する publish コマンドが用意されています。

ウェブサイトを構築するには
  • dotnet publish コマンドを使用して、コンパイル済みコードと依存関係を site という名前のフォルダに出力します。

    C:\users\username\dotnet-core-tutorial> dotnet publish -o site Microsoft (R) Build Engine version 16.7.0-preview-20360-03+188921e2f for .NET Copyright (C) Microsoft Corporation. All rights reserved. Determining projects to restore... All projects are up-to-date for restore. dotnet-core-tutorial -> C:\Users\username\dotnet-core-tutorial\bin\Debug\netcoreapp3.1\dotnet-core-tutorial.dll dotnet-core-tutorial -> C:\Users\username\dotnet-core-tutorial\site\
出典バンドルを作成するには
  • zip コマンドを使用して、dotnet-core-tutorial.zip という名前の出典バンドルを作成します。

    出典バンドルには、サイトフォルダに公開されたすべてのファイルが含まれています。

    注記

    別の ZIP ユーティリティを使用する場合は、必ず ZIP アーカイブのルートフォルダにすべてのファイルを追加してください。これは、アプリケーションを Elastic Beanstalk 環境に正常にデプロイするために必要です。

    C:\users\username\dotnet-core-tutorial> cd site C:\users\username\dotnet-core-tutorial\site>zip -r ../dotnet-core-tutorial.zip . adding: appsettings.Development.json (164 bytes security) (deflated 38%) adding: appsettings.json (164 bytes security) (deflated 39%) adding: dotnet-core-tutorial.deps.json (164 bytes security) (deflated 93%) adding: dotnet-core-tutorial.dll (164 bytes security) (deflated 58%) adding: dotnet-core-tutorial.exe (164 bytes security) (deflated 57%) adding: dotnet-core-tutorial.pdb (164 bytes security) (deflated 48%) adding: dotnet-core-tutorial.runtimeconfig.json (164 bytes security) (deflated 33%) adding: web.config (164 bytes security) (deflated 41%)
    注記

    このチュートリアルでは、ウェブサーバー上でアプリケーションを 1 つだけ実行しているため、出典バンドルに Procfile は必要ありません。ただし、同じウェブサーバーに複数のアプリケーションをデプロイするには、Procfile を含める必要があります。詳細については、「Procfile を使用した .NET Core on Linux 環境の設定」を参照してください。

Elastic Beanstalk 環境を起動してアプリケーションをデプロイする

Elastic Beanstalk コンソールを使用して Elastic Beanstalk 環境を起動し、ソースバンドルをデプロイします。

ソースバンドルは、dotnet-core-linux-tutorial-bundle からダウンロードできます。

環境を起動してコード(コンソール)をデプロイするには
  1. 次の事前設定されたリンク console.aws.amazon.com/elasticbeanstalk/home#/newApplication?applicationName=tutorials&environmentType=LoadBalanced を使用して Elastic Beanstalk コンソールを開きます。

  2. [Platform (プラットフォーム)] で、.NET Core on Linux を選択します。

  3. ローカルファイル を選択し、[Choose file (ファイルの選択)] を選択して、出典バンドルを開きます。

  4. 確認と起動 を選択します。

  5. 使用できる設定を確認し、アプリの作成 を選択します。アプリケーションは、レスポンスに Hello World! と書き込んで戻ります。

環境を作成し、コードをデプロイするのに約 10 分かかります。

環境を起動すると、以下のリソースが作成されます。

  • EC2 インスタンス – 選択したプラットフォームでウェブアプリケーションを実行するよう設定された Amazon Elastic Compute Cloud (Amazon EC2) 仮想マシン。

    各プラットフォームは、それぞれ特定の言語バージョン、フレームワーク、ウェブコンテナ、またはそれらの組み合わせをサポートするための、特定のソフトウェア、設定ファイル、スクリプトを実行します。ほとんどのプラットフォームでは、Apache または NGINX のいずれかをウェブアプリケーションの前にリバースプロキシとして配置します。そのプロキシがリクエストをアプリケーションに転送し、静的アセットを提供し、アクセスログとエラーログを生成します。

  • インスタンスセキュリティグループ – ポート 80 上のインバウンドトラフィックを許可するよう設定された Amazon EC2 セキュリティグループ。このリソースでは、ロードバランサーからの HTTP トラフィックが、ウェブ・アプリケーションを実行している EC2 インスタンスに達することができます。デフォルトでは、トラフィックは他のポート上で許可されません。

  • ロードバランサー – アプリケーションを実行するインスタンスにリクエストを分散するよう設定された Elastic Load Balancing ロードバランサー。ロードバランサーにより、インスタンスを直接インターネットに公開する必要もなくなります。

  • ロードバランサーセキュリティグループ – ポート 80 上のインバウンドトラフィックを許可するよう設定された Amazon EC2 セキュリティグループ。このリソースでは、インターネットからの HTTP トラフィックが、ロードバランサーに達することができます。デフォルトでは、トラフィックは他のポート上で許可されません。

  • Auto Scaling グループ – インスタンスが終了されたか利用不可になった場合にそのインスタンスを置き換えるよう設定された Auto Scaling グループ。

  • Amazon S3 バケット – Elastic Beanstalk の使用時に作成されるソースコード、ログ、その他のアーティファクトの保存場所。

  • Amazon CloudWatch アラーム – 環境内のインスタンスの負荷をモニタリングし、負荷が高すぎるか低すぎる場合にトリガーされる 2 つの CloudWatch アラーム。アラームがトリガーされると、Auto Scaling グループはレスポンスとしてスケールアップまたはダウンを行います。

  • AWS CloudFormation スタック – Elastic Beanstalk は AWS CloudFormation を使用して環境内のリソースを起動し、設定の変更を伝達します。リソースは、AWS CloudFormation コンソールに表示できるテンプレートで定義されます。

  • ドメイン名 – ウェブ・アプリケーションまでのルートとなるドメイン名であり、subdomain.region.elasticbeanstalk.com の形式です。

    注記

    Elastic Beanstalk アプリケーションのセキュリティを強化するため、elasticbeanstalk.com ドメインはパブリックサフィックスリスト (PSL) に登録されています。セキュリティ強化のため、Elastic Beanstalk アプリケーションのデフォルトドメイン名に機密な Cookie を設定する必要が生じた場合は、__Host- プレフィックスの付いた Cookie の使用をおすすめします。この方法は、ドメインをクロスサイトリクエストフォージェリ (CSRF) の攻撃から守るのに役立ちます。詳細については、Mozilla 開発者ネットワークの「Set-Cookie」ページを参照してください。

Elastic Beanstalk は、これらのリソースをすべて管理します。環境を終了すると、Elastic Beanstalk は含まれているすべてのリソースを終了します。

注記

Elastic Beanstalk が作成する Amazon S3 バケットは環境間で共有され、環境を終了しても削除されません。詳細については、「Amazon S3 で Elastic Beanstalk を使用する」を参照してください。

クリーンアップ

Elastic Beanstalk での作業が終了したら、環境を終了できます。Elastic Beanstalk は、Amazon EC2 インスタンスデータベースインスタンスロードバランサー、セキュリティグループ、アラーム など、環境に関連付けられているすべての AWS リソースを終了します。

Elastic Beanstalk 環境を終了するには
  1. Elastic Beanstalk コンソールを開き、リージョンリストで を選択します AWS リージョン。

  2. ナビゲーションペインで、[環境] を選択し、リストから環境の名前を選択します。

    注記

    環境が多数ある場合は、検索バーを使用して環境リストをフィルタリングします。

  3. [Actions] (アクション)、[Terminate environment] (環境の終了) の順に選択します。

  4. 画面上のダイアログボックスを使用して、環境の終了を確認します。

Elastic Beanstalk を使用すると、いつでもアプリケーション用の新しい環境を簡単に作成できます。

次のステップ

アプリケーションの開発が進むにつれ、.zip ファイルを手動で作成して Elastic Beanstalk コンソールにアップロードすることなく、環境を管理してアプリケーションをデプロイすることが必要になります。Elastic Beanstalk コマンドラインインターフェイス (EB CLI) には、 easy-to-use コマンドラインインターフェイスからアプリケーションを作成、設定、および Elastic Beanstalk 環境にデプロイするためのコマンドが用意されています。

Visual Studio を使用してアプリケーションを開発する場合は、 を使用してコードに変更をデプロイ AWS Toolkit for Visual Studio したり、Elastic Beanstalk 環境を管理したり、他の AWS リソースを管理したりすることもできます。詳細については、「AWS Toolkit for Visual Studio」を参照してください。

開発およびテストの目的で、Elastic Beanstalk のデプロイ機能を活用して、マネージド DB インスタンスを環境に直接追加することを検討できます。環境内でのデータベースのセットアップの詳細については、「Elastic Beanstalk 環境にデータベースを追加する」を参照してください

最後に、本番環境でアプリケーションを使用する予定の場合は、お客様の環境にカスタムドメイン名を設定し、セキュアな接続のために HTTPS を有効にすることをお勧めします。