AWS Black Belt Tech Webinar 「AWS Lambda」資料公開
こんばんは、テクニカルトレーナーの鬼形です。
2016/3/2に開催しましたAWS Black Belt Tech Webinar 「AWS Lambda」の資料が公開されました。今回は、2015年10月に開催されたre:Invent以降のアップデートに関するご紹介となります。待望のVPCアクセスについての解説もございます。是非ご参照ください!
下記にセミナー時に頂戴したQAを、可能な範囲で記載させて頂きます。
【Q&A】
Q1. pythonでNullというのはNoneでしょうか?"null"という文字列でしょうか?
A1. nullという文字列です。
Q2. AWS Lambdaを使用したアプリは、Lambdaのダウンタイムを考慮した設計にする必要がありますか?
A2. アプリケーションから直接LambdaファンクションをInvokeする場合、イベントタイプがRequestResponseであればエラーになった場合のエラーハンドリングは呼び出し側で考慮する必要があります。イベントタイプがEventの場合、ならびにAmazon S3がイベントソースの場合は、コードにエラーがある場合やサービスまたはリソースの上限を超えた場合にLambdaファンクションは3回リトライされます。イベントソースがAmazon DynamoDB StreamsおよびAmazon KinesisといったAWS Lambdaで自動的にポーリングするタイプのイベントソースの場合は、コードにエラーがある場合、Lambda はデータの有効期限が切れるまでリトライし続けます。
Q3. Lambda のVPC対応ですが、VPC指定したLambdaを初めて実行するときにENIのアタッチがあるためか非常に時間がかかるようです。こちら、何か良い対応方法はないでしょうか。
A3. 仰るとおり実行時にENIのアタッチが伴う場合に最大で60秒程度時間がかかるケースがあります。こちらについて事前に該当のLambdaファンクションにリクエストをしておいたり、ポーリングすることで軽減可能です。なお、ポーリングする場合にはご紹介したスケジュール実行を利用することも可能です。
Q4. Lambda を使用して、RDSのログファイル等をダウンロードして、S3にアップロードしたい場合、Lambda内にデータを保存しておける場所(tmp等)はありますか?また、容量の制限はありますか?
A4. /tmpを利用可能です。注意点としてあくまでもこちらは一時的な領域でありLambdaファンクション終了時に消去されるため、データの永続化目的では利用しないでください。また書き込み可能な容量は512MBまでとなっています。
Q5. Lambdaのリトライ処理について教えて下さい。RequestかEventによってリトライの動きが違うと聞いたことがあります。
A5. イベントソースの種別および、カスタムイベントの場合はイベントタイプ(ReqeustResponseかEventか)によって異なります。
Q6. LambdaのVPCアクセスをOFFにしてもENIは削除されないのでしょうか。
A6. すぐには削除されませんが利用がなくなってからしばらくされると自動的に削除されます。
Q7. LambdaをVPC内で初回実行する時にENI作成を含め、通常どれぐらい時間がかかるのでしょうか。
A7. ENIのアタッチが必要な場合、状況によっても異なりますが10秒から最大60秒程度必要となります。多くは30秒以内に終了します。
Q8. ファンクションが別のファンクションにパラメータを渡しながらキックする事は可能ですか?
A8. Lambdaファンクション内部で別のLambdaファンクションをInvokeすることは可能です。
Q9. 充分な数のENIやサブネットIPがない場合のエラーはどういう形式で出力されるのでしょうか?
A9. 現時点ではCloudWatch Logs等には出力されません。従って、Lambdaファンクションの失敗の数と対応するCloudWatch Logsのエントリ有無により判断する必要があります。
Q10. 128MB x 2並列で2つENIが作られました。これくらいは誤差(?)の範囲ですかね。。
A10. 状況により作成されるENIの数は異なるためご質問のような状況は発生し得ます。
Q11. ENIはどういうタイミングで削除されるのでしょうか?
A11. すぐには削除されませんが利用がなくなってからしばらくされると自動的に削除されます。
Q12. どのくらいの頻度でpollingすればENIは削除されないのでしょうか?
A12. 申し訳ありませんが一概には言えません。実行しているLambdaファンクションやLambdaに関するお客様の状況によって異なるため、いくつかのパターンでお試し頂きご判断ください。
A1. nullという文字列です。
Q2. AWS Lambdaを使用したアプリは、Lambdaのダウンタイムを考慮した設計にする必要がありますか?
A2. アプリケーションから直接LambdaファンクションをInvokeする場合、イベントタイプがRequestResponseであればエラーになった場合のエラーハンドリングは呼び出し側で考慮する必要があります。イベントタイプがEventの場合、ならびにAmazon S3がイベントソースの場合は、コードにエラーがある場合やサービスまたはリソースの上限を超えた場合にLambdaファンクションは3回リトライされます。イベントソースがAmazon DynamoDB StreamsおよびAmazon KinesisといったAWS Lambdaで自動的にポーリングするタイプのイベントソースの場合は、コードにエラーがある場合、Lambda はデータの有効期限が切れるまでリトライし続けます。
Q3. Lambda のVPC対応ですが、VPC指定したLambdaを初めて実行するときにENIのアタッチがあるためか非常に時間がかかるようです。こちら、何か良い対応方法はないでしょうか。
A3. 仰るとおり実行時にENIのアタッチが伴う場合に最大で60秒程度時間がかかるケースがあります。こちらについて事前に該当のLambdaファンクションにリクエストをしておいたり、ポーリングすることで軽減可能です。なお、ポーリングする場合にはご紹介したスケジュール実行を利用することも可能です。
Q4. Lambda を使用して、RDSのログファイル等をダウンロードして、S3にアップロードしたい場合、Lambda内にデータを保存しておける場所(tmp等)はありますか?また、容量の制限はありますか?
A4. /tmpを利用可能です。注意点としてあくまでもこちらは一時的な領域でありLambdaファンクション終了時に消去されるため、データの永続化目的では利用しないでください。また書き込み可能な容量は512MBまでとなっています。
Q5. Lambdaのリトライ処理について教えて下さい。RequestかEventによってリトライの動きが違うと聞いたことがあります。
A5. イベントソースの種別および、カスタムイベントの場合はイベントタイプ(ReqeustResponseかEventか)によって異なります。
Q6. LambdaのVPCアクセスをOFFにしてもENIは削除されないのでしょうか。
A6. すぐには削除されませんが利用がなくなってからしばらくされると自動的に削除されます。
Q7. LambdaをVPC内で初回実行する時にENI作成を含め、通常どれぐらい時間がかかるのでしょうか。
A7. ENIのアタッチが必要な場合、状況によっても異なりますが10秒から最大60秒程度必要となります。多くは30秒以内に終了します。
Q8. ファンクションが別のファンクションにパラメータを渡しながらキックする事は可能ですか?
A8. Lambdaファンクション内部で別のLambdaファンクションをInvokeすることは可能です。
Q9. 充分な数のENIやサブネットIPがない場合のエラーはどういう形式で出力されるのでしょうか?
A9. 現時点ではCloudWatch Logs等には出力されません。従って、Lambdaファンクションの失敗の数と対応するCloudWatch Logsのエントリ有無により判断する必要があります。
Q10. 128MB x 2並列で2つENIが作られました。これくらいは誤差(?)の範囲ですかね。。
A10. 状況により作成されるENIの数は異なるためご質問のような状況は発生し得ます。
Q11. ENIはどういうタイミングで削除されるのでしょうか?
A11. すぐには削除されませんが利用がなくなってからしばらくされると自動的に削除されます。
Q12. どのくらいの頻度でpollingすればENIは削除されないのでしょうか?
A12. 申し訳ありませんが一概には言えません。実行しているLambdaファンクションやLambdaに関するお客様の状況によって異なるため、いくつかのパターンでお試し頂きご判断ください。
Q13. 以前のBlackBelt でPipeLine がスケジュールドリブンで、Lambdaがトリガードリブンとの話をされていましたが、今回、Lambdaにスケジュール機能が追加されたことで、使い方の違いを教えて下さい。
A13. AWS DataPipelineはデータに対するワークフローを信頼性高く実装するためのサービスです。一方AWS Lambdaはイベントドリブンにアプリケーションコードを実行するコンピュートサービスであることに変わりはありません。スケジュール機能も予定されたイベントによる実行です。従ってスケジュール機能の視点ではなく両サービスの本来の性質で使い分けるのがいいかと思われます。
A13. AWS DataPipelineはデータに対するワークフローを信頼性高く実装するためのサービスです。一方AWS Lambdaはイベントドリブンにアプリケーションコードを実行するコンピュートサービスであることに変わりはありません。スケジュール機能も予定されたイベントによる実行です。従ってスケジュール機能の視点ではなく両サービスの本来の性質で使い分けるのがいいかと思われます。
Q14. ENIが削除される「しばらく」というのはどのくらいの時間でしょうか?
A14. 状況に応じてAWS Lambdaにてコントロールされるため状況により異なります。
Q15. Lambda Functionの再実行にはどの程度時間がかかるのでしょうか。Function内でエラーが発生した再実行のときなど。
A15. Lambdaファンクションが失敗したときの状況によって事ないますが、残念ながら現時点では明らかにはしていません。
A14. 状況に応じてAWS Lambdaにてコントロールされるため状況により異なります。
Q15. Lambda Functionの再実行にはどの程度時間がかかるのでしょうか。Function内でエラーが発生した再実行のときなど。
A15. Lambdaファンクションが失敗したときの状況によって事ないますが、残念ながら現時点では明らかにはしていません。
その他、以下につきましてはご要望として承ります。
・ ENIが作成される場合のLambdaの動作がとても遅いのであらかじめENIを作成したままにしておきたいのですがやはり無理なのでしょうか。定期的にポーリングしてもさらにあたらしいENIを作成されることもあるようで
・ SQSをトリガーとしたLambda function実行など、SQSと連携した機能提供はないでしょうか?
・ サブネットのIP枯渇によりLambda起動できなかったことは検知できないとのことでしたが、今後検知できるようになる予定はあるでしょうか?
・ SQSをトリガーとしたLambda function実行など、SQSと連携した機能提供はないでしょうか?
・ サブネットのIP枯渇によりLambda起動できなかったことは検知できないとのことでしたが、今後検知できるようになる予定はあるでしょうか?
次回のBlack Belt Tech Webinarは 3/9(水) 18:00より AWS Service Catalog をお送りします。申し込みは こちら
次回も皆様のご参加をお待ちしております!
コメント