概要
前回の記事を書いた時,必要最低限のものしか設定していなかったので,
それぞれのプロパティがどんなものなのかメモ残しておく
参考資料
AWS::Lambda::Function
公式ドキュメントを参考にしています。
AWS::Lambda::Function
テンプレートファイル(sample)
コメント書けるのでyaml形式で記述していきます。
Type: "AWS::Lambda::Function"
Properties:
Code:
Code
DeadLetterConfig:
DeadLetterConfig
Description: String
Environment:
Environment
FunctionName: String
Handler: String
KmsKeyArn: String
MemorySize: Integer
ReservedConcurrentExecutions: Integer
Role: String
Runtime: String
Timeout: Integer
TracingConfig:
TracingConfig
VpcConfig:
VPCConfig
Tags:
Resource Tag
それぞれのプロパティに関して説明していきます。
Code
Lambda関数のソースコード
ここはインラインで直接テンプレートファイルに書くこともできますし,S3に配置したzipファイルを指定することもできます。
インラインで書く場合
- ポイント1: インラインで書く場合はZipFileというプロパティを指定する
- ポイント2: インラインでコードを書く場合には
|
をまず記述して次の行からか
#必須
Code:
#必須
ZipFile: |
# coding: utf-8
def handler(event, context):
print "Hello World"
S3のzipファイルを使用する場合
- ポイント1: zipファイルが存在するS3のバケットの名前を指定する。
- ※S3のzipファイルを使用する場合は必須
- ポイント2: S3内のzipファイルが存在する場所(パス)と名前(拡張子まで)を指定する
- ※S3のzipファイルを使用する場合は必須
- ポイント3: バージョニングが有効なS3を使用する時に,zipファイルのバージョンIDを指定することができる
- ※この値は任意
#必須
Code:
#必須
S3Bucket: "S3_Bucket_Name"
#必須
S3Key: "lambda/hoge.zip"
#任意
S3ObjectVersion: "xxxxxxxxxxx"
DeadLetterConfig
-
ポイント: Lambdaがイベントを処理できないときに送信するデッドレターキューのARNを指定する。
※AmazonSNSトピックまたはAmazonSQSキュー -
ポイント1: TargetArnというオプションに
#任意
DeadLetterConfig:
TargetArn: "arn:aws:sns:xxxxxxxxxxxxxx"
DeadLetterConfigについて詳しくはこれとかを見てもらえると
Description
関数の説明を記述する項目
#任意
Description: "説明"
Environment
- ポイント: Lambdaが使用できる環境変数のキーと値のペアを指定する
#任意
Environment:
Env: "dev"
S3_ACCESS_KEY: "xxxxxxxxxx"
FunctionName
- ポイント: 関数の名前
- ※指定しない場合は一意の物理IDを生成し、そのIDを関数名として設定される
必須ではないですが,設定しておいた方がいいでしょう
ただし,名前を指定すると、このリソースの置換が必要な更新はできない
#任意
FunctionName: "example-lambda-function"
Handler
Lambdaがコードの実行を開始するために呼び出す(ソースコード内の)関数の名前。
※前述したfunctionNameとは別物
インラインでコードを記述した場合
- ポイント: インラインでコードを書いた場合は,**index.**をつける
#必須
## index.{関数名}
Handler: "index.handler"
S3のzipファイルを使用する場合
- ポイント: S3のzipファイルを使用する場合は実行したい関数があるファイル名と関数名を記述する
#必須
## {ファイル名}.{関数名}
Handler: "main.handler"
KmsKeyArn
- ポイント: Lambdaが環境変数値を暗号化および復号化するために使用するKMSのARNを指定する
#任意
KmsKeyArn: "arn:aws:kms:***********"
KMSについて詳しくはこれとかを見てもらえると
MemorySize
- ポイント: Lambda関数に割り当てるメモリ量(MB)を指定する
#任意
MemorySize: 1024
ReservedConcurrentExecutions
- ポイント: 関数用に予約する最大同時実行数を指定する
- ※デフォルトは1000
#任意
ReservedConcurrentExecutions: 1000
Role
- ポイント: AWSサービスにアクセスするコードを実行するときにLambdaが引き受けるIAM実行ロールのARN
#必須
Role: "arn:aws:iam::***********"
Runtime
- ポイント: Lambda関数のランタイム環境を指定する。
- 有効な値
- nodejs
- nodejs4.3
- nodejs6.10
- nodejs8.10
- java8
- python2.7
- python3.6
- dotnetcore1.0
- dotnetcore2.0
- dotnetcore2.1
- nodejs4.3-edge
- go1.x
- 有効な値
#必須
Runtime: "python2.7"
Timeout
- ポイント: Lambda関数が実行されてからタイムアウトにする時間を指定する
- ※最大300秒
#任意
Timeout: 300
TracingConfig
- ポイント: AWS X-Rayを使用してLambda関数の追跡とモニタリングをする場合は設定する
- ※デフォルトはPassThrough
- 有効な値
- PassThrough
- Active
TracingConfigに関して詳しくはこれを見ていただけると
#任意
TracingConfig: "Active"
VpcConfig
Lambda関数がVPCのリソースにアクセスする必要がある場合に指定する
- ポイント: VpcConfigを設定する場合は以下の2つが必須項目となる
- SecurityGroupIds
- Lambda関数がアクセスを必要とするリソースが含まれるVPC内の1つ以上のセキュリティグループのID
- SubnetIds
- Lambda関数がアクセスを必要とするリソースが含まれるVPC内の1つ以上のサブネットのID
- SecurityGroupIds
#任意
VpcConfig:
#必須
SecurityGroupIds:
- "***********"
- "***********"
#必須
SubnetIds:
- "***********"
- "***********"
Tags
- ポイント: Lambdaに関するタグのキーと値をセットする
- ※タグを使用して関数をグループ化し、フィルタリングできる
#任意
Tags:
"キー名1": "値1"
"キー名2": "値2"