Lambda

in  

AWSでLambdaを開発する上で利用するフレームワークなどについて

apex

apexをassume roleで実行する

install

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

config

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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
$ 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オプションもある。

1
2
3
4
5
# 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

1
$ pip install python-lambda-locla

config

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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
{
    "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

install

Serverlessのインストール

1
2
$ brew install npm
$ npm install serverless -g

ローカル環境で開発するためにserverless-offlineをインストールする。

npm install serverless-offline --save-dev

依存ライブラリをデプロイするためにserverless-python-requirementsをインストールする。

$ npm install --save-dev serverless-python-requirements

serverless.ymlに下記を追加しておく。

plugins:
  - serverless-offline
  - serverless-python-requirements

StepFunctioを開発する場合は下記をインストールする。 また、AWSのリソース名をserverless.ymlで指定できるように、serverless-pseudo-parametersもインストールしておきます。

$ npm install --save-dev serverless-step-functions
$ npm install --save-dev serverless-pseudo-parameters
plugins:
  - serverless-step-functions
  - serverless-pseudo-parameters

development

実際の開発ではpipenvを利用している際は仮想環境に入ってsls offlineコマンドを実行してオフライン開発します。


$ pipenv shell
$ sls offline

デプロイは下記コマンドで行います。


$ sls deploy

service

1
$ serverless create --template "aws-python3" --path hoge

Share