AWS Startup ブログ

【週刊 Ask An Expert #53】Amazon ECS 上のコンテナに入りたい?入れます!先週の #AWSLoft で受けた質問をざっくり紹介!

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

来る 5/11, 5/12、AWS Summit Tokyo Online が控えているわけですが、みなさんもう参加登録はされましたか? まだの方はぜひこちらを見てみてくださいね。

どんなおすすめセッションがあるか知りたい!という方は、ぜひ Twitter で #AWSSummit #AWSStartup (?今すぐクリック)のハッシュタグを見てみてください。今年の AWS Summit におけるセッションの情報やおすすめポイントに関するツイートが見られると思います。無料で最新のスタートアップ事例や知見が学べる AWS Summit、参加して自社のビジネスに活かしていただきたい想いでいっぱいです!ぜひよろしくお願いいたします。

週刊 Ask An Expert #53 (2021/03/29〜2021/04/02)

さて、それでは本題にもどって、今日も先週いただいた質問から、執筆者の独断と偏見によりいくつかの質問をピックアップしてざっくり解説していきたいと思います。あなたも Let’s Online Ask An Expert!
※ Online Ask An Expert のご利用登録・予約は AWS Loft App から!

Q. Amazon ECS on AWS Fargate で稼働中のコンテナに Session Manager でログインしたいが上手くいかない。

コンテナに AWS Systems Manager (SSM) Agent 等を仕込むのでなく、2021/03/15 に発表された Amazon ECS Exec を利用する方向性でご案内しました。Amazon ECS Exec は、Amazon ECS で実行中のコンテナへのインタラクティブなシェルログインまたはコマンド実行を提供します。Container Agent バージョン 1.50.2 および Fargate Platform バージョン 1.4.0 以降の ECS であれば、API、AWS CLIAWS SDKAWS Copilot CLI から利用可能です。

Q. AWS IoT を使った IoT / Web サービスの構成について相談したい。できるだけライトに開発したく AWS AmplifyAmazon Cognito を検討しているのだが、最適な構成を確認したい。

要件を確認すると、センサーデバイスと Web アプリがあり、センサーデバイスからは随時センサーデータを収集する。Web アプリは Amplify を使って認証機能をつけ、データの可視化、一括ダウンロード機能などを提供したいとのことでした。

構成を議論し、以下のような方向性でのご案内になりました。

センサー側からは AWS IoT Core にセンサーデータを送り、 AWS Lambda を通じて Amazon DynamoDB にデータを蓄積。アプリ側では Amplify で認証し、各種機能を React で実装。

議論した結果のアーキテクチャ

Amplify CLI の auth, model, function 等のディレクティブ周りで上記要素をプロビジョンし、実装を行う方法について案内しつつ、ハンズオンコンテンツをお探しだったので Amplify SNS Workshop をお渡ししました。

Q. 日本、フランス、イギリス、ベトナム、インドネシア、アメリカのユーザーに提供する Web サービスを設計中。レイテンシを抑えることを考えてマルチリージョンに Web サーバーを配置することを考えている。

今回の要件を詳しくお聞きすると明確なレイテンシ要件や制約があるわけではない模様でした。当初イメージされていた構成を図にするとこちらです。

お客様が考えられていた構成については、いくつか懸念点が挙がりました。

  • Web サーバーだけ各リージョンに用意しても、リージョンをまたいだデータベースアクセスがレイテンシのクリティカルパスとなるのではないか
  • 同じ構成の Web サーバー群を複数リージョンに用意するのは、運用工数の増大と構成の複雑化・事故につながらないか
  • Web サーバー群を複数置くのに DNS ラウンドロビンを想定されていたが、ELB を使ったほうがよい
  • etc

それらの議論を踏まえ、まずは以下のような方針で検討してみるとのことでした。

お話したポイントは、

  • 各地域のユーザーは Amazon CloudFront のエッジロケーションを通じてアクセスすることで
    • キャッシュ可能なコンテンツについてはリージョンをまたぐ必要なく高速になレスポンスを返すことが可能
    • それ以外のコンテンツについても、ユーザーと Edge、Edge と Origin の間の通信の最適化による高速化が可能
  • CloudFront や Application Load Balancer を通すことで AWS WAF の利用や DDoS 対策が可能
  • 各リージョンに EC2 インスタンス群を重複して配置するのではなく一箇所に集約することで構成管理を単純化
  • Application Load Balancer の利用によって複数の EC2 インスタンスへのロードバランシングを自動化
  • etc

でした。

参考に AWS Solutionsマルチリージョンアプリケーションアーキテクチャや、Amazon Aurora の Global DatabaseAmazon DynamoDB の Global Tables をご紹介しつつも、まずはシンプルな方法から検討しビジネス要件に合うかどうかを検討してみていただくようお勧めしました。

それで満たせない要件が出てきた場合は、改めてマルチリージョンにコンポーネントを置いてみることを検討する方針を提案し、ご納得いただきました。

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

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

冒頭に書いたように、執筆者の独断により興味深かった質問を選び、かつざっくり要約して記載しています。実際にはより具体的な質問をより多く頂いていますが、様々なご相談があることが伝わっていれば幸いです。まだ Online Ask An Expert をご利用になったことがない方も、ぜひ一度お気軽にご利用ください。

※ Online Ask An Expert のご利用方法、簡単 4 ステップはこちらからご確認いただけます。

https://www.youtube.com/watch?v=9ffZcQ9y-fI

 

A author image of Aki Tsukadaこのブログの著者

塚田 朗弘(Aki Tsukada
Head of Startup Solutions Architect, Japan.
AWS AmplifyAWS Chalice が好き。

Twitter: @akitsukada