Amazon Web Services ブログ

[AWS Black Belt Online Seminar] AWS Amplify 資料及び QA 公開

先日 (2020/05/20) 開催しました AWS Black Belt Online Seminar「AWS Amplify」の資料を公開しました。当日、参加者の皆様から頂いた QA の一部についても共有しております。

AWS クラウドサービス活用資料集(すべての過去資料が閲覧できます)

Q1. AWS Amplify で使う「カテゴリ」はどのような単位で使うものですか?イメージがわかないので具体例を教えてください。
A. Amplify のカテゴリはユースケース単位でアプリケーションに機能を追加することができます。
Amplify カテゴリの例:

  • REST API や GraphQL の API 基盤を構築する API カテゴリ
  • 画像認識やテキスト翻訳などの機械学習の機能を提供する Predictions カテゴリ
  • グインや各カテゴリに認証機能を提供する Authentication カテゴリ

アプリケーションに Amplify の機能を追加するには、Amplify CLI からカテゴリを追加し、バックエンドを構築します。例えば、Amplify CLI からGraphQL API カテゴリを追加した場合は、AWS AppSync や Amazon DynamoDB といったバックエンドを構築することができます。また、Amplify Framework はカテゴリ単位で構築したバックエンドに接続する便利なライブラリを提供します。Amplify Framework を用いていただくことで、バックエンドと統合したアプリケーションを直感的なインターフェースで簡単に実装していただくことが可能です。

Amplify CLI で構築できるカテゴリについての詳細はこちらのドキュメントをご参照ください

Q2. aws-exports.js は直接編集しないようにとのことですが、ユーザに見える形(編集可能な形)で見えるようになっているのは何か理由があるのでしょうか。
A. aws-export.js はアプリケーションのソースコードから設定を読み込む必要があるため、プロジェクトフォルダ内にファイルが存在する必要があります。このファイルは、`$amplify env checkout` コマンドや`$amplify mock` (ローカルで GraphQL や DynamoDB のモック環境を起動するコマンド)実行時に、Amplify CLI によって動的に書き換えられます。そのため、aws-exports.js は.gitignore に追加され、Git の管理対象にはなりません。また、このファイルの中身を確認いただくことで、構築されたリソースのエンドポイントなどの情報を確認することができます。
詳細は以下ドキュメントをご参照ください:

Q3. GraphQL が最適な用途は何でしょうか?
A. GraphQL をご利用いただくのが良いケースに以下のようなものがございます:

  • API ドキュメントを手動で記述せず、型指定されたスキーマから API の設計を行いたい場合
  • Subscription を用いたリアルタイム通知を用いたい場合
  • クライアントから取得するデータを柔軟にクエリしたい場合

2019 年 8 月に実施された AWS Black Belt Online Seminar AWS AppSync も合わせてご確認ください。

Q4. Amazon Cognito(auth)で必要な URI は iOS の場合、どのような URI を渡せば良いのでしょうか?
A. ご質問で言及されている URI を Hosted UI の URI と仮定し回答します。 Amplify CLI で Cognito UserPool の構築を行なった場合、`$amplify status` から Hosted UI のエンドポイントを確認することができます。また、マネジメンとコンソールからも確認いただくことが可能です。

Amazon Cognito のユーザープールの一覧画面から対象のユーザープールを選択し、「アプリクライアントの設定」> 対象のアプリクライアントの「ホストされたUIを起動」リンクを押下

