AWS::Serverless::Function
AWS Lambda 関数、AWS Identity and Access Management (IAM) 実行ロール、およびこの関数をトリガーするイベントソースマッピングを作成します。
AWS::Serverless::Function リソースは Metadata
リソース属性もサポートするため、アプリケーションが必要とするカスタムランタイムを構築するよう AWS SAM に指示できます。カスタムランタイムの構築の詳細については、「カスタムランタイムの構築」を参照してください。
[Syntax] (構文)
AWS Serverless Application Model (AWS SAM) テンプレートでこのエンティティを宣言するには、以下の構文を使用します。
YAML
Type: AWS::Serverless::Function Properties: Architectures:
List
AssumeRolePolicyDocument:JSON
AutoPublishAlias:String
AutoPublishCodeSha256:String
CodeSigningConfigArn:String
CodeUri:String | FunctionCode
DeadLetterQueue:Map | DeadLetterQueue
DeploymentPreference:DeploymentPreference
Description:String
Environment:Environment
EphemeralStorage:EphemeralStorage
EventInvokeConfig:EventInvokeConfiguration
Events:EventSource
FileSystemConfigs:List
FunctionName:String
FunctionUrlConfig:FunctionUrlConfig
Handler:String
ImageConfig:ImageConfig
ImageUri:String
InlineCode:String
KmsKeyArn:String
Layers:List
MemorySize:Integer
PackageType:String
PermissionsBoundary:String
Policies:String | List | Map
ProvisionedConcurrencyConfig:ProvisionedConcurrencyConfig
ReservedConcurrentExecutions:Integer
Role:String
Runtime:String
Tags:Map
Timeout:Integer
Tracing:String
VersionDescription:String
VpcConfig:VpcConfig
[Properties] (プロパティ)
-
Architectures
-
関数の命令セットアーキテクチャ。
このプロパティの詳細については、AWS Lambda デベロッパーガイドの「Lambda 命令セットアーキテクチャ」を参照してください。
有効な値:
x86_64
またはarm64
のいずれか。タイプ: リスト
必須: いいえ
デフォルト:
x86_64
AWS CloudFormation との互換性: このプロパティは、
AWS::Lambda::Function
リソースのArchitectures
プロパティに直接渡されます。 -
AssumeRolePolicyDocument
-
この関数用に作成されたデフォルト
Role
の AssumeRolePolicyDocument を追加します。このプロパティが指定されていない場合は、AWS SAM がこの関数のデフォルトの assume ロールを追加します。Type: JSON
必須: いいえ
AWS CloudFormation との互換性: このプロパティは、
AWS::IAM::Role
リソースのAssumeRolePolicyDocument
に似ています。AWS SAM は、この関数用に生成された IAM ロールにこのプロパティを追加します。この関数にロールの Amazon リソースネーム (ARN) が提供されている場合、このプロパティは何も実行しません。 -
AutoPublishAlias
-
Lambda エイリアスの名前です。Lambda エイリアスの詳細については、AWS Lambda デベロッパーガイドの「Lambda 関数のエイリアス」を参照してください。このプロパティを使用する例については、「サーバーレスアプリケーションの段階的なデプロイ」を参照してください。
このプロパティが設定されていると、AWS SAM は AWS::Lambda::Version および AWS::Lambda::Alias リソースを設定します。このシナリオの詳細については、「AutoPublishAlias プロパティが指定されている」を参照してください。生成された AWS CloudFormation リソースの一般情報については、「生成された AWS CloudFormation リソース」を参照してください。
型: 文字列
必須: いいえ
AWS CloudFormation との互換性: このプロパティは AWS SAM に固有であり、AWS CloudFormation に同等のものはありません。
-
AutoPublishCodeSha256
-
新しい Lambda バージョンを公開するべきかどうかを決定するために使用される文字列値と、
CodeUri
の値です。このプロパティは、
DeploymentPreference
オブジェクトが段階的なデプロイメント (サーバーレスアプリケーションの段階的なデプロイ に説明があります) 向けに設定されている、AutoPublishAlias
プロパティが設定されており、デプロイメント間で変更されない、およびCodeUri
プロパティが設定されており、デプロイメント間で変更されないという特徴が AWS SAM テンプレートにある場合に発生する問題に対処します。このシナリオは、Amazon Simple Storage Service (Amazon S3) の場所に保存されているデプロイパッケージが更新済みの Lambda 関数コードを使用する新しいデプロイパッケージに置き換えられたが、
CodeUri
プロパティがそのまま変更されていない (新しいデプロイパッケージが新しい Amazon S3 の場所にアップロードされ、CodeUri
が新しい場所に変更される代わりに) という場合に発生する可能性があります。このシナリオで段階的なデプロイを正常にトリガーするには、
AutoPublishCodeSha256
に一意の値を提供する必要があります。型: 文字列
必須: いいえ
AWS CloudFormation との互換性: このプロパティは AWS SAM に固有であり、AWS CloudFormation に同等のものはありません。
-
CodeSigningConfigArn
-
AWS::Lambda::CodeSigningConfig リソースの ARN で、この関数のコード署名を有効にするために使用されます。コード署名の詳細については、「AWS SAM アプリケーションのためのコード署名の設定」を参照してください。
型: 文字列
必須: いいえ
AWS CloudFormation との互換性: このプロパティは、
AWS::Lambda::Function
リソースのCodeSigningConfigArn
プロパティに直接渡されます。 -
CodeUri
-
関数コードの Amazon S3 URI、ローカルフォルダへのパス、または FunctionCode オブジェクトです。このプロパティは、
PackageType
プロパティがZip
に設定されている場合にのみ適用され、それ以外の場合は無視されます。注意:
1.
PackageType
がZip
(デフォルト) に設定されていると、CodeUri
またはInlineCode
のいずれかが必要になります。2. Amazon S3 URI または FunctionCode オブジェクトが提供されている場合は、参照される Amazon S3 オブジェクトが有効な Lambda デプロイパッケージである必要があります。
3. ローカルフォルダへのパスが提供されている場合は、コードが適切に変換されるようにするために、sam build が含まれ、その後に sam deploy または sam package が続くワークフローをテンプレートが実行する必要があります。デフォルトで、相対パスは AWS SAM テンプレートの場所を基準にして解決されます。
タイプ: 文字列 | FunctionCode
必須: 条件に応じて異なります
AWS CloudFormation との互換性: このプロパティは、
AWS::Lambda::Function
リソースのCode
プロパティに似ています。ネストされた Amazon S3 プロパティには異なる名前が付けられています。 -
DeadLetterQueue
-
処理できないイベントを Lambda が送信する Amazon Simple Notification Service (Amazon SNS) トピックまたは Amazon Simple Queue Service (Amazon SQS) キューを設定します。デッドレターキュー機能の詳細については、AWS Lambda デベロッパーガイドの「AWS Lambda 関数のデッドレターキュー」を参照してください。
注意: Lambda 関数のイベントソースが Amazon SQS キューである場合は、Lambda 関数ではなく、ソースキューのデッドレターキューを設定してください。関数用に設定するデッドレターキューは、イベントソースキューではなく、関数の非同期呼び出しキューに使用されます。
タイプ: マップ | DeadLetterQueue
必須: いいえ
AWS CloudFormation との互換性: このプロパティは、
AWS::Lambda::Function
リソースのDeadLetterConfig
プロパティに似ています。AWS CloudFormation では、タイプがTargetArn
から導出されますが、AWS SAM ではTargetArn
と共にタイプを渡す必要があります。 -
DeploymentPreference
-
段階的な Lambda デプロイを有効にする設定です。
DeploymentPreference
オブジェクトが指定されると、AWS SAM はServerlessDeploymentApplication
と呼ばれる AWS::CodeDeploy::Application(スタックごとに 1 つ)、
と呼ばれる AWS::CodeDeploy::DeploymentGroup、<function-logical-id>
DeploymentGroupCodeDeployServiceRole
と呼ばれる AWS::IAM::Role を作成します。タイプ: DeploymentPreference
必須: いいえ
AWS CloudFormation との互換性: このプロパティは AWS SAM に固有であり、AWS CloudFormation に同等のものはありません。
その他の参照資料: このプロパティの詳細については、「サーバーレスアプリケーションの段階的なデプロイ」を参照してください。
-
Description
-
関数の説明です。
型: 文字列
必須: いいえ
AWS CloudFormation との互換性: このプロパティは、
AWS::Lambda::Function
リソースのDescription
プロパティに直接渡されます。 -
Environment
-
ランタイム環境の設定です。
タイプ: Environment
必須: いいえ
AWS CloudFormation との互換性: このプロパティは、
AWS::Lambda::Function
リソースのEnvironment
プロパティに直接渡されます。 -
EphemeralStorage
-
/tmp
の Lambda 関数で使用可能なディスク容量を MB 単位で指定するオブジェクト。このプロパティの詳細については、「AWS Lambda デベロッパーガイド」の「Lambda 実行環境」を参照してください。
必須: いいえ
AWS CloudFormation との互換性: このプロパティは、
AWS::Lambda::Function
リソースのEphemeralStorage
プロパティに直接渡されます。 -
EventInvokeConfig
-
Lambda 関数でのイベントの呼び出し設定を説明するオブジェクトです。
必須: いいえ
AWS CloudFormation との互換性: このプロパティは AWS SAM に固有であり、AWS CloudFormation に同等のものはありません。
-
Events
-
この関数をトリガーするイベントを指定します。イベントは、1 つのタイプと、そのタイプに依存する一連のプロパティで構成されます。
タイプ: EventSource
必須: いいえ
AWS CloudFormation との互換性: このプロパティは AWS SAM に固有であり、AWS CloudFormation に同等のものはありません。
-
FileSystemConfigs
-
Amazon Elastic File System (Amazon EFS) ファイルシステムの接続設定を指定する FileSystemConfig オブジェクトのリストです。
テンプレートに AWS::EFS::MountTarget リソースが含まれている場合は、
DependsOn
リソース属性を指定して、関数の前にマウントターゲットが作成または更新されることを確実にする必要があります。タイプ: リスト
必須: いいえ
AWS CloudFormation との互換性: このプロパティは、
AWS::Lambda::Function
リソースのFileSystemConfigs
プロパティに直接渡されます。 -
FunctionName
-
関数の名前です。名前を指定しない場合は、一意の名前が生成されます。
型: 文字列
必須: いいえ
AWS CloudFormation との互換性: このプロパティは、
AWS::Lambda::Function
リソースのFunctionName
プロパティに直接渡されます。 -
FunctionUrlConfig
-
関数 URL を記述するオブジェクトです。関数 URL は、関数を呼び出すために使用する HTTPS エンドポイントです。
詳細については、「AWS Lambda デベロッパーガイド」の「関数スケーリング」を参照してください。
必須: いいえ
AWS CloudFormation との互換性: このプロパティは AWS SAM に固有であり、AWS CloudFormation に同等のものはありません。
-
Handler
-
実行を開始するために呼び出されるコード内の関数です。このプロパティが必要になるのは、
PackageType
プロパティがZip
に設定されている場合のみです。型: 文字列
必須: 条件に応じて異なります
AWS CloudFormation との互換性: このプロパティは、
AWS::Lambda::Function
リソースのHandler
プロパティに直接渡されます。 -
ImageConfig
-
Lambda のコンテナイメージ設定に使用されるオブジェクトです。詳細については、AWS Lambda デベロッパーガイドの「Lambda でのコンテナイメージの使用」を参照してください。
タイプ: ImageConfig
必須: いいえ
AWS CloudFormation との互換性: このプロパティは、
AWS::Lambda::Function
リソースのImageConfig
プロパティに直接渡されます。 -
ImageUri
-
Lambda 関数のコンテナイメージ用の Amazon Elastic Container Registry (Amazon ECR) リポジトリの URI です。このプロパティは、
PackageType
プロパティがImage
に設定されている場合にのみ適用され、それ以外の場合は無視されます。詳細については、AWS Lambda デベロッパーガイドの「Lambda でのコンテナイメージの使用」を参照してください。注意:
PackageType
プロパティがImage
に設定されている場合は、ImageUri
が必要になります。または、AWS SAM テンプレートファイルで必要なMetadata
を使用してアプリケーションを構築する必要があります。詳細については、「アプリケーションの構築」を参照してください。必要な
Metadata
エントリを使用してアプリケーションを構築することは、ImageUri
よりも優先されるので、両方を指定すればImageUri
は無視されます。型: 文字列
必須: いいえ
AWS CloudFormation との互換性: このプロパティは、
AWS::Lambda::Function
Code
データ型のImageUri
プロパティに直接渡されます。 -
InlineCode
-
テンプレートに直接記述された Lambda 関数コードです。このプロパティは、
PackageType
プロパティがZip
に設定されている場合にのみ適用され、それ以外の場合は無視されます。注意:
PackageType
プロパティがZip
(デフォルト) に設定されている場合は、CodeUri
またはInlineCode
のいずれかが必要になります。型: 文字列
必須: 条件に応じて異なります
AWS CloudFormation との互換性: このプロパティは、
AWS::Lambda::Function
Code
データ型のZipFile
プロパティに直接渡されます。 -
KmsKeyArn
-
関数の環境変数の暗号化と復号化に Lambda が使用する AWS Key Management Service (AWS KMS) キーの ARN です。
型: 文字列
必須: いいえ
AWS CloudFormation との互換性: このプロパティは、
AWS::Lambda::Function
リソースのKmsKeyArn
プロパティに直接渡されます。 -
Layers
-
この関数が使用する必要がある
LayerVersion
ARN のリストです。ここで指定されている順序は、Lambda 関数の実行時にそれらがインポートされる順序です。タイプ: リスト
必須: いいえ
AWS CloudFormation との互換性: このプロパティは、
AWS::Lambda::Function
リソースのLayers
プロパティに直接渡されます。 -
MemorySize
-
関数の各呼び出しに割り当てられるメモリのサイズ (MB) です。
タイプ: 整数
必須: いいえ
AWS CloudFormation との互換性: このプロパティは、
AWS::Lambda::Function
リソースのMemorySize
プロパティに直接渡されます。 -
PackageType
-
Lambda 関数のデプロイパッケージタイプです。詳細については、AWS Lambda デベロッパーガイドの「Lambda デプロイパッケージ」を参照してください。
注意:
1. このプロパティが
Zip
(デフォルト) に設定されている場合は、CodeUri
またはInlineCode
が適用され、ImageUri
は無視されます。2. このプロパティが
Image
に設定されている場合は、ImageUri
のみが適用され、CodeUri
とInlineCode
は無視されます。functionsl コンテナイメージの保存に必要な Amazon ECR リポジトリは、AWS SAMCLI によって自動作成可能です。詳細については、「sam deploy」を参照してください。有効な値:
Zip
またはImage
型: 文字列
必須: いいえ
デフォルト:
Zip
AWS CloudFormation との互換性: このプロパティは、
AWS::Lambda::Function
リソースのPackageType
プロパティに直接渡されます。 -
PermissionsBoundary
-
この関数の実行ロールに使用するアクセス許可境界の ARN です。このプロパティは、ユーザーのためにロールが生成される場合にのみ機能します。
型: 文字列
必須: いいえ
AWS CloudFormation との互換性: このプロパティは、
AWS::IAM::Role
リソースのPermissionsBoundary
プロパティに直接渡されます。 -
Policies
-
この機能に必要な 1 つ、または複数のポリシーです。これらは、この関数のデフォルトロールに付加されます。
このプロパティは単一の文字列または文字列のリストを受け入れ、AWS 管理 ポリシーもしくは AWS SAM ポリシーテンプレートの名前、または YAML 形式のインライン IAM ポリシードキュメントにすることができます。
AWS 管理ポリシーの詳細については、IAM ユーザーガイドの「AWS 管理ポリシー」を参照してください。AWS SAM ポリシーテンプレートの詳細については、AWS Serverless Application Model デベロッパーガイドの「AWS SAM ポリシーテンプレート」を参照してください。インラインポリシーの詳細については、IAM ユーザーガイドの「インラインポリシー」を参照してください。
注意:
Role
プロパティが設定されている場合、このプロパティは無視されます。タイプ: 文字列 | リスト | マップ
必須: いいえ
AWS CloudFormation との互換性: このプロパティは、
AWS::IAM::Role
リソースのPolicies
プロパティに似ています。AWS SAM は、JSON ポリシードキュメントに加えて、AWS 管理ポリシー名と AWS SAM ポリシーテンプレートをサポートします。AWS CloudFormation は JSON ポリシードキュメントのみを受け入れます。 -
ProvisionedConcurrencyConfig
-
関数のエイリアスのプロビジョニングされた同時実行設定です。
注意:
ProvisionedConcurrencyConfig
を指定できるのは、AutoPublishAlias
が設定されている場合のみです。それ以外の場合は、エラーが発生します。タイプ: ProvisionedConcurrencyConfig
必須: いいえ
AWS CloudFormation との互換性: このプロパティは、
AWS::Lambda::Alias
リソースのProvisionedConcurrencyConfig
プロパティに直接渡されます。 -
ReservedConcurrentExecutions
-
関数用に予約する同時実行の最大数です。
このプロパティの詳細については、AWS Lambda デベロッパーガイドの「Lambda 関数スケーリング」を参照してください。
タイプ: 整数
必須: いいえ
AWS CloudFormation との互換性: このプロパティは、
AWS::Lambda::Function
リソースのReservedConcurrentExecutions
プロパティに直接渡されます。 -
Role
-
この関数の実行ロールとして使用する IAM ロールの ARN です。
型: 文字列
必須: いいえ
AWS CloudFormation との互換性: このプロパティは、
AWS::Lambda::Function
リソースのRole
プロパティに似ています。これは、AWS CloudFormation では必須ですが、AWS SAM では必須ではありません。ロールが指定されていない場合は、
の論理 ID を持つロールが作成されます。<function-logical-id>
Role -
Runtime
-
関数のランタイムの識別子です。このプロパティが必要になるのは、
PackageType
プロパティがZip
に設定されている場合のみです。注意: このプロパティに
provided
を指定する場合は、Metadata
リソースを使用て、この関数が必要とするカスタムランタイムを構築するよう AWS SAM に指示できます。カスタムランタイムの構築の詳細については、「カスタムランタイムの構築」を参照してください。型: 文字列
必須: 条件に応じて異なります
AWS CloudFormation との互換性: このプロパティは、
AWS::Lambda::Function
リソースのRuntime
プロパティに直接渡されます。 -
Tags
-
この関数に追加されるタグを指定するマップ (文字列対文字列) です。タグの有効なキーと値の詳細については、AWS Lambdaデベロッパーガイドのタグのキーと値の要件を参照してください。
スタックが作成されると、AWS SAM がこの Lambda 関数と、この関数のために生成されたデフォルトロールに
lambda:createdBy:SAM
タグを自動的に追加します。タイプ: マップ
必須: いいえ
AWS CloudFormation との互換性: このプロパティは、
AWS::Lambda::Function
リソースのTags
プロパティに似ています。AWS SAM のTags
プロパティはキーバリューペアで構成されています (これに対し、AWS CloudFormation では、Tag
オブジェクトのリストでこのプロパティが構成されます)。また、AWS SAM がこの Lambda 関数と、この関数のために生成されたデフォルトロールにlambda:createdBy:SAM
タグを自動的に追加します。 -
Timeout
-
関数が停止されるまでの最大実行時間 (秒) です。
タイプ: 整数
必須: いいえ
デフォルト: 3
AWS CloudFormation との互換性: このプロパティは、
AWS::Lambda::Function
リソースのTimeout
プロパティに直接渡されます。 -
Tracing
-
関数の X-Ray トレーシングモードを指定する文字列です。X-Ray の詳細については、AWS Lambda デベロッパーガイドの AWS X-Ray で AWS Lambda を使用するを参照してください。
有効な値:
Active
またはPassThrough
型: 文字列
必須: いいえ
AWS CloudFormation との互換性: このプロパティは、
AWS::Lambda::Function
リソースのTracingConfig
プロパティに似ています。Tracing
プロパティがActive
に設定されており、Role
プロパティが指定されていない場合、AWS SAM は、ユーザー用に作成する Lambda 実行ロールにarn:aws:iam::aws:policy/AWSXrayWriteOnlyAccess
ポリシーを追加します。 -
VersionDescription
-
新しい Lambda バージョンリソースに追加される
Description
フィールドを指定します。型: 文字列
必須: いいえ
AWS CloudFormation との互換性: このプロパティは、
AWS::Lambda::Version
リソースのDescription
プロパティに直接渡されます。 -
VpcConfig
-
この関数が Virtual Private Cloud (VPC) 内のプライベートリソースにアクセスすることを可能にする設定です。
タイプ: VpcConfig
必須: いいえ
AWS CloudFormation との互換性: このプロパティは、
AWS::Lambda::Function
リソースのVpcConfig
プロパティに直接渡されます。
戻り値
参照番号
このリソースの論理 ID が Ref
組み込み関数に提供されると、基盤となる Lambda 関数のリソース名が返されます。
Ref
関数の使用方法の詳細については、AWS CloudFormation ユーザーガイドの「Ref
」を参照してください。
Fn::GetAtt
Fn::GetAtt
は、このタイプの指定された属性の値を返します。利用可能な属性とサンプル戻り値は以下のとおりです。
Fn::GetAtt
の使用の詳細については、AWS CloudFormation ユーザーガイドの「Fn::GetAtt
」を参照してください。
例
シンプルな関数
以下は、AWS::Serverless::Function パッケージタイプ (デフォルト) の Zip
リソースと、Amazon S3 バケット内にある関数コードの基本的な例です。
YAML
Type: AWS::Serverless::Function Properties: Handler: index.handler Runtime: python3.6 CodeUri: s3://
bucket-name
/key-name
関数プロパティの例
以下は、InlineCode
、Layers
、Tracing
、Policies
、Amazon EFS
、および Api
イベントソースを使用する、AWS::Serverless::Function パッケージタイプ (デフォルト) の Zip
の例です。
YAML
Type: AWS::Serverless::Function DependsOn: MyMountTarget # This is needed if an AWS::EFS::MountTarget resource is declared for EFS Properties: Handler: index.handler Runtime: python3.6 InlineCode: | def handler(event, context): print("Hello, world!") ReservedConcurrentExecutions: 30 Layers: - Ref: MyLayer Tracing: Active Timeout: 120 FileSystemConfigs: - Arn: !Ref MyEfsFileSystem LocalMountPath: /mnt/EFS Policies: - AWSLambdaExecute - Version: '2012-10-17' Statement: - Effect: Allow Action: - s3:GetObject - s3:GetObjectACL Resource: 'arn:aws:s3:::
my-bucket
/*' Events: ApiEvent: Type: Api Properties: Path: /path Method: get
ImageConfig の例
以下は、Image
パッケージタイプの Lambda 関数向けの ImageConfig
の例です。
YAML
HelloWorldFunction: Type: AWS::Serverless::Function Properties: PackageType: Image ImageUri:
account-id
.dkr.ecr.region
.amazonaws.com/ecr-repo-name
:image-name
ImageConfig: Command: - "app.lambda_handler
" EntryPoint: - "entrypoint1
" WorkingDirectory: "workDir
"