AWS Startup ブログ

【週刊 Ask An Expert #30】SPA 実装するときのオススメを教えて!先週の #AWSLoft で受けた質問10選

こんにちは、スタートアップ ソリューションアーキテクトの塚田 (Twitter: @akitsukada) です。

AWS AmplifyAWS Chalice をまだ触ったことがない方は ↓ このイベントで AWS Loft にきて体験しましょう。Amplify や Chalice を使ってとても簡単に GraphQL API や AI 機能、REST API を作る手段が学べる開発者の方向けワークショップです。お待ちしてます!

さて、このブログ記事では週刊 Ask An Expert 第30回目をお届けします。「参考になった」「いい内容だ」と思っていただけたら、ぜひハッシュタグ #AWSLoft を付けてシェアしてください。改善点・ご要望もお待ちしております。

Ask An Expert ?

皆さん AWS Loft Tokyo はご存知でしょうか?
目黒セントラルスクエア17Fにある、AWS を利用中のスタートアップとデベロッパーのためのコワーキングおよびイベントスペースです。その一角に AWS のエキスパート – Solutions Architect (SA) や Cloud Support Engineer (CSE)、たまにサービス開発チームのエンジニアも – といった中の人に技術的な質問ができる、Ask An Expert カウンターがあります。そこでは毎月、来場者の方から100件以上にものぼるご相談をお受けしています。

ある日の Ask An Expert の様子 – お客様対応中の能仁

この連載「週刊 Ask An Expert」では、多くのご相談を中から我々スタートアップソリューションアーキテクトが 独断で面白かった質問を 10 個選び紹介していきます。他の AWS Loft 利用者がどんな質問をしているのか、自分が知らなかった新しいトピックはないか、Ask An Expert ってどんなところなのか、一緒に見ていきましょう。Let’s ask an expert!

週刊 Ask An Expert #30 (2019/11/05 – 11/08)

この週の対応者は、SA: 浅野、市川、今村、内山、奥野、鮫島、澤野、下佐粉、塚田、辻、程、中井、保坂、山崎、CSE: 榎本、嶋本 でした。多い!

Q1: Amazon Cognito ユーザープールへ、ソーシャル ID プロバイダーのユーザ情報を追加する方法は?

例えば「Facebook で登録」する機能など、新規ユーザーとして登録する機能を実装ときは、ユーザープールに ID プロバイダーを設定しておき、該当の ID プロバイダーでログインした情報を Cognito に渡すことでユーザープールに EXTERNAL_PROVIDER 属性のユーザーとして登録されます。

すでにユーザープールに存在するユーザーをソーシャル ID プロバイダーでログイン可能にするには、AdminLinkProviderForUser API を使います。

Q2: スタートアップ支援プログラム AWS Activate について知りたい。このプログラムは日本で展開されているか?

はい、日本でも提供しています。AWS Activate は、スタートアップがビジネスに集中できるよう、AWS 利用料のクレジット、トレーニング、テクニカルサポート(ビジネスプラン)クレジットなどを提供するスタートアップ支援プログラムです。アクセラレーター、インキュベーター、VC等に出資を受けているスタートアップ企業が対象となっています。詳しくはお近くのAWS担当者、またはアクセラレーター・インキュベーターや VC の担当者にお問い合わせください。

Q3: AWS CLI で credentials を設定してあるが、 Amplify CLI でそれを使うにはどうすればよいか。

プロジェクトを初期化するとき、ルートディレクトリで amplify init コマンドを実行すれば、以下の質問で設定済みの profile を選択することができます。

? Do you want to use an AWS profile? Yes
? Please choose the profile you want to use (Use arrow keys)
  your-profile1
  your-profile2
❯ your-profile3

または、既存のプロジェクトでは amplify configure コマンドを実行することで profile を設定することができます。

Q4: Amazon SQS の料金が高くなってきた…。コスト削減できないか見て欲しい。

Amazon CloudWatch のメトリクスと請求情報を拝見したところ、SQS に届いているメッセージ数はそこまで多くはなく、メッセージを処理するバックエンドから SQS に対するリクエスト (ポーリング) が多い可能性がありそうです。ちゃんとロングポーリングで実装されているかご確認いただくようお願いしました。。

Q5: Amazon S3 の Static Hosting で SPA(Single Page Application)をホストして、API を Amazon API Gateway と AWS Lambda で実装するにあたって。どのような JavaScript フレームワークを使うべきか、React とか?AWS って mBaaS ある?

どのフレームワークを選ぶかはお客様次第ですが、AWS Amplify なら AWS を mBaaS のように使うことができ、React、React Native、Vue、Angular、Ionic に対応しています。また、Amplify Console を使うことで SPA の CI/CD とホスティングをすることができます。

Q6: Ruby on Rails で Web アプリケーションを開発している。S3 上に格納されている画像ファイルをブラウザで表示する際にエラーになってしまう。

設定されている IAM ポリシーに、ActiveStorage を使う際に必要な DeleteObject 権限が不足していました。権限を追加しエラーが解消されました。

Q7: AWS Amplify で開発している。新しいメンバーの Amplify 環境をセットアップしたところ、現メンバーの環境では発生しなかったエラーが起きた。

一般論として、CDN でのキャッシュなどで回避できない低遅延の要件がない限りは、サービス提供地と AWS リージョンが地理的に近接している必要はない場合が多いです。その上でインドのリージョンを選択される場合も、ムンバイリージョンは他のリージョンと同様にお使いいただけます。なお中国リージョンに関しては「AWS 中国ゲートウェイ」をご覧頂き、不明な点はお問い合わせ下さい。

Q8: ELB をパブリックサブネットからプライベートサブネットに移行したい。ELB のサブネットを変更した場合の影響を心配している。

既存の ELB を設定変更する方法の他に、プライベートサブネットに新規の ELB を立てて動作確認した後、Amazon Route 53 でトラフィックを既存 ELB から新規 ELB に切り替える方法などをご案内しました。

Q9: Amazon QuickSight のユーザー管理について質問。契約アカウント(Root)を移譲できるか?来月アカウントが削除される予定がある。

Root ユーザーの移譲はできません。Root となっているユーザーが消えると QuickSight が消えてしまうので、消す前に他の QuickSight に移植をしてください。ご自身で管理されるアカウントを新規作成して移譲するのが良いでしょう。

Q10: Amplify CLI で構築した API Gateway へのアクセスが 403 になってしまう。

403 エラーは API Gateway へのアクセス許可がなかったため発生していました。なぜそれが発生したかは、対話形式の Amplify CLI 実行時の状況を確認したいところですが、それよりも amplify remove apiamplify add api でやり直したほうが早そうだったため、試していただくようお願いしました。
また、Python でコードを書いてもよいとのことなので、 AWS Chalice もご紹介しました。

週刊 Ask An Expert まとめ、今回はここまで

最後までお読み頂きありがとうございます。冒頭に書いたように、執筆者の独断により興味深かった質問を選び、かつざっくり要約して記載しています。実際にはより具体的な質問をより多く頂いていますが、様々なご相談があることが伝わっていれば幸いです。まだ Ask An Expert カウンターをご利用になったことがない方も、AWS Loft Tokyo をご利用の際はぜひお気軽にご質問ください。
※ Ask An Expert が混雑してお待ちいただく場合、またはエキスパートが不在の場合がございます。何卒ご容赦ください。

このブログの著者

塚田 朗弘 (Akihiro Tsukada)
スタートアップソリューションアーキテクト。好きなラーメン二郎は桜台駅前店。