Amazon Web Services ブログ

AWS Tools for Visual Studio Team Servicesのご紹介

本日、Amazon Web Servicesは、AWS Tools for Microsoft Visual Studio Team Services(VSTS)を発表しました(訳注:原文のBlog記事は2017/8/15にポストされました)。 ツールは無料で使用することができ、Visual Studio Marketplaceで配布されます。 VSTS内とTeam Foundation Serverでホストされたビルドとリリースのパイプラインで、AWSサービスと対話するためにこれらのタスクを使用することができます。 例えばタスクを利用してAmazon S3バケットとの間でコンテンツをコピーしたり、パイプラインにタスクを追加してAWS Elastic BeanstalkAWS CodeDeploy、またはAWS Lambdaにビルド出力をデプロイしたりすることができます。 ツールはオープンソースとして提供されGitHubで公開されています。

この記事では、ツールのインストール方法、中に含まれるタスクの概要、セットアップを検証するための簡単なシナリオを実行し、いかに簡単に使使えるかを見ていきます。 後続の記事では、タスクの詳細とVSTSパイプラインでの使用方法について詳しく説明する予定です。

 

インストール

AWS Tools for Microsoft Visual Studio Team Servicesのインストールは素早くて簡単です! 最初にVisual Studio Marketplaceにアクセスしてください。 以下に示すように、ツールをインストールするには2つのオプションがあります。 オンラインのVSTSアカウントにインストールするか、ツールをダウンロードしてオンプレミスのTeam Foundation Serverインスタンスにインストールすることができます。

やることはこれだけです! これでこの拡張機能のタスクは、アカウントまたはオンプレミスのインスタンスで使用できるようになりました。この最初のリリースで提供されているタスクを簡単に確認してみましょう。 先に述べたように、続く記事ではこれらのタスクのいくつかをより深く見ていくことになります。

  • AWS CloudFormation Create/Update Stack: このタスクでは、テンプレートファイルとオプションのパラメータファイルを使用して、AWS CloudFormationでスタックを作成または更新できます。 タスクはスタックがすでに存在するかどうかによって、既存のスタックを更新するか、新しいスタックを作成するかを自動的に切り替えます。 どちらの「モード」かを選択する必要はないため、パイプラインでの使用が便利です。 テンプレートとパラメータファイルを選択するだけでなく、変更セットを使用してスタックを作成または更新することも、変更セットを自動的に実行するオプションを追加することもできます(正常に検証された場合)。 また「Execute Change Set」タスクを使用して、後から有効な変更セットを実行することもできます。
  • AWS CloudFormation Delete Stack: このタスクは名前またはIDで識別されるスタックを削除します。 新規のデプロイメントに伴う破壊と再構築のシナリオで、開発環境やテスト環境のスタックをクリーンアップするのに使用することができます。
  • AWS CloudFormation Execute Change Set:前述のように、「Create/Update Stack」タスクでは、変更セットを使用して変更を実行するオプションが提供され、セットが有効であればすぐに実行するか、またはこのタスクを後で使用して変更を実行できます。 変更セットと関連するスタックの名前を提供するとタスクが残りの処理を行いスタックが作成または更新の完了ステータスに達するのを待ちます。
  • AWS Elastic Beanstalk Deployment:このタスクを使用してWebDeployアーカイブを使用して従来のASP.NETアプリケーションをデプロイしたり、ASP.NET Coreアプリケーションをデプロイしたりすることができます。
  • AWS Lambda .NET Core Deployment:このタスクでは、スタンドアロンの関数またはサーバレスアプリケーションをAWS Lambdaにデプロイすることができます。 このタスクはAWS Visual Studio Toolkitと同じdotnet CLI拡張を使用するため、タスク内で使用可能なコマンドラインツールスイッチの完全なカスタマイズ機能が利用できます。
  • AWS Lambda Invoke Function:AWS Lambdaにデプロイすることに加えて、このタスクを使用してパイプライン内からLambda関数を実行するようにします。 関数の結果はパイプライン内の次のタスクが利用する変数に出力することができます。
  • AWS S3 Download:バケット名とオプションのキープレフィックスの組み合わせを使用して、このタスクは1つ以上のglobパターンのセットを使用して、Amazon S3バケットからパイプラインの作業フォルダにコンテンツをダウンロードできるようにします。 たとえばこれを使用してカスタムな静的コン テンツをビルドに挿入することができます。
  • AWS S3 Upload:AWS S3 Downloadタスクと同様に、このタスクではパイプラインの作業フォルダからバケットにコンテンツをアップロードするために、ソースフォルダ内で実行されるバケット名とglobパターンの組み合わせを取ります。
  • AWS Tools for Windows PowerShell Script:このタスクでは、Tools for Windows PowerShell(AWSPowerShell)モジュールのコマンドレットを使用するスクリプトを実行し、必要に応じてスクリプトを実行する前にモジュールをインストールします。
  • AWS CLI:このタスクでは、個々のAWS CLIコマンドを実行できます。 ただし、ビルドホストにAWS CLIをすでにインストールしている必要があります。

 

タスクの設定と利用

リリースに含まれるタスクについて少し理解できたので、パイプラインでAWS S3 Uploadタスクを使用する方法を簡単に見ていきましょう。 これはまたツールの設定の検証と、タスクに対する資格情報がどのように扱われるかを理解することにも繋がります。

