リファレンス企業として、Example Corp. の SaaS (software as a service) ポータルを作成します。Example Corp. では、関心のある顧客がアカウントを作成し、ウェブベースのソフトウェアサブスクリプションにサインアップできるようにします。

• Amazon Simple Storage Service (Amazon S3) を使用して、Example Corp. のウェブサイトをホスティングできるようにします。
• Amazon SES を使用して E メールアドレス ID を設定して検証します。新しいユーザーアカウントが作成されると、検証 E メールが Amazon Simple Email Service (SES) で指定したアドレスに送信されます。
• Amazon AppStream 2.0 を使用してソフトウェアサブスクリプションにサインアップするユーザーがストリーミングアプリケーションを利用できるようにします。
• AWS Identity and Access Management (IAM) を使用してポリシーとロールを作成します。
• 作成した IAM ロールに IAM ポリシーをアタッチします。ポリシーは、作成する機能を実行するために必要です。
• 新しいユーザープールを作成し、Amazon Cognito を使用してアプリケーションクライアントを追加します。Amazon Cognito では、AppStream ストリーミングアプリケーションにユーザー管理と認証を提供します。
• AWS Lambda を使用して関数を作成します。この関数を使って、Cognito で認証されたストリーミングユーザーのストリーミング URL を生成します。
• Amazon API Gateway を使用して RESTful API を作成します。リソースとメソッドは、ストリーミングユーザーと Lambda 関数の間でリクエストを交換するために使用されます。
 

以下の図に示すように、アプリケーションのアーキテクチャには、Amazon S3、Amazon SESAmazon CognitoAmazon API GatewayAWS LambdaAmazon AppStream 2.0 を使用します。

このプロジェクトには 6 つのモジュールがあります。各モジュールを完了してから次のモジュールに進む必要があります。

  1. 静的ウェブサイトをホスティングする
  2. ユーザーの管理
  3. サーバーレスバックエンドの構築
  4. RESTful API をデプロイする
  5. 設定をテストする
  6. プロジェクトリソースをクリーンアップする

AWS の使用経験: AppStream 2.0 およびその他の AWS のサービスに精通していることが推奨されます。AppStream 2.0 を初めて使用する場合、AppStream 2.0 Getting Started Guideを参照してください。このガイドでは、以下の方法について説明しています。

  • 2 つのアプリケーションをインストールして設定する。 
  • AppStream 2.0 コンソールを使用して、基本的な管理タスクを実行する。
  • AWS CloudFormation テンプレートを使用して、Amazon Virtual Private Cloud (Amazon VPC) で仮想ネットワークをプロビジョニングする。
     

完了までの時間: 2.5 時間

完了までのコスト: このプロジェクトで使用するサービスの一部は、AWS 無料利用枠の対象です。対象のサービスについては、 AWS 無料利用枠を参照してください。無料利用枠を超えて使用する場合、このプロジェクトを完了するための総コストは、ニーズと設定 (例えば、使用する AppStream 2.0 インスタンスタイプとフリートタイプ) によって異なります。コストを削減するために、プロジェクトが完了したら、プロジェクトに関連付けられているリソースを終了させることをお勧めします。リソースを終了させない場合、フリートとイメージビルダーを使用していない時に停止させることをお勧めします。
 
前提条件: このチュートリアルを完了するには、以下が必要です。

CloudFormation テンプレート: 選択したリージョンでこれらの AWS CloudFormation テンプレートのいずれかを起動して、このワークショップに必要なリソースを自動的に構築できます。

リージョン CloudFormation テンプレート
米国西部 (オレゴン) スタックを起動 >
米国東部 (バージニア北部)  スタックを起動 >
アジアパシフィック (ムンバイ)
スタックを起動 >
アジアパシフィック (東京) スタックを起動 >
アジアパシフィック (シドニー) スタックを起動 >
アジアパシフィック (シンガポール) スタックを起動 >
アジアパシフィック (ソウル)  スタックを起動 >
欧州 (アイルランド) スタックを起動 >
欧州 (フランクフルト) スタックを起動 >
CloudFormation の手順

次の手順は、AWS CloudFormation でテンプレートを使用して、このプロジェクトのモジュール 1〜4 で説明されているほとんどのタスクを自動化する方法を示しています。これらのタスクのリストについては、プロジェクトの概要ページの「達成するタスク」セクションを参照してください。

注意

CloudFormation テンプレートはこのプロジェクトのほとんどのタスクを自動化しますが、既存の AppStream 2.0 イメージ、フリート、およびスタックが引き続き必要です。CloudFormation テンプレートはこれらのリソースを作成しません。さらに、Amazon Simple Email Service (SES) を使用して E メールアドレス ID を設定して検証する必要があります。詳細については、次を参照してください。モジュール 2 の「手順 1. Amazon SES で新しい E メールアドレス ID を追加して検証する」ユーザーを管理します。

1.AWS マネジメントコンソールにサインインしていることを確認してください。

