AWS Startup ブログ

【週刊 Ask An Expert #34】インスタンスにログインできなくなっちゃった!?先週の #AWSLoft で受けた質問10選

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

刺すような冷たい空気、本格的な冬の訪れを感じる今日このごろですね。寒いだけならまだいいのですが、雨が降っていると朝夕の子供の送迎(自転車)にかかる労力が10倍に感じられ、なかなか大変です。

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

Ask An Expert?

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

ある日の Ask An Expert – Database Specialist SA の成田と Partner SA の大林

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

週刊 Ask An Expert #34 (2019/12/02 – 12/06)

この週の対応者は SA: 有岡・桐谷・北村・布村・鈴木・安藤・福嶋・小西・茎沢・久次米・橋本・平田・川﨑・岩井・小泉、CSE: 嶋本でした。

Q1: Amazon Cognito User Pools で、クライアント側から直接でなくサーバーサイドから API を叩いてサインインの処理をしたい。Ruby で SRP プロトコル(Secure Remote Password: Cognito User Pools がサインイン時に利用するプロトコル)を実装するにはどうすればよいか。

SRP 自体は仕様にしたがって、または AWS Amplify やフロント側の SDK の実装を参考に実現することができると思いますが、信頼できるサーバーサイドからであれば SRP でなく Username と Password でサインイン処理することも可能です。 AdminInitiateAuth API を、AuthFlow パラメータに “ADMIN_USER_PASSWORD_AUTH” をセットして叩いてください。

Q2: Amazon SES からメールを送信したいが、Verify したメールアドレス以外に送信できない。

デフォルトでは、不正利用等を防ぐため Amazon SES はサンドボックスに配置されています。必要に応じてサンドボックス外への移動をご申請ください。

ドキュメント:Amazon SES サンドボックスの外への移動

Q3: AWS Marketplace で自前の AMI を売りたい。

欧州連合加盟国販売者のための米国の銀行口座などが必要になります。詳しくは該当のドキュメントをご覧ください。

Q4: Amplify CLI で作成したリソースの運用管理、Amazon ECS on AWS Fargate と組み合わせる方法を教えて欲しい。

等があることをご説明しました。

Q5: Amazon EC2 インスタンスを再起動した後から SSH ログインできなくなってしまった。

用途をお聞きすると踏み台サーバーだったため、セキュリティグループやキーペアの設定を確認しながら再作成していただくようお願いしました。その際、旧来の Amazon Linux をご利用だったため、Amazon Linux 2 のご利用をお願いしました。

また、AWS Systems Manager の Session Manager を使うことで踏み台サーバーをなくせることについてもご案内しました。

Q6: バッチ処理の一部で、外部 API にアクセスしてから数分〜5分ほど待ち、結果が反映されてから次の処理に移るよう制御する必要がある。AWS Lambda ファンクションの中で Sleep することを考えているが、他に良いやり方はないか。

Lambda ファンクションの中でスリープしてしまうと、リソースとコスト効率が悪くなってしまいそうです。AWS Step Functions のループ処理などを使うことで処理の完了を確認し、次に移るようなステートマシンを定義する方法などを議論しました。

Q7: Amazon EC2/Unicorn/Nginx を使ったアプリを作成している。Capistrano を使った EC2 への自動デプロイができない。

Capistrano の出しているログをよくご確認いただくようお願いしました。
また、可能であれば Pull 型のデプロイ方法もご検討いただけるとよいかもしれません。


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

Q8: Amazon API Gateway -> AWS Lambda から Amazon Aurora にデータを入れたい。でも、Aurora は Private subnet にあるので接続できないですよね?

AWS Lambda の VPC 設定を行えば接続可能です。その際、旧来は ENI 生成時に生じるコールドスタートやコネクションプーリングができない問題がありましたが、コールドスタートについては2019年9月の発表により改善されており、コネクションプーリングについては先週 re:Invent 2019 期間中に発表された Amazon RDS Proxy を使うことで解決できるようになりつつあります(RDS Proxyは 現在 Preview 中で、Aurora MySQL 5.6, 5.7 をサポートしています)。

Q9: サーバーサイドで走らせている Ruby プログラムで発行した Amazon S3 の署名付きURL に、クライアントからアクセスしようとしているが 403 エラーになる。

Ruby が動いている EC2 インスタンスの IAM プロファイルを確認したところ、S3 の GetObject 権限がついていませんでした。署名付き URL を使う場合、URL を払い出す元(この場合 Ruby のプログラム)に有効な操作権限が付与されている必要があります。

Q10: AWS SDK for Java で、AWS Elemental MediaConvert を操作しようとしている。 CreateJobCreateJobRequest の違いについて教えて欲しい。

CreateJob() は新しいトランスコードジョブを作成するメソッドで、 CreateJobRequest クラスは CreateJob() に渡す引数の型です。

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

最後までお読み頂きありがとうございます。冒頭に書いたように、執筆者の独断により興味深かった質問を選び、かつざっくり要約して記載しています。実際にはより具体的な質問をより多く頂いていますが、様々なご相談があることが伝わっていれば幸いです。まだ Ask An Expert カウンターをご利用になったことがない方も、AWS Loft Tokyo をご利用の際はぜひお気軽にご質問ください。
※Ask An Expert が混雑してお待ちいただく場合、またはエキスパートが不在の場合がございます。何卒ご容赦ください。

このブログの著者

塚田 朗弘(Akihiro Tsukada)
AWS Amplify がすき