AWS Startup ブログ

【週刊 Ask An Expert #01】AWS Loft Tokyo で受けた質問まとめ #AWSLoft

皆さんいかがお過ごしでしょうか、Amazon Web Services Japan の Startup Solutions Architect、塚田です。月日の流れは早いもので、つい先日年が明けたかと思えば、もう桜も盛りを過ぎ、新緑の萌える時期になってしまいましたね。お花見できましたか?

この記事では一緒に Ask An Expert の先週を振り返り、私達 AWS のエンジニアと知見を共有しましょう!

Ask An Expert?

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

SAs @ Ask An Expert

ある日の Startup SAs @ Ask An Expert

今日からこのブログを通じて、我々 AWS のエンジニアが Ask An Expert ではどのような質問を受け、どんな感じで対応しているのか、 *非常にざっくりと* ご紹介していく「週刊 Ask An Expert」をお届けしていきます。みんながどんな質問をしているのか、自分が知らなかった新しいトピックはないか、Ask An Expert ってどんなところなのか、一緒に見ていきましょう!
※ 似たご質問をまとめたり、ざっくりまとめにくいご質問を省いたりしているため、実際のご質問件数、内容とは異なる部分があります。

では記念すべき初回は 2019/04/08〜04/12 分のまとめです。どうぞ!

週刊 Ask An Expert #1 – 2019/04/08〜04/12

Q: コンプライアンス上の観点で、監査ログを取得するにはどうすれば?

開発者などが AWS 上のリソースを操作した証跡であれば、まずは AWS CloudTrail を有効にすることで様々なイベントのログを取得することができます。前提として、開発者・運用者ごとに IAM ユーザを分けるなどして、認証情報を共有しないよう注意してください。
それ以外にも、例えば Amazon Aurora MySQL では監査ログ出力オプションがあるなど、 出力したい内容によって取るべき手段が異なります。

(こんな感じでざっくり紹介していきますね)

Q: Amazon EC2 上に Laradock 環境を構築してみたが DB に繋がらない。

原因切り分けのため、まずはログを出してみましょう。

Q: EC2上でLaradock環境を構築してみたが、composer コマンドがメモリ不足でエラーとなる。

docker stats 等で確認したところたしかにメモリ不足の模様で、他プロセスを殺してメモリを確保すればコマンドも成功しました。インスタンスタイプの変更を検討しましょう。

Q: AWS AppSync で、複数環境を管理する方法は?

AWS Amplify の Multi-Environments を使った実現方法を議論、ご案内しました。

Q: EC2 から Custom Metrics を Cloud Watch に送付してダッシュボードを作っている場合、Auto Scaling で自動的に増減するインスタンスにどう対応すればいいか?ダッシュボードに追加、削除されたインスタンスを動的に増減させたい。

Auto Scaling の ライフサイクルフックを使うことで、スケールアウト・スケールイン時に CloudWatch イベントを発行させることができます。イベントをキャッチして任意の処理を実装するのはどうでしょう。

Q: Ruby on Rails を EC2 上で動かしている。EC2 のメトリクスとしてどれを見ておけばよいか相談したい。

StatusCheckFailed、CPUUtilization、Network In/Out など、各メトリクスについてご説明・議論しました。また、 t2 系インスタンスの場合は CPUCreditBalance も併せて意識しましょう。

Q: Amazon Cognito から送信されるメールのバウンス率を確認したい。

Amazon SES でのバウンス率確認方法についてご案内しました。
参考: Amazon SES 送信のレビュープロセスに関するよくある質問

Q: AWS CloudFormation のテンプレート内で、DB 接続情報などの機密情報を持ちたくない。

AWS Secrets Manager に保管した機密情報を、 CloudFormation テンプレートから参照することができます。

Q: AWS CloudFormation のスタックを更新したとき、Amazon RDS が作り直されることがあるのはなぜか?

更新時の挙動は、リソースと更新内容の種類によって、中断を伴わない更新、一時的な中断を伴う更新、リソースの置換に分かれますスタックポリシーを定義することで、意図せず削除されてしまうのを防ぐこともできます。

Q: Amazon RDS のメンテナンス、Single AZ と Multi AZ、バックアップやスナップショットについて教えて欲しい。

ドキュメントを交えてお話しました。

Q: AWS OpsWorks で、 Amazon ECS クラスタ配下の EC2 のインスタンスタイプを変更すると Container instance type changes are not supported というエラーが発生する。

表示されるエラーメッセージのとおりサポートされていない操作であったため、目的のインスタンスタイプのインスタンスを別途作り、クラスタに参加させることで目的の動作が実現できそうです。

Q: Amazon S3 から Amazon Aurora にデータを LOAD するときに Unable to initialize S3Stream というエラーが出る。

Aurora が配置されたサブネットから S3 間で通信できない状況だったので、ネットワーク設定の見直しをお願いしました。

Q:  Amazon S3 の Static Website Hosting と Amazon CloudFront で Web サイトを構築しているが、CSS を更新しても適用されない。

CloudFront が古い CSS をキャッシュしてしまっていることが原因でした。キャッシュの設計方針やキャッシュの無効化について議論しました。

