AWS::Serverless::Function - AWS Serverless Application Model

AWS::Serverless::Function

AWS Lambda 関数、AWS Identity and Access Management (IAM) 実行ロール、およびこの関数をトリガーするイベントソースマッピングを作成します。

AWS::Serverless::Function リソースは Metadata リソース属性もサポートするため、アプリケーションが必要とするカスタムランタイムを構築するよう AWS SAM に指示できます。カスタムランタイムの構築の詳細については、「カスタムランタイムの構築」を参照してください。

Syntax

AWS Serverless Application Model (AWS SAM) テンプレートでこのエンティティを宣言するには、以下の構文を使用します。

Properties

Architectures

関数の命令セットアーキテクチャ。

このプロパティの詳細については、AWS Lambda デベロッパーガイドの「Lambda 命令セットアーキテクチャ」を参照してください。

有効な値: x86_64 または arm64 のいずれか。

タイプ: リスト

Required: No

デフォルト: x86_64

AWS CloudFormation との互換性: このプロパティは、AWS::Lambda::Function リソースの Architectures プロパティに直接渡されます。

AssumeRolePolicyDocument

この関数用に作成されたデフォルト Role の AssumeRolePolicyDocument を追加します。このプロパティが指定されていない場合は、AWS SAM がこの関数のデフォルトの assume ロールを追加します。

Type: JSON

Required: No

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 リソース」を参照してください。

型: 文字列

Required: No

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 に一意の値を提供する必要があります。

型: 文字列

Required: No

AWS CloudFormation との互換性: このプロパティは AWS SAM に固有であり、AWS CloudFormation に同等のものはありません。

CodeSigningConfigArn

AWS::Lambda::CodeSigningConfig リソースの ARN で、この関数のコード署名を有効にするために使用されます。コード署名の詳細については、「AWS SAM アプリケーションのためのコード署名の設定」を参照してください。

型: 文字列

Required: No

AWS CloudFormation との互換性: このプロパティは、AWS::Lambda::Function リソースの CodeSigningConfigArn プロパティに直接渡されます。

CodeUri

関数コードの Amazon S3 URI、ローカルフォルダへのパス、または FunctionCode オブジェクトです。このプロパティは、PackageType プロパティが Zip に設定されている場合にのみ適用され、それ以外の場合は無視されます。

注意:

1. PackageTypeZip (デフォルト) に設定されていると、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

Required: No

AWS CloudFormation との互換性: このプロパティは、AWS::Lambda::Function リソースの DeadLetterConfig プロパティに似ています。AWS CloudFormation では、タイプが TargetArn から導出されますが、AWS SAM では TargetArn と共にタイプを渡す必要があります。

DeploymentPreference

段階的な Lambda デプロイを有効にする設定です。

DeploymentPreference オブジェクトが指定されると、AWS SAM は ServerlessDeploymentApplication と呼ばれる AWS::CodeDeploy::Application(スタックごとに 1 つ)、<function-logical-id>DeploymentGroup と呼ばれる AWS::CodeDeploy::DeploymentGroupCodeDeployServiceRole と呼ばれる AWS::IAM::Role を作成します。

タイプ: DeploymentPreference

Required: No

AWS CloudFormation との互換性: このプロパティは AWS SAM に固有であり、AWS CloudFormation に同等のものはありません。

その他の参照資料: このプロパティの詳細については、「サーバーレスアプリケーションの段階的なデプロイ」を参照してください。

Description

関数の説明です。

型: 文字列

Required: No

AWS CloudFormation との互換性: このプロパティは、AWS::Lambda::Function リソースの Description プロパティに直接渡されます。

Environment

ランタイム環境の設定です。

タイプ: Environment

Required: No

AWS CloudFormation との互換性: このプロパティは、AWS::Lambda::Function リソースの Environment プロパティに直接渡されます。

EventInvokeConfig

Lambda 関数でのイベントの呼び出し設定を説明するオブジェクトです。

タイプ: EventInvokeConfiguration

Required: No

AWS CloudFormation との互換性: このプロパティは AWS SAM に固有であり、AWS CloudFormation に同等のものはありません。

Events

この関数をトリガーするイベントを指定します。イベントは、1 つのタイプと、そのタイプに依存する一連のプロパティで構成されます。

タイプ: EventSource

Required: No

AWS CloudFormation との互換性: このプロパティは AWS SAM に固有であり、AWS CloudFormation に同等のものはありません。

FileSystemConfigs

