- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2020-04-16T05:04:35+00:00","default:wikiadmin","wikiadmin")
#author("2020-04-16T10:08:16+00:00","default:wikiadmin","wikiadmin")
#contents
-イベントドリブンで軽い処理をするのに使える
*本 [#cb5e5d2d]
**ほぼPythonだけでサーバーレスアプリをつくろう [#sc0cb821]
-Chalice AWS謹製のサーバーレス
*後から入れるlibrary [#g2b67218]
|request|
|pytz||
*terraform deploy [#p7420bb0]
-差分のみデプロイする
https://dev.classmethod.jp/articles/terraform-lambda-deployment/
-定期実行
https://qiita.com/ktsujichan/items/c0804f155c2cf1962ed3
*VPC Lambda [#q051ce4e]
-VPCタブで変更できる。
-実行時に下記のロールが必要
The provided execution role does not have permissions to call CreateNetworkInterface on EC2
-コールドスタートの問題
かつてはENIをコールドスタートしたり、その分ENI&サブネットのIPを消費したりのデメリットがあったが、2019年に解消された。
-RDSと相性悪い問題 RDS Proxyで解消
*ローカル開発環境 [#f8ae300a]
**ローカルで実行 [#l3d72e31]
pip install python-lambda-local
echo '{"key1": "test"}' > event.json
python-lambda-local -f lambda_handler lambda_function.py event.json
**Serverless [#ve30737d]
lambda以外にも対応している
http://momota.github.io/blog/2018/11/05/serverless-framework/
*デプロイ [#dc99b250]
-Zappa
*イベントトリガーの一例 [#id1ab9d1]
|S3へのput|
|SESへの着信|
|Amazon SNS からの通知の送信|
*IAMロールの作成 [#u05482d3]
-ロールlambda作成時に追加することもできるが、Lambdaで触りたいリソースに対するアクセス権限があるロールを付与すること
-信頼関係でlambda.aws.comを追加しないとlambdaからロールを選択できない。(lambdaの画面から作成すると勝手に追加されている)
**EC2のEBS Snapshotを作成削除などを許可するポリシー [#cfc2c6d6]
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:*"
],
"Resource": "arn:aws:logs:*:*:*"
},
{
"Effect": "Allow",
"Action": "ec2:Describe*",
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"ec2:CreateSnapshot",
"ec2:DeleteSnapshot",
"ec2:CreateTags",
"ec2:ModifySnapshotAttribute",
"ec2:ResetSnapshotAttribute"
],
"Resource": [
"*"
]
}
]
}
**CloudWatchからElasticSearchServiceへ投入を許可するポリシー [#wef6ea46]
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": [
"arn:aws:logs:*:*:*"
]
},
{
"Effect": "Allow",
"Action": "es:ESHttpPost",
"Resource": "arn:aws:es:*:*:*"
}
]
}
*言語 [#pbe9d568]
*例 [#n628e1d2]
**EBSのバックアップ [#w7ab6143]
https://serverlesscode.com/post/lambda-schedule-ebs-snapshot-backups/
https://serverlesscode.com/post/lambda-schedule-ebs-snapshot-backups-2/
上記ページに従い実行した。backupというキーを設定したインスタンスのEBSのSnapshotを作成する。PartIIでは削除日を指定してSnapshotを作る機能が追加されている。
まずはlambdaに対しての信頼関係を定義して、lambaで実行すると ebs-backup-worker が付与されるようにする。 ebs-backup-workerには必要なポリシーを付与する。
*ログ [#q3633345]
- console.log()したものがログストリームに行くらしい。
-通常の出力はどこかへ消える?
#counter