AWS Startup ブログ

【週刊 Ask An Expert #44】Lambda ファンクションからの通信が Timed out?先週の #AWSLoft で受けた質問をざっくり紹介!

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

AWS Loft Tokyo の休館に伴って休載していた週刊 Ask An Expert ですが、実に11ヶ月ぶりに再開したいと思います!これからはまた定期的にみなさんに情報をお届けできそうです。お付き合いください。
なお前回は2020年3月の掲載でした

Online Ask An Expert とは?

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

目黒セントラルスクエア17Fにある、AWS を利用中のスタートアップとデベロッパーのためのコワーキングおよびイベントスペースです。その一角に AWS のエキスパート – Solutions Architect (SA) や Cloud Support Engineer (CSE)、ときにはサービス開発チーム – といった AWS の中の人に気軽に技術的な質問ができる、Ask An Expert カウンターがあります。

…が、前述のとおり現在残念ながら新型コロナウィルス対策のため、AWS Loft は2020年3月から一時的に休館中です。それにともなって当然ながら Ask An Expert も休止しており、それまでは毎週更新していたこの週刊 Ask An Expert シリーズも休載していました。

しかしそんな中、Ask An Expert は 2020 年 12 月から Online Ask An Expert に姿を変えて、新しくリモートでの対応を開始しました!


AWS Loft Tokyo – Ask an Expert コーナーがオンラインで復活! | Amazon Web Services ブログ

Online Ask An Expert の詳しい利用方法などは ↑ のブログ記事をぜひご参照ください。AWS をご利用中のスタートアップあるいはデベロッパーの方であれば、AWS Loft App から事前登録をしていただくことで、リモート会議ツールである Amazon Chime を利用した Online Ask An Expert をご利用になれます。

さて、それに伴って今日から復活したこの連載では、先週の Online Ask An Expert でいただいた多くの相談からいくつかの相談をピックアップし、ざっくり紹介していきたいと思います。Let’s ask an expert!

週刊 Ask An Expert #44 (2021/01/25 – 01/29)

この週の対応者は SA: 松原、松崎、三上、保里、秋田、木村(秀)、加治、岩野、笹木、石橋、酒井、岩井、村田、増田、太田、野村、内田、木村(友) でした(順不同)。

Q1: Amazon VPC を有効にした AWS Lambda 関数から、AWS Secrets Manager にアクセスしようとすると Network Timed Out が発生する。

Amazon Chime 上で画面共有し、ホワイトボーディングをしながらお話を伺いました。

Lambda ファンクションから Secrets Manager に疎通するためには 1) ネットワークの疎通性、 2) AWS IAM 権限 の2つが必要ですが、状況的にまず 1) の問題を解決する必要があると思われたため、VPC のルートテーブルネットワークACLセキュリティグループについての確認ポイントをお伝えしました。

問題判別手段として、有料であることをお伝えした上で、VPC Reachability Analyzer を用いた疎通性確認手法を実際にデモしながらご紹介し、 Lambda ファンクションが生やしたElasitc Network Interface(ENI) を特定する方法なども含めてご覧頂きました。

VPC Reachability Analyzer についてはこちら
新機能 – VPC Reachability Analyzer | Amazon Web Services ブログ

最後に、ホワイトボードに書いていた図を png 画像にして Amazon Chime 上で共有させていただきました。

Q2: オンプレミスで全国の店舗から送られてくるデータを集計するシステムがあるが、システム全般を把握している人がいない。サーバーリソースも最適化できておらずコストがかさんでいる。検証環境もない。新規開発には AWS を使っているので、オンプレのリソースもすべて AWS に載せ替えたいがどこから着手すべきか。オンプレミス社内システムを AWS へ移行する為の手法や必要な情報を知りたい。

AWSの移行方法についてのページを一緒に見ながら、ステップと考え方についてご説明しました。
併せて、 デベロッパー向け Web マガジンである builders.flash の記事、「クラウド移行の成功に必要なステップをグラレコで解説」で解説されている以下のステップを同様に紹介しました。

  1. 評価:ワークショップを開催
  2. 準備 & 計画 : 7 つの R から選択
  3. 移行 : 移行ツールで安全かつ簡単に移行
  4. 運用 & 最適化

全体概要の図

(詳細はぜひ builders.flash をご覧ください)

また、MySQL データベースを Amazon Aurora に移行する際の方法についてもご相談いただきました。
ドキュメントを一緒に見ながら、mysqldump を利用する方法、Percona XtraBackup を利用する方法の手順を解説しました。
また、AWS Database Migration Service (DMS) についてもご紹介しました。

最後に AWS Loft Tokyo および Ask An Expert について丁寧に感謝のお言葉をいただきました。こちらこそ誠にありがとうございます…!

Q3: ELB(ALB)Amazon EC2Amazon RDS の構成で、本番環境、ステージング環境、テスト環境はアカウントごと分けている。自動デプロイ、自動テストはどのようにするとよいか。

現状を詳しくお伺いすると、

  • EC2 は 2台、アプリケーションは PHP で開発
  • ソースコードは GitHub で管理
  • セッション情報は各サーバーのメモリにストアしている
    • ALB は Sticky session を有効にしている
  • デプロイ方法は EC2 に SSH で接続して git clone で最新のソースコードを取得 -> composer install コマンド実行
    • SSH 接続のための踏み台サーバー等はなく、EC2 が Public Subnet に配置されている状態
  • データベースのスキーマ更新がある場合、どちらかの EC2 サーバー上でシェルスクリプトを実行し DDL を実行している
  • 事故発生時のリスクを小さくするため夜間にデプロイしているが、できれば日中にデプロイしたい

とのことでした。

セッション情報がサーバーに腹持ちされているため、Auto Scaling や Blue/Green Deployment の適用は難しく、まずは AWS CodeDeploy を使って In-place でデプロイする方向性で考えました。

最終的に、AWS CodePipeline を使って GitHub リポジトリの更新をフックして AWS CodeBuild でユニットテスト等を実行。データベースの更新については CodeBuild のフェーズ内にコマンドを記述する方法、CodePipeline で AWS Lambda を呼び出してデータベースにアクセスする方法、CodeDeploy のライフサイクルフックBeforeAllowTraffic 等)を利用して実行する方法などをご紹介しました。

また、 SSH は極力利用せずに済むよう、また EC2 を Public Subnet に置かずに済むよう、インタラクティブなシェルアクセスが必要になったときは AWS Systems Manager Session Manager を利用いただくようおすすめしました。

Q4: Amazon SNS でモバイル Push 通知を送っているが、iOS Push 通知証明書の更新を自動化する方法はないか。

Amazon SNS だと p12 ファイルの手動更新が必要ですが、Amazon Pinpoint では p8 ファイルによる認証キーを利用でき、更新作業が不要になります。

Push 通知の利用方法を詳しくお聞きしたところ、

  1. 個別のエンドユーザー向けのイベントが発生したとき個別に Push 通知を送っている。
  2. 一斉に通知をしたい場合、エンドユーザー全体または特定の集団に向けて Push 通知を送っている。(Amazon SNS の Publish API をエンドユーザーの数だけ叩く)

とのことだったため、 1. は Pinpoint の Messages API を使って、2. は Pinpoint のキャンペーン機能を使って実現できること、またキャンペーン機能を使えばユーザーセグメントの抽出や大量の送信処理を Pinpoint に任せられることをご説明しました。

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

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

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

 

このブログの著者

A author image of Aki Tsukada塚田 朗弘(Aki Tsukada)

Head of Startup Solutions Architect, Japan.
AWS Amplify が好き。

Twitter: @akitsukada