Amazon Elastic File System (Amazon EFS) ファイルシステムの接続設定を指定する FileSystemConfig オブジェクトのリストです。

テンプレートに AWS::EFS::MountTarget リソースが含まれている場合は、DependsOn リソース属性を指定して、関数の前にマウントターゲットが作成または更新されることを確実にする必要があります。

タイプ: リスト

Required: No

AWS CloudFormation との互換性: このプロパティは、AWS::Lambda::Function リソースの FileSystemConfigs プロパティに直接渡されます。

FunctionName

関数の名前です。名前を指定しない場合は、一意の名前が生成されます。

型: 文字列

Required: No

AWS CloudFormation との互換性: このプロパティは、AWS::Lambda::Function リソースの FunctionName プロパティに直接渡されます。

Handler

実行を開始するために呼び出されるコード内の関数です。このプロパティが必要になるのは、PackageType プロパティが Zip に設定されている場合のみです。

型: 文字列

必須: 条件に応じて異なります

AWS CloudFormation との互換性: このプロパティは、AWS::Lambda::Function リソースの Handler プロパティに直接渡されます。

ImageConfig

Lambda のコンテナイメージ設定に使用されるオブジェクトです。詳細については、AWS Lambda デベロッパーガイドの「Lambda でのコンテナイメージの使用」を参照してください。

タイプ: ImageConfig

Required: No

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 は無視されます。

型: 文字列

Required: No

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 です。

型: 文字列

Required: No

AWS CloudFormation との互換性: このプロパティは、AWS::Lambda::Function リソースの KmsKeyArn プロパティに直接渡されます。

Layers

この関数が使用する必要がある LayerVersion ARN のリストです。ここで指定されている順序は、Lambda 関数の実行時にそれらがインポートされる順序です。

タイプ: リスト

Required: No

AWS CloudFormation との互換性: このプロパティは、AWS::Lambda::Function リソースの Layers プロパティに直接渡されます。

MemorySize

関数の各呼び出しに割り当てられるメモリのサイズ (MB) です。

タイプ: 整数

Required: No

AWS CloudFormation との互換性: このプロパティは、AWS::Lambda::Function リソースの MemorySize プロパティに直接渡されます。

PackageType

Lambda 関数のデプロイパッケージタイプです。詳細については、AWS Lambda デベロッパーガイドの「Lambda デプロイパッケージ」を参照してください。

注意:

1. このプロパティが Zip (デフォルト) に設定されている場合は、CodeUri または InlineCode が適用され、ImageUri は無視されます。

2. このプロパティが Image に設定されている場合は、ImageUri のみが適用され、CodeUriInlineCode は無視されます。functionsl コンテナイメージの保存に必要な Amazon ECR リポジトリは、AWS SAMCLI によって自動作成可能です。詳細については、「sam deploy」を参照してください。

有効な値: Zip または Image

型: 文字列

Required: No

デフォルト: Zip

AWS CloudFormation との互換性: このプロパティは、AWS::Lambda::Function リソースの PackageType プロパティに直接渡されます。

PermissionsBoundary

この関数の実行ロールに使用するアクセス許可境界の ARN です。このプロパティは、ユーザーのためにロールが生成される場合にのみ機能します。

型: 文字列

Required: No

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 プロパティが設定されている場合、このプロパティは無視されます。

タイプ: 文字列 | リスト | マップ

Required: No

AWS CloudFormation との互換性: このプロパティは、AWS::IAM::Role リソースの Policies プロパティに似ています。AWS SAM は、JSON ポリシードキュメントに加えて、AWS 管理ポリシー名と AWS SAM ポリシーテンプレートをサポートします。AWS CloudFormation は JSON ポリシードキュメントのみを受け入れます。

ProvisionedConcurrencyConfig

関数のエイリアスのプロビジョニングされた同時実行設定です。

注意: ProvisionedConcurrencyConfig を指定できるのは、AutoPublishAlias が設定されている場合のみです。それ以外の場合は、エラーが発生します。

タイプ: ProvisionedConcurrencyConfig

Required: No

AWS CloudFormation との互換性: このプロパティは、AWS::Lambda::Alias リソースの ProvisionedConcurrencyConfig プロパティに直接渡されます。

ReservedConcurrentExecutions

関数用に予約する同時実行の最大数です。

このプロパティの詳細については、AWS Lambda デベロッパーガイドの「Lambda 関数スケーリング」を参照してください。

タイプ: 整数

Required: No

AWS CloudFormation との互換性: このプロパティは、AWS::Lambda::Function リソースの ReservedConcurrentExecutions プロパティに直接渡されます。

