Lambda

Table of Contents

Lambda

apex

apexをassume roleで実行する

install

curl https://raw.githubusercontent.com/apex/apex/master/install.sh | sh

config

AssumeRoleを取得して実行する場合は –iamrole オプションでRoleのARNを指定して実行する。 APEX管理下のプロジェクトを作成する際は下記を最初に実行する。

$ export AWS_REGION=ap-northeast-1
$ apex  --iamrole arn:aws:iam::xxxxxxxxxxxxxx:role/role-name init


             _    ____  _______  __
            / \  |  _ \| ____\ \/ /
           / _ \ | |_) |  _|  \  /
          / ___ \|  __/| |___ /  \
         /_/   \_\_|   |_____/_/\_\



  Enter the name of your project. It should be machine-friendly, as this
  is used to prefix your functions in Lambda.

    Project name: lambda_sample

  Enter an optional description of your project.

    Project description: sample lambda function managed by apex

  [+] creating IAM lambda_sample_lambda_function role
  [+] creating IAM lambda_sample_lambda_logs policy
  [+] attaching policy to lambda_function role.
  [+] creating ./project.json
  [+] creating ./functions

  Setup complete, deploy those functions!

    $ apex deploy

デプロイを行い際は下記のように実行する。変更箇所を確認する–dry-runオプションもある。

# deploy (Dry Run)
apex --iamrole arn:aws:iam::xxxxxxxxxxxxxx:role/role-name  deploy --dry-run

# deploy
apex --iamrole arn:aws:iam::xxxxxxxxxxxxxx:role/role-name  deploy

環境ごとにLambda Function名を分けてデプロイすることができる。 下記のようにproject.stg.json(ステージング用)のファイルを作り、prefixに必ず stg_ が付くようにするなどして管理する。

{
    "description": "lambda functions.",
    "nameTemplate": "stg_{{.Function.Name}}",
    "memory": 128,
    "timeout": 5,
    "environment": {}
}

python-lambda-local

install

$ pip install python-lambda-locla

config

インプットとなるevent.jsonを作成する。

{
    "deliveryStreamArn": "arn:aws:firehose:ap-northeast-1:xxxxxxxxxxxxxx:deliverystream/myfunc",
    "region": "ap-northeast-1",
    "records": [
	{
	 "approximateArrivalTimestamp": 1540277949028,
	 "data": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
	}
    ]
}

exec


$ python-lambda-local --function lambda_handler --timeout 5 functions/myfunc/main.py functions/myfunc/event.json 

参考URL

https://kakakakakku.hatenablog.com/entry/2017/08/02/085839

serverless

$ brew install npm
$ npm install serverless -g

Validate