Help us understand the problem. What is going on with this article?

AWS::Lambda::Functionのプロパティ

More than 1 year has passed since last update.

概要

前回の記事を書いた時,必要最低限のものしか設定していなかったので,
それぞれのプロパティがどんなものなのかメモ残しておく

参考資料

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
#任意
VpcConfig:
  #必須
  SecurityGroupIds:
    - "***********"
    - "***********"
  #必須
  SubnetIds:
    - "***********"
    - "***********"

Tags

  • ポイント: Lambdaに関するタグのキーをセットする
    • ※タグを使用して関数をグループ化し、フィルタリングできる
#任意
Tags:
  "キー名1": "値1"
  "キー名2": "値2"
Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away