Role

この関数の実行ロールとして使用する IAM ロールの ARN です。

型: 文字列

Required: No

AWS CloudFormation との互換性: このプロパティは、AWS::Lambda::Function リソースの Role プロパティに似ています。これは、AWS CloudFormation では必須ですが、AWS SAM では必須ではありません。ロールが指定されていない場合は、<function-logical-id>Role の論理 ID を持つロールが作成されます。

Runtime

関数のランタイムの識別子です。このプロパティが必要になるのは、PackageType プロパティが Zip に設定されている場合のみです。

注意: このプロパティに provided を指定する場合は、Metadata リソースを使用て、この関数が必要とするカスタムランタイムを構築するよう AWS SAM に指示できます。カスタムランタイムの構築の詳細については、「カスタムランタイムの構築」を参照してください。

型: 文字列

必須: 条件に応じて異なります

AWS CloudFormation との互換性: このプロパティは、AWS::Lambda::Function リソースの Runtime プロパティに直接渡されます。

Tags

この関数に追加されるタグを指定するマップ (文字列対文字列) です。タグの有効なキーと値の詳細については、AWS Lambdaデベロッパーガイドタグのキーと値の要件を参照してください。

スタックが作成されると、AWS SAM がこの Lambda 関数と、この関数のために生成されたデフォルトロールに lambda:createdBy:SAM タグを自動的に追加します。

タイプ: マップ

Required: No

AWS CloudFormation との互換性: このプロパティは、AWS::Lambda::Function リソースの Tags プロパティに似ています。AWS SAM の Tags プロパティはキーバリューペアで構成されています (これに対し、AWS CloudFormation では、Tag オブジェクトのリストでこのプロパティが構成されます)。また、AWS SAM がこの Lambda 関数と、この関数のために生成されたデフォルトロールに lambda:createdBy:SAM タグを自動的に追加します。

Timeout

関数が停止されるまでの最大実行時間 (秒) です。

タイプ: 整数

Required: No

デフォルト: 3

AWS CloudFormation との互換性: このプロパティは、AWS::Lambda::Function リソースの Timeout プロパティに直接渡されます。

Tracing

関数の X-Ray トレーシングモードを指定する文字列です。X-Ray の詳細については、AWS Lambda デベロッパーガイドの「AWS X-Ray で AWS AWS Lambda を使用する」を参照してください。

有効な値: Active または PassThrough

型: 文字列

Required: No

AWS CloudFormation との互換性: このプロパティは、AWS::Lambda::Function リソースの TracingConfig プロパティに似ています。Tracing プロパティが Active に設定されており、Role プロパティが指定されていない場合、AWS SAM は、ユーザー用に作成する Lambda 実行ロールに arn:aws:iam::aws:policy/AWSXrayWriteOnlyAccess ポリシーを追加します。

VersionDescription

新しい Lambda バージョンリソースに追加される Description フィールドを指定します。

型: 文字列

Required: No

AWS CloudFormation との互換性: このプロパティは、AWS::Lambda::Version リソースの Description プロパティに直接渡されます。

VpcConfig

この関数が Virtual Private Cloud (VPC) 内のプライベートリソースにアクセスすることを可能にする設定です。

タイプ: VpcConfig

Required: No

AWS CloudFormation との互換性: このプロパティは、AWS::Lambda::Function リソースの VpcConfig プロパティに直接渡されます。

戻り値

Ref

このリソースの論理 ID が Ref 組み込み関数に提供されると、基盤となる Lambda 関数のリソース名が返されます。

Ref 関数の使用方法の詳細については、 AWS CloudFormation ユーザーガイドの「Ref」を参照してください。

Fn::GetAtt

Fn::GetAtt は、このタイプの指定された属性の値を返します。利用可能な属性とサンプル戻り値は以下のとおりです。

Fn::GetAtt の使用の詳細については、 AWS CloudFormation ユーザーガイドの「Fn::GetAtt」を参照してください。

Arn

基盤となる Lambda 関数の ARN です。

Examples

シンプルな関数

以下は、AWS::Serverless::Function パッケージタイプ (デフォルト) の Zip リソースと、Amazon S3 バケット内にある関数コードの基本的な例です。

YAML

Type: AWS::Serverless::Function Properties: Handler: index.handler Runtime: python3.6 CodeUri: s3://bucket-name/key-name

関数プロパティの例

以下は、InlineCodeLayersTracingPoliciesAmazon 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"