AWS Startup ブログ

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

皆さんこんにちは。 Startup Solutions Architect の松田です。週刊 Ask An Expert も6回目となりました。毎回幅広い内容をお届けしておりますが、「参考になった!」「いい内容だ!」と思っていただけたら、ぜひハッシュタグ #AWSLoft を付けて拡散して頂ければと思います。もちろん、改善点・要望もお待ちしております。

今回も先週 Ask An Expert に寄せられた質問を振り返り、私達と知見を共有していきましょう! Here we go !!

Ask An Expert?

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

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

ある日の Ask An Expert (Cloud Support Engineer 古野)

この連載では、我々 AWS のエンジニアが Ask An Expert でどのような質問を受け、どんな感じで対応しているのか、 *非常にざっくりと* ご紹介していく「週刊 Ask An Expert」をお届けしていきます。他の AWS Loft 利用者がどんな質問をしているのか、自分が知らなかった新しいトピックはないか、Ask An Expert ってどんなところなのか、一緒に見ていきましょう!

※ 似たご質問をまとめたり、ざっくりまとめにくいご質問を省いたりしているため、実際のご質問件数、内容とは異なる部分があります。

週刊 Ask An Expert #6 – 2019/05/20〜05/24

Q: AWS Elastic Beanstalk でデプロイに失敗し、ロールバックもうまくできない。

デプロイ失敗の原因はログに記載があるので、確認をご案内しました。確認している間にロールバックもうまくいきましたが、ロールバックは即時行われるわけではないのでステータスを確認しながらお待ち頂くのがよろしいかと思います。

Q: Amazon RDS のストレージ不足のアラームが出た。必要になった際に容量を増やせばダウンタイム発生しないか?

RDS では(多くの DB エンジンで)停止や再起動の必要なく容量を増加させることができます。ドキュメント も合わせてご覧ください。

また、Amazon Aurora ではストレージのプロビジョニングが不要で自動的に拡張されます。費用は実際に使用されているデータ量に対してのみ課金となります。

Q: 動画配信を行いたいが、どのサービスを使えば良い?

こちらの資料が参考になるかと思いますのでご案内しました。

AWS Black Belt Online Seminar 2018 動画配信 on AWS

あわせて「AWS でのライブストリーミング」 もご欄頂ければと思います。

Q: Amazon API Gateway で Cognito User Pools グループごとにアクセスできるパスを分けたい。

Cognito Authorizer 利用の場合は、スコープによるアクセス制御が利用できるため、まずはこちらをご検討下さい。(参考: Amazon Cognito ユーザープール をオーソライザーとして使用して REST API へのアクセスを制御する)また、Identity Pool を介することにより IAM の一時認証情報を取得することも出来るため、 機能的に IAM  Authorizer で対応できるかもご確認頂くとよろしいかと思います。

上記での対応が難しい場合は、 Lambda Authorizer の利用をご検討下さい。

Q: internet-facing な NLB 配下の Private な EC2 がクライアントと通信可能なのはなぜか?

NLB 経由で通信しています。IP アドレスをターゲットとして指定している場合は、NAT が必要な制約は無くなりました。

参考: Network Load Balancer now supports load balancing to IP addresses as targets for AWS and on-premises resources

Q: AWS Snowball を使いたいが、どのようにデータを渡せるのか。

ローカルネットワーク経由で行います。ワークステーションに Snowball Client を入れて転送を行って頂くことになります。

Q: WordPress の画像を S3 に置いているが、S3 のドメインを見せたくない。別バケットで独自ドメインでやろうと思っているので移行方法について相談したい。

S3 の静的ウェブサイトホスティング で独自ドメインをご利用頂く場合は、 SSL はご利用いただけません。Amazon CloudFront をご利用頂くと、参照時のドメインを変えつつ、実体の S3 バケットは今までのものがご利用いただけます。

Q: S3 でディレクトリ直下に HTTP アクセスすると、ファイル一覧が表示されてしまうのを何とかしたい。

バケットポリシーを確認したところ GetObject の他に ListObjects も設定されておりました。

バケットポリシーの例 を参考に修正をご案内しました。

Q: ネイティブアプリ同士で直接やりとりをしたい。

要件を伺ったところ、アプリ同士ではなくサーバを介した方がよさそうという事になりました。

HTTP のロングポーリングか、WebSocket がマッチしそうとのことだったので、関連して Amazon API Gateway での WebSocket 利用についてご案内しました。

※ インターフェイスとして GraphQL が適しいている場合は、AWS AppSync をご検討下さい。

Q: データ処理基盤を作るにあたって AWS Glue を検討している。エラー処理やワークフロー管理をどうしたらいいか

ETL ジョブの成功/失敗は CloudWatch Events で補足できるため、Lambda 等でハンドリングすることができます。

