AWS Startup ブログ

【週刊 Ask An Expert #20】祝・Amazon CloudWatch Container Insights 一般公開!先週の #AWSLoft で受けた質問10選

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

皆さん、AWS Dev Day Tokyo 2019 は参加登録しましたか?満席のセッションも出始めていますので、Dev な方は早めに申し込んで Dev Dev しましょう!私も AWS Amplify のセッションなどでお話します。

参加登録はこちらから。Keynote には Ruby のまつもと ゆきひろさんや株式会社ソニックガーデンの倉貫 義人さんをお迎えしますよ!

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

Ask An Expert ?

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

ある日の Ask An Expert カウンター(で談笑中の3人) – 左から Container Specialist SA 原、Aurora, MySQL and MariaDB 開発チーム Database Architect 星野、Database Specialist SA 成田

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


 

週刊 Ask An Expert #20 (2019/08/26 – 08/30)

この週の対応者は SA: 針原・松田でした。

Q1: Amazon ECS で、既存のクラスタに対して Amazon CloudWatch Container Insights を有効化したい。

ご相談を受けた時点では、 Container Insights はプレビュー機能であり新規クラスタの作成時にのみ設定可能だったのでそのようにご案内しました。

が、その後 8/30 に一般公開されたため既存のクラスタにも設定できるようになっています!ぜひお試しください。
既存のクラスタに対して設定するには、AWS CLI であれば以下のコマンドを実行します。

aws ecs update-cluster-settings --cluster myCICluster --settings name=containerInsights,value=enabled

詳しくはドキュメントをご確認ください!

Q2: サーバーレスなシステムの監視はどのように考えればよい?

基本的には Amazon CloudWatch でメトリクスとログを取得し、必要なアラートなどを設定、検知・対応できるようにしてください。
つい最近、サーバーレスのモニタリングに関する AWS Black Belt Online Seminar 資料が公開されたので、こちらもぜひご覧ください。

Q3: 複数の AWS Lambda 関数で利用する共通ライブラリはどのように管理すればよいか。

Lambda Layers や npm などのライブラリとして切り出すことが有用と思われます。

ただ、状況によっては切り分けたことによりメンテナンスコストが増えることもあるため、少人数で開発されている場合はそれぞれの関数に実装するなど柔軟に考えていただくようご案内しました。
例として、ログやエラーをハンドリングするようなユニバーサルなものは切り出して使いやすいことなどを併せてお話いたしました。

Q4: 毎日一度、全クライアントデバイスに対して通知を送りたい。AWS AppSync を使い subscriptionmutation で実装している。AWS Lambda でループ処理を書いてクライアントデバイスごとに mutation を発行しているが、時間がかかったり途中で発生したエラーの処理が難しかったりで辛い。

お話を伺ったところ AppSync でなく Amazon Pinpoint による通知処理がマッチしそうであったため、将来的には Pinpoint の導入をご検討いただくようご案内しました。
現状 AppSync を使っている上での改善ポイントとしては、ループやステートの管理効率を上げるため AWS Step Functions を使ったり、処理速度を上げるために mutation を発行する Lambda 関数を複数に分割し並列処理させたりする方法を提案しました。

Q5: AWS Lambda は Amazon SQS と統合できるが、そもそも Lambda を直接呼び出せば済むのではないか。SQS を挟む必要があるのはどういうケースか?

Lambda に限る話ではなく、一般的なメッセージキューイングの考え方になります。例えば、

  • SQS にメッセージを入れるフロント側と、メッセージを処理する側を疎結合にする。フロント側から見れば処理は非同期化され後続の処理に影響されることがなくなり、パフォーマンス向上や処理の単純化が望めます。
  • キューで一旦メッセージを受け取ることで、その後の処理速度などをコントロールする。例えば後続の API や DB へのアクセス頻度を制御したい場合などに有効。

などなどのメリットが考えられます。

Q6: Amazon DynamoDB のテーブルはどう設計すればよい?

DynamoDB 設計のベストプラクティスに関するドキュメントと、以下の資料をベースにご案内しました。

Q7: AWS Personal Health Dashboard のイベント通知を受けるにはどうすればよいか。AWS アカウントの登録メールアドレスに通知が送られる?

Amazon CloudWatch Events との連携を設定することで、イベントをモニタリングできます。

Q8: SSH に用いる踏み台サーバーやその中の Linux ユーザー、鍵の管理が煩わしい。

AWS Systems ManagerSession Manager 機能を使うことで、踏み台サーバーを経由することなくセキュアにインタラクティブなシェル操作が可能になります。ユーザーと権限の管理は AWS IAM に一元化でき、ログインや操作の履歴AWS CloudTrailAmazon CloudWatch Logs に記録できます。対象インスタンスに対する 22 番ポートを空ける必要もありません。踏み台サーバーは無くしてしまいましょう。

Q9: Amazon Aurora Serverless の Data API ってなに?

現時点では MySQL 5.6 互換の Aurora サーバーレス DB クラスターで利用可能な、HTTPS 上で SQL を発行し結果を取得できる API です。トランザクションも扱えますよ。

Q10: クライアント VPN を設定したいが、上手く接続できない。

よくお話を伺うと、VPC 内の Amazon EC2 インスタンスからインターネットに出ていくことが出来ていないようでした。一緒に設定を確認させていただいた限りでは、Private, Public Subnet の設定などは問題ないように思われました。まずはどこからどこまでは通信できているのかなど切り分けながら確認して頂くようご案内しました。


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

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

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

このブログの著者

塚田 朗弘(Akihiro Tsukada)
スタートアップソリューションアーキテクト。好きなサービスは AWS AmplifyAWS AppSyncAmazon PinpointChalice だけど、一番好きなのは Pinpoint。趣味は頭を触ってくる子供と遊ぶこと。