AWS Startup ブログ

【週刊 Ask An Expert #18】Google Form で追加されたデータを可視化したい! 先週の #AWSLoft で受けた質問 10 選

スタートアップソリューションアーキテクトの中武 (Twitter: @zabbiozabbio) です。

最初にオススメイベントの紹介をさせてください。
8/27 に、機械学習ワークロードを運用しているデベロッパー/データサイエンティストのための、お悩み相談会 ML@Loft#5 が開催されます!↓

毎月開催されています!最新事例など盛りだくさん。

気になる方は、ぜひ ↑ から申し込んでください!

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

Ask An Expert ?

皆さん AWS Loft Tokyo はご存知でしょうか?

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

ある日の Ask An Expert – SAの松田

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

週刊 Ask An Expert #18 (2019/08/12 – 08/16)

この週の対応者は SA: 原・荒木・松田・清水と CSE: 古野 ・嶋本でした。

Q1: Amazon ECSService のオートスケーリングを設定した。設定が正しいかどうかを確認してほしい。

確認した所、Amazon CloudWatch で参照するメトリクスが、クラスターレベルの CPU 使用率となっておりました。
Service のオートスケーリングを行う場合、サービスに対する負荷が高くなった場合にスケールするため、クラスターレベルではなく、サービスレベルのメトリクスを設定する方が適切であると思われる点をお伝えしました。

Q2: AWS Fargate だと Amazon Elastic File System (EFS) マウントが出来ない?

出来ません。そのため、ファイルは Amazon S3、データは Amazon RDS などへ保管するなど検討頂ければと思います。
なお、Fargate でなく EC2 Launch type であれば EFS のマウントが可能です。

Q3: ECS の Fargate Launch type と EC2 Lanuch type の違いが分からない。

起動タイプによりタスクとサービスがホストされるインフラストラクチャのタイプが決まります。
詳細はこちらをご確認ください。

また、最近執筆された次の記事も参考になるかと思います。ぜひご覧ください。

Q4: Amazon CloudFront -> Amazon EC2 でサイトを運用している。日本人向けのコンテンツだが US からのアクセスが多い。UserAgent の統計を見ると US からのアクセスは Bot が多いようなので、対策したい。

CloudFront の理制限機能を利用する方法があるとお伝えしました。
また、もし UserAgent に応じてアクセス許可・拒否(Botなど)を行いたい場合は、AWS WAF をご検討頂ければと思います。

Q5: AWS AmplifyiOS SDK を使って S3 にアップロード/ダウンロードを行うアプリを開発したいが、どうすればいいか。

こちらの Amplify の Storage 機能に関するドキュメントが参考になると思います。
また、JavaScript になりますが、こちらのサンプルも参考になると思いますのでご確認ください。

Q6: B2B の CRM を提供している。プッシュ通知の機能をいれたいが、どういうサービスを利用するとよいか。

プッシュ通知の用途には Amazon SNSAmazon Pinpoint が使えますが、Pinpoint であれば開封率や配信数などの各種トラッキングができたり、配信速度の調整したりもできます。継続的なプロダクトの改善、自由度の高い通知を行うのであれば Pinpoint がオススメです。

Q7: Google Form にデータが追加されたら AWS Lambda が起動されるようにして、 Amazon DynamoDB にデータを入れている。
このデータを可視化したい場合、どのような方法が考えられそうか。今は Amazon Elasticsearch Service にデータを流し、 Kibana で見ている。

AWS が提供しているサービスで言えば、BI サービス Amazon QuickSight を使用する方法があります。
2019年8月23日現在、DynamoDB を直接 QuickSight のデータソースとして指定することはできませんが、DynamoDB Streams を利用して S3 にデータを連携することで、Amazon Athena や S3 をデータソースとして QuickSight を利用することができます。

参考:Amazon Athena を使用して高度な分析を行い、Amazon DynamoDB データの視覚化を行う

Q8. 前提として、以下のサービスを運用している。
・React で作られた SPA(Single Page Application) を S3 にデプロイして CloudFront を通じて配信
・SPA からアクセスする REST API は Amazon API Gateway を利用
・API Gateway のバックエンドには Lambda があり、Lambda から Redash の API を叩いて得たデータを JSON として返す
・B2B なサービス
このサービスにおいて、Redash のヘルスチェックを CloudWatch Events でスケジューリングした Lambda で実施しているが、Redash がダウンしていることを検知したら CloudFront のオリジンを書き換えてエラー画面を返すようにしたい。無意味な API リクエストを Amazon API Gateway 側に送らないようにしたいため。

オリジンの書き換えを CloudFront Distribution のアップデートで行うと反映までに少々時間を要するため、それ以外の方法として大きく以下の3つの方式を提案しました。

  1. Lambda@Edge を使ってオリジンを書き換え、エラー時は別のバケットやパスから静的なエラーページを返すようにする。エラーかどうかのステートは Health Check Lambda から DynamoDB などにあらかじめ記録しておく。
  2. S3 の Redirection Rule を使い、返す HTML を静的エラーページにしてしまう。この Redirection Rule の書き換えは Health Check を担当する Lambda が行う。
  3. API Gateway の後ろの Lambda で、Redash ダウン中は Early return することで Redash までアクセスしてしまうことを防ぐ。Redash がダウンしているかどうかのステータスは、 Lambdaの環境変数 / Parameter Store / DynamoDB などが使える。Early return の処理は AWS Lambda Layers などを利用して共通化することで、複数の Lambda 関数で同一の挙動を実装側で担保することができる。

お客様としては、まずは実装が簡便そうな 2 番を検討してみる、とのことでした。

Q9: Application Load Balancer (ALB) の振り分け対象に EC2 インスタンスを登録したいが、方法がわからない。ターゲットグループの編集画面で「対象インスタンス」のチェックボックスを選択して保存しているが、追加されない。

マネジメントコンソールを開いてもらい、具体的な作業を実施頂きました。その結果、見落としていた作業として、インスタンスを選択した後に、「登録済みに追加」のボタンをクリックすることが漏れていました。
また、あわせて、パスベースのルーティングの設定方法についてもご案内しました。

Q10: aws-guide.memo.wiki を参考に、 AWS で GPU インスタンスを使って囲碁プログラムを動かそうとしているが、AWS の用語が何も分からないので教えて欲しい。

同ページにて都度登場する AWS 用語の意味などをご説明しつつ、上から順に一緒に読み進めました。主に以下の用語、トピックをご説明しました。

  • インスタンス
  • セキュリティグループ
  • IP アドレス
  • ポート番号
  • キーペア
  • スポットインスタンス
  • EC2 の代表的な支払いオプションの紹介(オンデマンド、リザーブド、スポット)
  • AMI
  • インスタンスタイプ
  • インスタンスを止めても EBS に課金が発生する話
  • PuTTY, SSH, pem
  • Lizzie というソフトウェアの設定方法を一緒に確認

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

最後までお読み頂きありがとうございます。

冒頭に書いたように、執筆者の独断により興味深かった質問 10 個を選び、且つざっくりとまとめて記載しているため、実際にはより具体的な質問をより多く頂いていますが、様々なご相談があることが伝わっていれば嬉しいです。まだ Ask An Expert カウンターをご利用になったことがない方も、AWS Loft Tokyo をご利用の際はぜひお気軽にご質問くださいね。

※Ask An Expert が混雑してお待ちいただく場合、またはエキスパートが不在の場合がございます。何卒ご容赦ください。

それではまた次回をお楽しみに!

このブログの著者

中武 優樹(Yuki Nakatake)
Blockchain、Database、Zabbix が好きなスタートアップ ソリューションアーキテクトです。