« AWS Black Belt Online Seminar 「Amazon EC2」「Amazon EC2 Windows」資料公開 | メイン | 【.NET Developer Blog】ASP.NET Core の探索 パート2: 継続的デリバリ »

【.NET Developer Blog】ASP.NET Core の探索 パート1: GitHub からデプロイする

ASP.NET Core は、以前は ASP.NET 5 と呼ばれていましたが、.NET アプリケーションを展開するための多くの可能性を提供するプラットフォームです。この連載ポストでは、 AWS 上に展開する ASP.NET の選択肢について探っていきます。

 

ASP.NET Core とは何か?

ASP.NET Core は、新しいオープン ソース、クロス プラットフォーム、モジュール化された ASP.NET の実装です。現在開発中ですので、アップデートや変更についての将来のポストを期待してください。(例えば、新しいCLIなど) 

 

GitHub からデプロイする

AWS CodeDeploy デプロイメント サービスを GitHub からのデプロイメントをトリガーするために構成することができます。ASP.NET Core 以前は、.NET アプリケーションは展開される前に、ビルドされなければなりませんでした。ASP.NET Core アプリケーションはソースコードから展開し、実行することができます。

 

サンプル コードとセットアップ スクリプト

このブログのコードとセットアップ スクリプトは、aws-blog-net-exploring-aspnet-core リポジトリの part1 ブランチで見つけることができます。

 

AWS CodeDeploy のセットアップ

AWS CodeDeploy は、デプロイメント グループとしてセットアップし構成した、 Amazon EC2 インスタンスのデプロイメントを自動化します。より詳しい情報いついては、AWS CodeDeploy ユーザーガイドをご参照ください。

ASP.NET Core は、クロスプラットフォーム サポートを売りにしていますが、このポストでは Microsoft Windows Server 2012 R2 を実行するインスタンスを利用します。Windows EC2 インスタンスには、 IIS と HttpPlatformHandler がインストールされている必要があります。HttpPlatformHanlder は、 IIS と ASP.NET Core Web サーバーの Kestrel と通信するために必要です。

AWS CodeDeploy 環境をセットアップするために、 GitHub リポジトリにある .\EnvironmentSetup\EnvironmentSetup.ps1 PowerShell スクリプトを実行することができます。このスクリプトは、 EC2 インスタンスをセットアップし、 AWS CodeDeploy と IIS を構成する AWS CloudFormation スタックを作成します。そして、その後に ExploringAspNetCorePart1 という AWS CodeDeploy アプリケーションをセットアップします。(約注:Windows PowerShell for AWS のデフォルトのリージョンを Set-DefaultAWSRegion で us-east-1 に設定します。)

継続して AWS リソースに対して課金されることを避けるために、テストが終わったら、.\EnvironmentSetup\EnvironmentTearDown.ps1 PowerShell スクリプトを忘れずに実行してください。

GitHub と AWS CodeDeploy

AWS CodeDeploy コンソールを利用して、AWS CodeDeploy アプリケーションを GitHub リポジトリへ接続することができます。次に GitHub リポジトリとコミットID を指定することで、 AWS CodeDeploy アプリケーションへのデプロイメントを開始することができます。 AWS CodeDeploy チームが、AWS CodeDeploy アプリケーションに自動的にデプロイメントをプッシュするために、リポジトリを設定する方法についてブログをポストしています。

 

ソースからデプロイする

GitHub からデプロイする場合、デプロイメント バンドルはリポジトリの Zip アーカイブです。リポジトリのルート内に、 AWS CodeDeploy アプリケーションをどのように展開するか記述している appspec.yml ファイルが存在します。 我々のアプリケーションでは、 appspec.yml は非常にシンプルになっています:


version: 0.0 os: windows files: - source: \ destination: C:\ExploringAspNetCore hooks: ApplicationStop: - location: .\RemoveApp.ps1 timeout: 30 ApplicationStart: - location: .\InstallApp.ps1 timeout: 300

 

このファイルは、AWS CodeDeploy にリポジトリからファイルを C:\ExploringAspNetCore 上に解凍し、そしてその後にアプリケーションを開始するために PowerShell スクリプト InstallApp.ps1を実行するように指示しています。スクリプトは 3つのパートに分かれています。最初のパートは最新の dnx ランタイムをインストールします。

 

# Download the bootstrapper dnvm install script
iex ((new-object net.webclient).DownloadString('https://dist.asp.net/dnvm/dnvminstall.ps1'))

# Install the latest dnx runtime
C:\Windows\system32\config\systemprofile\.dnx\bin\dnvm install latest -p

 

2番目のパートは、アプリケーションを発行するために必要なすべての依存関係とパッケージを取得します。

 

# Restore the nuget references
dnu restore

# Publish application with all of its dependencies and runtime for IIS to use
dnu publish --configuration release -o c:\ExploringAspNetCore\publish --runtime active

 

3番目のパートは、配布フォルダの wwwroot をポイントするように IIS を更新します。 AWS CodeDeploy エージェントは 32 ビットのアプリケーションなので、 PowerShell スクリプトを 32 ビット バージョンの PowerShell で実行します。 PowerShell から IIS へアクセスするためには、64 ビットの PowerShell を利用する必要があります。従って、このセクションではスクリプトを 64 ビット バージョンの PowerSHell.exe に渡します。

 

C:\Windows\SysNative\WindowsPowerShell\v1.0\powershell.exe -Command {
             Import-Module WebAdministration
             Set-ItemProperty 'IIS:\sites\Default Web Site' 
                 -Name physicalPath -Value c:\ExploringAspNetCore\publish\wwwroot
}

 

メモ: この行は読みやすさのために書式を整えています。正しい文法は、リポジトリ内のスクリプトを参照してください。

 

AWS CodeDeploy へデプロイメントをプッシュするために GitHub リポジトリを構成済みであれば、すべてのプッシュごとに、コードの変更は Zip 圧縮されて AWS CodeDeploy に送信されます。その後、AWS CodeDeploy は、appspec.yml と InstallApp.ps1 を実行し、EC2 インスタンスは最新のコードで更新されます --- ビルドのステップは要求されません。


フィードバックを共有してください

aws-blog-net-exploring-aspnet-core リポジトリからチェックアウトして、どのように思ったかを我々に教えてください。我々は継続してリポジトリにアイデアを追加していきます。ASP.NET Core アプリケーションのデプロイに対するあなた自身のアイデアを共有するために、遠慮せずに課題をオープンしてください。

(日本語訳はSA 福井 厚が担当しました。原文はこちらです。 https://blogs.aws.amazon.com/net/post/TxSBK1AHRGLHVC/Exploring-ASP-NET-Core-Part-1-Deploying-from-GitHub 

コメント

Twitter, Facebook

このブログの最新情報はTwitterFacebookでもお知らせしています。お気軽にフォローください。

2018年4 月

1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30