このチュートリアルでは、ビルドおよび/またはデプロイするアーティファクトをフェッチする既存のビルドまたはリリース定義があると仮定しています。 ここでは単純に新しいタスクをパイプラインの最後に追加し、S3バケットにビルド済みまたはデプロイ可能な成果物をアップロードするように設定します。 先に進み使用するビルド定義を選択するか新しいビルド定義を作成します。 定義を選択したり作成したりしたら定義を編集するオプションを選択します。

次のスクリーンショットの例では、ASP.NET Coreプロジェクトの新しいビルド定義を作成することを選択しました。 リストされているタスクにはデフォルト値が割り当てられています。

1.  パイプラインにS3 Uploadタスクを追加
このチュートリアルでは、Publishタスクによって生成されたビルド出力を取得し、Amazon S3にアップロードします。 したがって既存のPublishとPublich Artifactsタスクの間に新しいタスクを挿入します。 これを行うには、[Add Task]を選択します。 右側のパネルで使用可能なタスクを利用可能なAWSタスクが現れるまでスクロールし、AWS S3 Uploadを指定します。そして「Add」を選択してビルド定義に追加します。

Publishタスクの直後に新しいタスクが追加されていない場合はそのタスクを所定の位置にドラッグします。 それから設定を開始します。

 

2. タスクの資格情報を設定

Amazon S3などのAWSサービスのリクエストを行うタスクでは認証情報を設定する必要があります。 Team Systemsの用語では、これらをサービスエンドポイントと呼びます。 AWSタスクは資格情報を提供できるようにAWSという名前のサービスエンドポイントタイプを提供します。 このタスクの資格情報をすばやく追加するには、AWS Credential ボックスの右側にある[+]アイコンをクリックします。

歯車のアイコンをクリックすると新しいブラウザページが開き、すべてのサービスエンドポイント(新しいAWSタイプを含む)を管理できます。 タスクで使用するために複数のAWS資格情報セットを設定する場合はこれを行います。

「+」アイコンをクリックすると、AWSキーを入力できるポップアップウィンドウが表示されます。

AWS CLIやAWS modules for PowerShellのようなAWS SDKやツールを使用するのに慣れているなら、ここでのオプションに慣れているかもしれません。それらのSDKやツールと同じように基本的にはAWSの認証情報を構築します。プロファイルには名前(この場合はConnection nameに入力された値)があり、これをタスク設定でこの資格情報のセットを参照するために使用します。 次に使用する認証情報のアクセスキーとシークレットキーを入力し後で利用するための名前を割り当て[OK]をクリックして保存します。 ポップアップが閉じ新しい資格情報が事前に選択されたS3 Uploadタスク設定に戻ります。

他のタスクで入力した資格情報を再利用することができます。 設定しているタスクの[AWS Credentials]リストで、資格情報を識別するために使用した名前を選択するだけです。

 

注意:

アカウントのルート資格情報を使用することはお勧めしません。 代わりに、1つ以上のIAMユーザーを作成し、それらの資格情報を使用します。 詳細については、「AWSアクセスキーを管理するためのベストプラクティス」を参照してください。

 

3. タスクオプションの設定

資格情報を設定して選択することで、タスク設定を完了できます。

  • us-east-1、us-west-2などバケットが存在する(または作成する)リージョンを設定します。
  • バケットの名前を入力します(バケット名はグローバルに一意でなければなりません)。
  • Source Folderは、アップロードするコンテンツを含むビルドエリア内のフォルダを指します。 Team Servicesにはハードコードされたパスを避けるために使用できるいくつかの変数が用意されています。このチュートリアルでは、Build.ArtifactStagingDirectoryという変数を使用することを選択します。これは、デプロイ先にプッシュされる前にアーティファクトがコピーされるエージェント上のローカルパスです。 完璧ですね!
  • Filename Patternsには、アップロードのためにソースフォルダの下のファイルを選択するために使用される1つ以上のglobパターンを含めることができます。 ここに示すデフォルトの値は、すべてのファイルを再帰的に選択します。複数のパターンを1行ごとに指定できます。 このチュートリアルでは、前のタスク(パブリッシュ)がビルドした結果を含むzipファイルを出力します。 これがアップロードされるファイルになります。
  • Target Folderは、アップロードされたすべてのファイルに適用されるバケットのキープレフィックスです。 これはフォルダパスのように考えることができます。 値を指定しないと、ファイルはバケットのルートにアップロードされます。 デフォルトでは、相対的なフォルダ階層は保持されます。
  • 最後に、設定できる追加オプションがあります:
    • Create S3 Bucket if it does not exist:バケットを作成できない場合、タスクは失敗します。
    • Overwirte(アドバンスドセクション内): これはデフォルトで選択されています。
    • Flatten folders(アドバンスドセクション内):これにより、ソースフォルダを基準にした各ファイルのパスが削除され、すべてのファイルがターゲットフォルダに直接配置されます。

 

4. ビルドの実行

設定された新しいタスクで、ビルドを実行する準備が整いました。 Save & Queueを選択します。

ビルド中、タスクはメッセージをログに出力します。

まとめ

ご覧のとおり、新しいタスクの使用は簡単です。 今後の記事では、いくつかのデプロイメントタスクとその使用方法の詳細について説明します。 私たちは、新しいツールの登場によってあなたが私たちと同じようにワクワクしていることを願っています。そして、VSTS環境でツールが役立つことがわかるでしょう。 GitHubリポジトリにフィードバックを提供して、今後の開発を支援してください!

 

謝辞

これらの新しいツールをVisual Studio Marketplaceに導入する際に、Visual Studio ALM Rangersの支援を頂きました。Visual Studio ALM Rangersのサポートに感謝します。

 

(翻訳はSA福井が担当しました。原文はこちらです。)