ワークフローについては各 ETL ジョブは独立して再実行出来るようにするなど、疎結合にされた方が運用負荷が下がるためおすすめしますが、ビジネス要件的にどうしても必要ということであれば AWS StepFunctions や Luigi のような OSS で Glue の外でスケジューリングすることをご検討下さい。

Q: AWS WAF のマネージドルール を購入し ALB に適用したが、当初アクセスできていたクライアントからも ALB にアクセスが来なくなった。どのようなルールが原因となっているか特定したい。(VPC フローログには記録されているが、ALB のアクセスログには記録されていない。)

基本的には、ALB と WAF のログを確認いただき調査を行います。(今回は時間の都合上解決できず、サポートケースの起票をお願いしました。)

なお、WAF で弾かれている場合も、ALB のアクセスログには記録されます。(記録される場合の内容については こちら をご覧ください)

Q: ビジネスサポートに加入しているかを API から取得したい。

AWS Support API はビジネスサポート、エンタープライズサポートを契約いただいているお客様のみアクセス出来るので、利用時のレスポンスで判別可能です。

Q: IoT デバイスからのデータ収集のベストプラクティスを知りたい

データの収集口は可用性が重要なため AWS IoT Core や Amazon API Gateway のようなマネージドサービスの利用をご案内しました。また、S3 へデータを保存する際は Amazon Kinesis Data Firehose をご利用頂くことをご案内しました。(下記資料の P30 ログをちゃんと扱いたい も合わせてご覧ください。)

[AWS Start-up ゼミ] よくある課題を一気に解説! 御社の技術レベルがアップする 2019 春期講習

Q: Amazon SageMaker 上で scikit-learn を利用するしているが、日本語がうまく扱えない。

環境変数に PYTHONIOENCODING=UTF-8 LANG=C.UTF-8 LC_ALL=C.UTF-8 を追加し試してみて下さい。

Q: Alexa の Skill から呼び出す AWS Lambda から AWS IoT Core で管理するデバイスを操作をすると、応答を受け取れない。

セッション情報を DynamoDB 等に入れ、デバイスの応答待ちの間 DynamoDB をポーリングすることをご案内しました。IoT Core は操作終了後に Lambda 等で DynamoDB のステータスを更新する必要があります。

Q: AWS の請求期間は UTC でしょうか。

UTC になります。なので毎月1日 の9時以前にリザーブドインスタンスを購入すると先月分に反映されます。

Q: Amazon ECS で本番/開発環境を作る場合、クラスターは分けたほうがいいか。

ワークロードと自社のセキュリティポリシーによるのでどちらもあるかと思われます。awsvpc ネットワークモードを使うと開発環境の ECS Task のみ開発用ネットワークに接続するといったことも可能です。

Q: Amazon ECS 利用時に AutoScaling Group を自分で作るときは空のクラスターを作るでいいか。

はい、問題ありません。

Q: スポットインスタンスを利用したい。スポットインスタンスが中断された時にオンデマンドの数を増やす事はできるか。

スポットインスタンスを起動する際に SpotFleet や AutoScaling Group をご利用頂くことで、「一部をオンデマンドで全部でxx台」のように起動することができますが、スポットインスタンスが起動できない場合にはオンデマンドインスタンスが起動されることはありません。そのため、複数のインスタンスタイプとアベイラビリティゾーン(これをスポットプールと呼びます)を組み合わせて設定をしておくことを推奨します。これにより、あるスポットプールでスポットインスタンスが起動できなかった場合にも、他のスポットプールでスポットインスタンスの起動を試み、全体の状態を維持する様に動作させることができます。

また、合わせて負荷に応じた AutoScaling を設定している場合には、インスタンス総数が減り負荷が高まった際に、全体としてスケールされるため、結果としてオンデマンドインスタンスが必要数起動される様に動作させることも可能です。

Q: Terraform から AWS CodePipeline を作っている。Amazon ECR に Push したらデプロイする構成を作ったが、 docker push をしてもパイプラインが開始しない。

CodePipeline では ECR の変更検知は CloudWatch Events を利用しています。
マネジメントコンソール上から CodePipeline を作った場合は CloudWatch Events のルールが自動的に作成されますが、Terraform や CloudFormation, CLI などから作成する場合はルールが作成されません。
Amazon ECR ソースの CloudWatch イベント ルールを作成する に CloudFormation でルールを作る例があるので、こちらを参考に Terraform を記述してみて下さい。

Q: Amazon Elastic Transcoder と AWS Elemental MediaConvert があるが、どちらを使ったほうが良いか。

ユースケース次第ですが、Amazon Elastic Transcoder のページにも記載がありますとおり、まずは AWS Elemental MediaConvert をお試し下さい。

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

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

このブログの著者

Kazuki matsuda

松田和樹 (Kazuki Matsuda)

Container とか Serverless, BigData が好きなスタートアップ ソリューションアーキテクト。