Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
1
Help us understand the problem. What is going on with this article?
@YasuhiroKimesawa

Lambda関数をそのままAWS Batchに乗せ換える(Python3.6限定)

More than 1 year has passed since last update.

この記事は アラタナアドベントカレンダー2019 19日目の記事です。

Serverlessでサービスを展開していると、どうしてもRDBを使いたくなったり、どこかでバッチ処理をしたくなったりしますよね。

RDBについては、RDS ProxyがLambdaから使用可能になりそうでいい兆しですね。

Amazon RDS Proxy

バッチ処理についてはかつてからAWS Batchというのが用意されています。

これはECRに用意したDockerを使って処理を実行できる環境です。Queueも用意されているのでかなり自由なバッチ設計ができると思います。

さて、Serverlessで環境を構築している場合、まず選択肢として、AWSBatchよりもLambdaを考えると思います。

StepFunctionやQueue、S3などのイベント、並行処理を駆使して構築する場合もあるでしょう。

ただ、Lambdaの実行制限は現状15分でそれを超える場合は何か手を考えなくてはいけません。

処理を分割する、並行処理を考える等あると思いますが、選択肢としてAWS Batchへの移行も入ってくるかと。

しかし、問題はECR上にDockerを用意しなくてはいけない点です。

AWS Batchを使用する場合、Lambdaで使っているソースコードをわざわざDockerに乗せて、ECRのレポジトリに突っ込まなくてはいけない。

これは非常に面倒臭いです。

そこでServerlessFrameworkを使っている場合限定ですが、いいPluginを見つけました。

serverless-aws-batch

※ ただしこちらは不具合が多いので注意。。。

このプラグインはServerlessFrameworkからデプロイする際に、Lambdaで使用するソースをそのままDockerに乗せ、ECRにPushしてくれて、
Batchの設定まで行ってくれる夢のようなPluginです。

イベントや環境変数もそのまま使えます(Batchを起動するLambdaが自動で作られ、イベントや環境変数の設定も引き継がれる)。
serverless.ymlをちょっと書き換えるだけで全部構築してくれます。

ただ、先の大元のPluginはちょっとバグが多かったので、せめてPython3.6で動くように手を入れたものがこちらになります。

serverless-aws-batch

※ 大元をForkしてまだプルリクを出していないのですが、取り込まれたらリンクを修正します。

使い方はGithubのReadmeに詳しく書いてあります。
基本serverless.ymlでiamにbatchを許可するのと、該当のfunctionにbatchの項目を付け足すだけで済むはずです。

ぜひ使ってみてください\(^o^)/

Python3.6以外では動く保証はないですが、同じような修正をすればいけると思うので、ForkしてPRしてもらえればいいかと思います。

あらためて、大元のjustinram11さんありがとうございます!ナイスアイデアです!

1
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
zozotech
70億人のファッションを技術の力で変えていく

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
1
Help us understand the problem. What is going on with this article?