AWS Startup ブログ
【週刊 Ask An Expert #25】チャットアプリにおける AWS AppSync の Subscription 設計を教えてほしい! 先週の #AWSLoft で受けた質問10選
今週末は三連休ですが、あいにく台風19号、ハギビスがくるようですね。ハギビス(Hagibis)とはフィリピンの言葉で「素早い」という意味なのだそうです。これまた猛烈な台風だそうなので、みなさん十分にお気をつけくださいませ。
そんな台風を乗り切った週明け 10/15(火) には、AWS Loft Tokyo にて AWS Amplify & AWS Chalice ハンズオンを開催します!
またその後 10/18 (金) の 13〜17時には、通常の Ask An Expert カウンター付近(ソファ席あたりの予定)にて、Database / Analytics 系サービス開発チームの日本人メンバーに直接質問できる初の試み、 Ask An Expert – Service Team Day を予定しています。
AWS のサービス開発チームに気軽に日本語で質問できる機会なので、ぜひお気軽にお越しください!
さて、このブログ記事では週刊 Ask An Expert 第25回目をお届けします。「参考になった」「いい内容だ」と思っていただけたら、ぜひハッシュタグ #AWSLoft を付けてシェアしてください。改善点・ご要望もお待ちしております。
Ask An Expert ?
皆さん AWS Loft Tokyo はご存知でしょうか?
目黒セントラルスクエア17Fにある、AWS を利用中のスタートアップとデベロッパーのためのコワーキングおよびイベントスペースです。その一角に AWS のエキスパート – Solutions Architect (SA) や Cloud Support Engineer (CSE) – といった中の人に技術的な質問ができる、Ask An Expert カウンターがあります。そこでは毎月、来場者の方から100件以上にものぼるご相談をお受けしています。
この連載「週刊 Ask An Expert」では、多くのご相談を中から我々スタートアップソリューションアーキテクトが 独断で面白かった質問を 10 個選び紹介していきます。他の AWS Loft 利用者がどんな質問をしているのか、自分が知らなかった新しいトピックはないか、Ask An Expert ってどんなところなのか、一緒に見ていきましょう。Let’s ask an expert!
週刊 Ask An Expert #25 (2019/09/30 – 10/04)
この週の対応者は SA: 矢ヶ崎・柳・荒木・益子・浅野・山崎・松本・川崎・岩野・北村 でした。
Q1: AWS AppSync でチャットアプリを作る時、多くの相手とのメッセージを一覧表示するような画面で、どのように Subscription を設計すればよいか?メッセージの相手ごとに Subscription してしまうと、WebSocket の接続が無駄に多くなってしまうのではないか?
AWS AppSync は Subscription ごとにコネクションを張るわけではなく、ある程度の数の Subscription を一本のコネクションでまとめて効率的に処理します。まずは公式にサポートされた AppSync クライアントライブラリを使い、シンプルにメッセージの相手ごとに Subscription してみてください。
Q2: AWS AppSync で、接続元の IP アドレスを制限したい場合どのような方法があるか?
以下のような方法が考えられます。
- AppSync API エンドポイントの認可方式を AWS_IAM にして、 IAM の
Condition
を使ってaws:SourceIp
を指定する。 - リゾルバーのマッピングテンプレート内で、
$context
変数内のSourceIp
を参照してアクセス可否を判定するロジックを実装する。
Q3: AWS AppSync で List 型のデータを扱うにはどうすればよいか?
AppSync でのスカラー型のうち、AWSJSON を使ってリストを表現していただくようご案内しました。
Q4: Amazon Pinpoint で Email を送る時、宛先の氏名を本文中に差し込みできるか?
はい、メッセージ変数機能を用いることで、各 Endpoint の属性値を本文や件名等から参照することが可能です。例えば、
こんにちは {{Attributes.twitterAccount}} さん
というテキストは
こんにちは @akitsukada さん
に展開されて送られるイメージです。
Q5: Amazon Cognito の使い方を教えてほしい → SPA とは → AWS Amplify とは?
最初は Cognito をどう使えば良いかという相談でしたが、最終的にやりたいことをお聞きすると
- 「新規にモダンなアーキテクチャでアプリケーションを作りたい」
- 「フロントエンドとバックエンドの開発を分離したい」
ということでした。それを受けてまず SPA – Single Page Application の概要についてご説明し、SPA の実現方法として AWS Amplify をご紹介しました。フロントエンドは Vue.js をお使いになる予定とのことだったので、Vue 利用時の Amplify チュートリアルをお試しいただけるとのことでした。
また、冒頭でご紹介した「怠惰なプログラマ向け AWS Amplify & AWS Chalice ハンズオン」も、 Amplify コースでは Vue を使います。みなさんもぜひご参加ください。
Q6: AWS Lambda のロジック上で RDB 等にアクセスするための認証情報を扱うためにどうすればよいか?
AWS Secrets Manager で秘匿情報を管理し、 Lambda ファンクションから取得して使う方法をご案内しました。
Q7: システム連携先のエンタープライズ企業から、Amazon S3 上に保存したログが消されないことをどう担保してくれるのか、といった質問を受けている?
S3 のオブジェクトロック機能を使って、オブジェクトが固定期間または無期限に削除または上書きされることを防止する方法をご案内しました。
Q8: Web サイトを HTTPS 化するにはどうすればよいか?
Amazon CloudFront を Web サーバーの前段に配置し、Amazon Certificate Manager で証明書を発行して CloudFront にセットしていただく方法をご案内しました。
Q9: キャリアの網が届かない地域の画像情報を収集したい。AWS Ground Station を使えば人工衛星から写真が取れるのか?
AWS Ground Station はダウンリンクされたデータを AWS に連携するための地上サテライトの機能を提供するものになります。衛星はご自身でのご用意をお願いいたします。
Q10: データレイクの作り方を教えてほしい。
ログ、データを一元的に Amazon S3 に収集する方法について議論しました。また、安全なデータレイクをすばやく構築する AWS Lake Formation をご紹介しました。
また、冒頭でご紹介した 10/18 (金) 13-17時の Ask An Expert – AWS Service Team Day では AWS Lake Formation のチームメンバーも参加予定です。ぜひ AWS Loft Tokyo にお越しください。
週刊 Ask An Expert まとめ、今回はここまで
最後までお読み頂きありがとうございます。冒頭に書いたように、執筆者の独断により興味深かった質問を選び、かつざっくり要約して記載しています。実際にはより具体的な質問をより多く頂いていますが、様々なご相談があることが伝わっていれば幸いです。まだ Ask An Expert カウンターをご利用になったことがない方も、AWS Loft Tokyo をご利用の際はぜひお気軽にご質問ください。
※Ask An Expert が混雑してお待ちいただく場合、またはエキスパートが不在の場合がございます。何卒ご容赦ください。
このブログの著者
塚田 朗弘(Akihiro Tsukada)
スタートアップソリューションアーキテクト。好きなサービスは Amazon Pinpoint, AWS Amplify。