リダイレクト URI には、SignIn、SignOut 時のリダイレクト先 URI (iOS の場合は myapp:// から始まるURI) を指定します。詳細は以下ドキュメントをご参照ください:

Q5. Vue などの node module は、Amplify CLI の手順の前にインストールを済ませておくべきなのでしょうか?よろしくお願いします。
A. node_module へのパッケージのインストールと、Amplify の導入 (amplify init) を行う手順に順序性はございません。

Q6. Amazon Cognito Identity SDK for JavaScript を使用しているプロジェクトにおいて、Amplify への移行を考えております。新規プロジェクトではなく、既存プロジェクト(Amazon Congnito などのバックエンドサービスも構築済み)でも、Amplify CLI を使用することはできるでしょうか。使用できる場合は、注意点などはあるでしょうか(バックエンドサービスを構築するコマンドを実行してはならないなど)。
A. 既存のバックエンドを Amplify のカテゴリとして登録することはできません。既存のバックエンドと Amplify CLI で構築するバックエンドは別々のライフライクルで管理する必要があります。Amplify Framework は Amplify CLI で構築したバックエンドと既存のバックエンドを意識せず呼び出すことができます。以下の例では Amplify CLI で構築したバックエンドの設定と既存の Amazon Cognito のバックエンドの設定をマージして Amplify.configure メソッドで読み込みを行なっています。

snippet (Javascript)

Amplify Framework から既存の Amazon Cognito バックエンドを呼び出す方法に関しては、こちらのドキュメントをご参照ください。

Q7. 初期に Amplify CLI / Amplify Framework のインストールをプロジェクトに行うとしているが、Web アプリケーションの場合には、ローカルの開発 PC 上で行うという認識でいいのでしょうか?
A. ローカルの開発 PC 上で行なっていただく認識で問題ありません。また、バックエンドの反映を行わない端末(アプリケーションのみの開発を行う端末等)では、Amplify CLI をインストールしていただく必要はございません。

Q8. AWS Amplify の開発は TypeScript に対応していますでしょうか?また、AWS Cloud Development Kit (以下、AWS CDK)と共存して開発したい場合、どのようなプロジェクト構成(ディレクトリ構成)が推奨されますでしょうか?
A. Amplify FrameworkはTypeScriptをサポートしています。また、API の GraphQL カテゴリでは、バックエンド構築時に作成したスキーマ定義から API のレスポンスの型定義が自動で作成されます。
こちらの資料 Generate client types from a GraphQL schema をご参照ください。

ディレクトリの構成に絶対の解はございませんが、AWS CDK のフォルダを amplify フォルダと同階層(プロジェクトのトップディレクトリ)に配置する構成が考えられます。また、Amplify CLI、AWS CDK で構築するバックエンドを、それぞれ同じバージョンサイクルで管理する必要が無い場合は、リポジトリを分けて運用していただく方法もございます。

AWS CDK で構築したバックエンドは、Amplify CLI で構築したバックエンドとは異なり、自動で aws-exports.js にバックエンドの情報は記述されません。AWS CDK で構築したバックエンドの情報は、アプリケーションの環境設定ファイルなどに切り出していただき、Amplify CLI、AWS CDK で構築したバックエンド情報をマージして Amplify.configure で設定を読み込ませる必要があります。

snippet (Javascript・React)

AWS CDK などで作成した既存のバックエンドを Amplfiy Framework で設定する方法に関しては以下ドキュメントをご参照ください:

Q9. AWS Amplify に向かない WEB アプリはどういったものがございますでしょうか?
A. Web の Amplify Framework は SPA (Single Page Application) や静的サイトのでの利用が想定されています。バックエンドで HTML の構築を行う Web アプリケーションの場合、Amplify Framework の利用シーンは限定的になる可能性があります。Amplify Framework を使わない場合であっても、Amplify CLI でバックエンドの構築のみ行うといった部分的な利用は可能です。

Q10. AWS Amplify の長所の1つはバックエンドの自動構築だと理解しましたが、それにより既存のバックエンドの利用は大変ということはありますでしょうか。例えば、自動生成されるバックエンドの場合は設定ファイルなども自動生成されるが、既存のバックエンドを利用する場合に設定ファイルを手動で書き換えねばならず、それが大変にならないかが気になっています。
A. Amplify Framework では Amplify CLI で構築したバックエンド、既存のバックエンドの設定をマージして Amplify.configure で読み込んでいただくことが可能です。
Q8. の回答内容、snippet、参考ドキュメントも合わせてご参照ください:

Q11. AWS Amplify でできないことを教えてください。結構制限があるように見受けられます。たとえば、Amazon Neptune は使えますか?
A. Amazon Nepture は現時点で Amplify のカテゴリとして対応しておりません。Amplify CLI のカテゴリとして対応しないバックエンドの構築には、カスタムカテゴリの利用をご検討ください。こちらの資料もあわせてご確認ください。

Q12. どのように Amazon Cognito と graphQL の auth ディレクティブを利用すれば、管理者権限、顧客権限、エンドユーザ権限、その他業務権限などきめ細やかな権限設定が可能か?
A. Cognito UserPool に「管理者」「顧客」「エンドユーザ」のグループを作成し、auth ディレクティブの rules に各グループに所属しているユーザの権限設定を記述していただくことができます。次の例では以下の権限を定義しています:

  • 「customer」 グループに所属しているユーザは Customer テーブルにデータを create 処理を実行することができる
  • 「admin」グループに所属するユーザは、read/create/update/delete 処理を実行することができる

詳細は、@auth ディレクティブのドキュメントをご参照ください。

今後の AWS Webinar | イベントスケジュール

直近で以下を予定しています。各詳細およびお申し込み先は下記URLからご確認いただけます。皆様のご参加をお待ちしております。

AWSome Day Online Conference

「AWSome Day Online」は、AWSの主要サービスや基礎知識を約 2.5 時間という短い時間で、ポイントを押さえて紹介いたします。技術的な面だけではなく、AWS クラウドを学ぶために必要となる知識を身に付けたい方、エンジニアのみならず、営業職、プリセールス職、学生まで幅広い方々におすすめします。

※2020年は毎月第一水曜日に開催します。

日時:2020 年 7 月 1 日(水) 15:00 – 17:40 終了予定 | 詳細・お申込みについてはこちら≫

大規模テレワークにも短期間で対応するAWSのクラウド型仮想デスクトップサービス Amazon WorkSpaces

本ウェビナーでは、フルマネージド型の DaaS(Desktop-as-a-Service)ソリューションであるAmazon WorkSpacesのご紹介、ユーザー事例紹介、そして実際にAmazon WorkSpacesの展開に際して考慮いただく技術面について紹介します。

日時:2020 年 6 月 11日(木)11 : 00 – 12 : 40 | 詳細・お申込みについてはこちら≫

Amazon QuickSight ハンズオンセミナー ~セルフBIサービス・販売管理ダッシュボード編~

本セミナーでは、企業のデータ利活用に向けたデータの公開・可視化を中心テーマにおき、販売管理データの可視化と展開という観点から、AWSクラウド上での最適な実現方法について、Amazon QuickSightを利用したハンズオンセッションを紹介します。

日時:2020 年 6 月 18 日(木)13:00 – 15:30 | 詳細・お申込みについてはこちら≫

Amazon WorkSpacesとChromebookで実現する Windowsデスクトップ仮想化
本セミナーでは、クラウド型デスクトップのAmazon WorkSpacesとChromebookデバイスの相性の良さ、またMS OfficeからG Suiteへの移行方法について解説します。

日時:2020 年 7 月 9 日(木)14:00 – 16:00 | 詳細・お申込みについてはこちら≫

AWS Black Belt Online Seminar

6 月のアジェンダが公開されました。配信当日は Q&A ができます。参加された方だけの特権です。ぜひ、ご登録・ご視聴ください。

6 月分の詳細・お申込はこちら≫

  • 6/2(火)12:00-13:00 AWS AI Language Services
  • 6/9(火)12:00-13:00 Amazon Quantum Ledger Database (QLDB)
  • 6/10(水)18:00-19:00 Event Driven Serverless Application
  • 6/16(火)12:00-13:00 AWS サポート技術支援サービス紹介
  • 6/17(水)18:00-19:00 Amazon Athena
  • 6/23(火)12:00-13:00 Amazon Elasticsearch Service
  • 6/24(水)18:00-19:00 Container Service Update
  • 6/30(火)12:00-13:00 Amazon Cognito