Q: BtoB な事業において、接続先企業からの要件でこちらの IP アドレスを固定する必要がある。今は一台の EC2 に Elastic IP をアタッチしているが、先日アクセスが増加して EC2 の負荷が上がったときサービスがダウンしてしまった。

一台の EC2 に依存せず、 ELB を使って複数台の EC2 や Docker コンテナなどに負荷分散し、 Auto Scaling を設定するなど検討しましょう。 Network Load Balancer (NLB) を使えば、NLB を配置するサブネットごとに一つの Elastic IP アドレスをアタッチすることができます。
その他、マネジメントコンソール上で構築方法などをご案内しました。

Q: Ruby on Rails から Amazon DynamoDB にアクセスしているが、たまに ProvisionedThroughputExceededException が出る。

DynamoDB の Provisioned Capacity Unit を確認したところとても低く設定されていました。起きている事象、メトリクスの見方、DynamoDB の Capacity Unit の考え方・設計方法についてご案内。また、AWS re:Invent 2018 で発表されたオンデマンドのキャパシティモードについても検討しましょう。読み込み/書き込みキャパシティーモードについてはこちらをご覧ください

参考:

 Q: 各 AWS リソースの可用性などを監視するにはどうすればよいか?Amazon CloudWatch 以外に手段はあるか?

まずは Amazon CloudWatch を見てみて、必要に応じて Alarm を設定するなどしてみてください。機能的に必要なら 3rd party のサービスも検討してみてください。

参考: AWS の運用入門(AWS Summit Tokyo 2018 講演資料)

Q: 既存の SAML プロバイダと連携したいんだけど、Amazon Cognito Federated Identities と Amazon Cognito User Pools 両方を使う必要があるの?

要件をお伺いし、今回は Federated Identities による AWS Credentials の払い出しなどが不要そうだったため、 User Pools の SAML Federation でよさそうでした。

Q: EC2 の Reserved Instance で前払い料金を支払い済みの場合、インスタンスを Terminate したら料金はどうなる?

お支払い済みの料金が戻ったりはしません。
※ 料金・請求関係については、カスタマーサポートにお問い合わせいただけます。

Q: コンバーティブルリザーブドインスタンスを購入済みのとき、インスタンスタイプを変更したらどうなる?

小さなインスタンスタイプに変えた場合は分割され、大きなものに変えた場合はマージされます。

Q: スポットインスタンスの入札価格と実際の価格、どちらが請求される?

実際の価格が請求されます。

Q: Amazon Connect で、IVR での入力に従って外線への転送をしたい。

電話番号への転送」機能をお使いください。

参考:

 

Q: Amazon ECS へのデプロイに時間がかかる。

まずは何に時間がかかっているのか調査してみましょう。例えば

  • UpdateService 時の Min/MaxHealthyHost 数
  • Network Mode
  • Docker image の pull にかかる時間
  • Docker コンテナ自体の開始までの速度

などなど。

Q: 複数 AWS アカウントのアプリケーションログを一つの AWS アカウントに集約したい。

CloudWatch Logs や Amazon Kinesis を使い、クロスアカウントでログをストリームするのはどうでしょう。

Q: Amazon Connect で、電話番号との関連付けに目的の問い合わせフローが出てこない。

タイプに「問い合わせフロー」をご選択いただければ出てきます。

Q: Amazon ECS の Run Task と Service の違い、および Long-Running なサーバーをどちらで動かすべきか?

Task と Service についてご説明し、今回は Service が適していそう、という結論になりました。

Q: Amazon SageMaker でエラーが出る。

エラーメッセージによるとデータのフォーマットが libsvm でないことでエラーとなっている模様。CSV 形式のデータをご利用だったので ContentType でtext/csv の指定を試していただくか、 libsvm データを試していただくことに。

週刊 Ask An Expert まとめ、第一回目はここまで

いかがでしたか?

冒頭に書いたように、似たご質問をまとめたり、ざっくりまとめにくいご質問を省いたりしているためそっくりこのままやり取りが行われているわけではありませんが、様々なご相談をいただいていることをお伝えできれば嬉しいです。実際の Ask An Expert カウンターでは、もちろんより詳細なご案内、議論が行われています。

関連するおすすめイベントのお知らせ

来る 4/25(木)19:00〜、AWS Loft Tokyo にて
「【知見】 月刊 Ask An Expert!AWS Loft でエキスパートが受けた質問まとめ #01」
を開催します!

AAE Monthly Wrapup #01

このブログ記事ではざっくりでしたが、こちらのイベントではもう少し解説を加えながら、且つ会場からのご質問なども受けながら Ask An Expert の知見を共有していきたいと考えています。ぜひこちらから参加登録をしてください!

では、来週もこのブログにて週刊 Ask An Expert #02 をお届けします。ブログでもイベントでも、またお会いしましょう!

このブログの著者

Akihiro Tsukada塚田 朗弘(Akihiro Tsukada)

Serverless, Mobile, Blockchain, FinTech Security あたりをよく触っているスタートアップ ソリューションアーキテクトです。