AWS Startup ブログ

【週刊 Ask An Expert #26】独自認証を実装したい!?それ実は Amazon Cognito で出来ますよ! 先週の #AWSLoft で受けた質問10選

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

先週は CTO Night & Day 2019 Fallの開催にあたり京都に行っておりました。資料やイベントレポートは後ほどご案内出来るかと思いますので、楽しみにして頂ければと思います。

10/18 (金) の 13:00-18:00 に Ask An Expert カウンター付近(ソファ席あたりの予定)にて、Database / Analytics 系サービス開発チームの日本人メンバーに直接質問できる初の試み、 Ask An Expert – Service Team Day – を予定しています。

AWS のサービス開発チームに気軽に日本語で質問できる機会なので、ぜひお気軽にお越しください!

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

Ask An Expert ?

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

ある日の Ask An Expert – CSE の古野、SA の内山

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

週刊 Ask An Expert #26 (2019/10/07 – 10/11)

この週の対応者は SA: 中田・菅野・久次米・大村・兼松・石本・桐谷・横山・范(ファン)・市川・増田・木村・内田・橋本・鮫島、 CSE: 嶋本 でした。

Q1: 本番環境と開発環境とで AWS アカウントを分けてコーポレートサイトを運用している。本番用の AWS アカウントでドメインを取得したが、開発用の AWS アカウントで DNS の運用をすることは可能か。

Amazon Route 53 でのドメインの取得Hosted Zone の運用 は分けて考えることが出来るため、本番用の AWS アカウントで取得したドメインの DNS を、開発用の AWS アカウントで運用することも可能です。この場合、開発用の AWS アカウントで作成した Hosted Zone の Name servers (NS レコード) を、本番用の AWS アカウントのドメインの設定で指定する必要があります。(また、dev.example.com のような開発用のドメインのみ開発用 AWS アカウント側の Hosted Zone で管理することも設定次第で可能です。)

“Add or edit name servers” から変更することが可能です

 

Q2: Amazon Connect で会話内容を文字として記録し、その内容を管理画面に反映させたい。

オペレーターの管理画面ではログイン時に、WebSocket のコネクションを確立します。(WebSocket の API は Amazon API GatewayAWS LambdaAmazon DynamoDB のように構成すると比較的簡単に構築することが出来ます。)
電話が来たら、Amazon Connect から Operator ID の取得や文字起こしを行い、その情報を Amazon SQS に入れる。Amazon SQS から AWS Lambda をキックし、WebSocket を使って、管理画面に情報をプッシュする。
の様なシステムアーキテクチャを一緒にディスカッションしました。(上記の内容は一例です。)

 

Q3: 記事の全文検索システムを構築しようとしているが、 Amazon Elasticsearch Service の最小構成について教えてほしい。初めは出来るだけ小さい構成で開始したいが、どのような構成が選択できるのか教えて欲しい。

可用性の要件次第ではありますが、本番用途であれば3台のマスターノードを推奨しています。(これはスプリットブレインを避けるための構成です。)それより少ない数で運用するのであれば、アベイラビリティーゾーン障害時に発生するリスクを理解しておいたほうがいいでしょう。データノードはデータ量や要求されるパフォーマンスから算出することになりますが、可用性の観点から複数台用意しレプリカを1以上にしておいたほうがいいでしょう。

スモールスタートで開始し、規模が大きくなった時にアーキテクチャを見直せるのであれば、1台構成から始める選択肢もありますが、障害対応で必要となる人的リソースを考慮すると複数ノードの方がリーズナブルということもあり得ます。

 

Q4: Amazon API Gateway にアクセス時に CORS エラーになる。

Lambda プロキシ統合 利用時は、Lambda から Access-Control-Allow-Origin ヘッダーを返す必要があります。

 

Q5: ELB と AWS Certificate Manager (ACM) を紐付けたが、うまく SSL 通信出来ていない。

証明書が www.example.com の形式で発行されていましたが、ネイキッドドメインでアクセスしたいとのことでしたので、証明書の再発行をご案内しました。

 

Q6: AWS CodeStarAWS Lambda (node.js) のデプロイ時にエラーが出る。

AWS CloudFormation を確認したところ、AWS Lambda のデプロイ時にデプロイパッケージの 250MB 超えのエラーが出ていました。まずは、node_modules ディレクトリに大量のパッケージが追加されていないか、package.json に不必要なパッケージが入ったままになっていないか確認をお願いしました。

AWS Lambda の制限」も合わせてご覧頂くとよろしいかと思います。

 

Q7: Cost Explorer へのアクセス権限設定について教えてほしい。

請求の情報およびツールへのアクセス許可」を参考にご説明しました。

 

Q8: モバイルアプリのバックエンドで Amazon API Gateway, AWS Lambda, Amazon DynamoDB, Amazon Cognito を使っているが、① Amazon DynamoDB を MySQL に変更したい(機能追加のため)② Amazon Cognito を独自認証に変えたい。

①お話を伺ったところ、データのスキーマ固定が難しそうなため DynamoDB で一旦受け、必要に応じて DynamoDB Streams で RDBMS や ElasticSearch に流す方法を提案しました。

②Cognito から Lambda をフックし、独自認証に登録、トークン発行する「カスタム認証フロー」についてご案内しました。

 

Q9: しばらくアカウントを使わない予定なのですが、一度解約すると同じEメールメールアドレスは使えなくなりますか?

アマゾン ウェブ サービスのアカウントを解約する方法を教えてください。」にも記載がありますが、アカウントが解約された時点でそのアカウントに関連付けられていた E メールアドレスを使用して新しい AWS アカウントを作成することはできません

 

Q10: IoT で収集したデータをどこに貯めるか悩んでいる。Amazon DynamoDB を考えているが、アプリケーションもまだあまり決まっておらず、テーブル設計等どうすればいいのか。。

RAW データはまず Amazon S3 にあげて、Amazon AthenaAmazon QuickSight を使うところからはじめてはどうかとご案内しました。S3 にデータをストアする際は、 Amazon Kinesis Data Firehose を利用することでストリーミングデータを容易に S3 等に保存することが出来ます。

将来的に、アプリケーションの性質によって利用するデータストアが変更になる可能性はあるかと思いますが、遡ってデータを集めることは出来ないため、まずは高い可用性でデータをストアすることに注力して頂くのがよろしいかと思います。

 

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

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

このブログの著者

Kazuki matsuda松田 和樹 (Kazuki Matsuda) @mats16k

コンテナやビッグデータが得意分野なスタートアップソリューションアーキテクト。好きなサービスは AWS FargateAWS Chalice 。最近は AWS Amplify が好きです。

最近のヒット作は「スタートアップのためのコンテナ入門 – 導入編 & Fargate 編」です。