0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Serverless FrameworkでLambda関数を構成管理

Posted at

Serverless FrameworkでLambdaを管理

以前、Lambda関数を作った時に、気になっていたServerless Frameworkで構成管理してみることにしたのでメモです。
Infrastructure as Codeで、ansibleのようにコードでインフラ構成管理していくイメージです。

install

nodejsが実行できる状態で、npm install -g serverless
https://www.serverless.com/framework/docs/getting-started

プロジェクト作成

serverless create --template aws-python3 --name serverless-check-audrey

実行すると、serverless-check-audreyディレクトリ内に必要なファイルが作成される。

  • serverless.yml : 設定を記述していくファイル
  • handler.py : 実際にLambdaで実行するプログラム

serverless.ymlの設定

設定した内容は以下です。(おそらく最低限の設定)
timeoutやmemorySizeは、デフォルトで書いたものが設定されるので適したもの指定する。

コードは、handler.pyに記述して、functionsの名前をよしなに変更する。(デフォルトは、helloという名前になっている)

service: serverless-check-audrey

frameworkVersion: '3'

provider:
  name: aws
  runtime: python3.7
  timeout: 480 # default is 6
  memorySize: 256 # default is 1024
  region: ap-northeast-1

functions:
  check:
    handler: handler.check
    layers:
      - arn:aws:lambda:XXXXX:chromeのlayer
      - arn:aws:lambda:XXXXX:slackwebのlayer
      - arn:aws:lambda:XXXXX:seleniumのlayer
    events:
      - schedule: cron(0 11 * * ? *)

# plugins:
#   - serverless-python-requirements

ハマりポイント

seleniumがpython3.9で動かない

AmazonLinux2だと、一部のライブラリが動かない?(あいまいです)ようで、3.7にして解決

scheduleのcronの書き方

Linuxのcron設定の引数の数が異なっていて、ずっと間違えていました。

ただ、eventsでscheduleを書くだけで、EventBridge (CloudWatch Events)が勝手に作成・紐付けされて、スゴイです。

これから

layer部分は、前回でも使用していたものをそのまま使ってしまいましたが、ここもserverlessで管理することができるのでこちらもやる予定です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?