2.リージョン選択リストで、このプロジェクトの環境を構築する AWS リージョンに関連付けられている [スタック起動] リンクを開きます。

3.[スタックをクイック作成] ページには、次の情報が表示されます。

  • テンプレート URL: テンプレートの URL です。
  • スタックの説明: CloudFormation スタックの説明です。
  • スタック名: CloudFormation スタックの名前です。デフォルト名は as2-stack-002 です。デフォルトの名前のままにするか、オプションでわかりやすい名前に変更します (examplecorp-cfn-stack-saas など)。

4.パラメータの下で、次を実行します。

  • AppStream2FleetName には、使用する AppStream 2.0 フリートの名前を入力します。
  • AppStream2StackName には、使用する AppStream 2.0 スタックの名前を入力します。
  • S3BucketName には、Amazon S3 バケットにグローバルで一意の名前を入力します (examplecorp-s3bucket-saas-<yourfirstname-yourlastname> など)。S3 バケットはウェブサイトをホストします。

5.[機能] で、テンプレートに最低限の必須権限を持つ Identity and Access Management (IAM) リソースが含まれているという通知が届きます。具体的には、[AWS::IAM::Role] 機能が必要です。CloudFormation がカスタム名で IAM リソースを作成する可能性を確認するには、チェックボックスを選択します。

6.[テーブルを作成] を選択します。

7.作成プロセスが完了すると、AWS CloudFormation コンソールに CREATE_COMPLETE ステータスが表示されます。

8.スタックを選択した状態で、[出力] タブを選択します。

9.[出力] テーブルの [キー] 列で、CloudFormation テンプレートが作成したリソースの値をメモします。

  • BucketName – S3 バケットの名前です。手順 4 で S3 バケットに指定した名前が使用されます。
  • ExampleCorpApiGWInvokeUrl -- API Gateway は URL を呼び出します。URL は https://<code>.execute-api.<region>.amazonaws.com/dev の形式に従います。
  • Cognito ユーザープール ID -- Cognito ユーザープールの ID です。
  • クライアント ID -- アプリクライアントの ID です。ID は <region>_<code> の形式に従います。
  • ウェブサイト URL -- S3 バケットの Amazon S3 ウェブサイトエンドポイントです。URL は https://<S3bucketname>.s3-website-<region>.amazonaws.com の形式に従います。

10.Example Corp ウェブサイトのアセット zip ファイル (workshop_02_SaaS.<GUID>.zip) のコンテンツをローカルコンピュータにダウンロードします。

11.ローカルコンピュータにダウンロードしたファイルの内容を抽出します。

12.ローカルコンピュータで zip ファイルの内容を抽出した場所に移動し、テキストエディタで assets/js/config.js のファイルを開きます。

13.ファイルで、次の変数の値を検索して設定します。

  • userPoolId – Cognito ユーザープールの ID です。
  • userPoolClientId -- アプリクライアント ID の値です。
  • リージョン -- CloudFormation スタックを作成した AWS リージョンのコードです。リージョンコードのリストについては、AppStream 2.0 のリージョンとエンドポイント表のリージョン列をご覧ください。
  • Invokeurl -- API Gateway の値は URL を呼び出します。

14.変更を保存して、ファイルを閉じます。

15.Amazon S3 コンソールを https://console.thinkwithwp.com/s3/ で開きます。

16.[バケット名] リストで、手順 4 で指定した S3 バケットの名前を選択します。

17.ローカルコンピュータで zip ファイルの内容を抽出した場所に移動します。workshop_02_SaaS.<GUID> フォルダを開きます。このフォルダには、次のフォルダとファイルが含まれます。

  • アセット
  • イメージ
  • index.html
  • LICENSE.TXT
  • NOTICE.TXT
  • register.html
  • signin.html
  • THIRD-PARTY.TXT
  • verify.html

18.workshop_02_SaaS.<GUID> ディレクトリの下にあるすべてのファイルとフォルダを選択します。フォルダ自体を選択してはいけません。

19.Amazon S3 コンソールウィンドウの [概要] タブで、[アップロード] を選択します。

20.選択したものを [アップロード] ダイアログボックスにドラッグアンドドロップします。

21.[アップロード] を選択します。

22.アップロードが完了したら、正しいファイルとフォルダが [概要] タブのリストに表示されることを確認します。

23.コンソールの左上隅にあるメニューで、[サービス] を選択します。

24.検索ボックスに cloudformation と入力し、検索結果から CloudFormation を選択します。

25.[スタック] リストの [スタック名] で、CloudFormation が作成されたスタックの名前を選択します。

26.[出力] タブの [値] で、WebsiteURL キーに対応する URL を選択します。Example Corp ウェブサイトのホームページが表示されます。

27.ウェブサイトのアドレスバーで、URL に /signin.html を追加します。Example Corp ポータルサインインページが表示されます。

28.テストを続けるには、モジュール 5 の手順 2 から始まる手順を実行します。設定をテストします。