AWS::Serverless::Function - Amazon Serverless Application Model
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

AWS::Serverless::Function

创建Amazon Lambda函数,Amazon Identity and Access Management(IAM) 执行角色以及触发函数的事件源映射。

这些区域有:AWS::Serverless::Function资源也支持Metadata资源属性,因此您可以指示Amazon SAM来构建应用程序所需的自定义运行时。有关构建自定义运行时的更多信息,请参阅。构建自定义运行时

Syntax

要在Amazon Serverless Application Model(Amazon SAM) 模板,请使用以下语法。

Properties

AssumeRolePolicyDocument

为默认创建的Role为此函数。如果未指定该属性,Amazon SAM为此函数添加默认担任角色。

类型:JSON

必需:否

Amazon CloudFormation兼容性:此属性类似于AssumeRolePolicyDocument属性。AWS::IAM::Role资源的费用。Amazon SAM将此属性添加到为此函数生成的 IAM 角色中。如果为该函数提供角色的 Amazon 资源名称 (ARN),则该属性不执行任何操作。

AutoPublishAlias

Lambda 别名的名称。有关 Lambda 别名的更多信息,请参阅Lambda 函数别名中的Amazon Lambda开发人员指南。有关使用此属性的示例,请参阅逐步部署无服务器应用程序

Amazon SAM生成AWS::Lambda::VersionAWS::Lambda::Alias资源设置此属性时。有关此方案的信息,请参阅AutoPublishAlias 属性已指定。有关的一般信息。Amazon CloudFormation资源,请参阅生成Amazon CloudFormationresources

类型:字符串

必需:否

Amazon CloudFormation兼容性:对是唯一的。Amazon SAM并且不提供Amazon CloudFormation等效配置

AutoPublishCodeSha256

所使用的字符串值以及CodeUri,以确定是否应发布新的 Lambda 版本。

此属性解决了一个问题,当Amazon SAM模板具有以下特性:DeploymentPreference对象配置为逐步部署(如逐步部署无服务器应用程序)、AutoPublishAlias属性,并且不会在部署之间更改,CodeUri属性,并且不会在部署之间更改。

如果存储在 Amazon 简单存储服务 (Amazon S3) 位置中的部署包被替换为包含更新的 Lambda 函数代码的新部署包,但CodeUri属性保持不变(与上传到新 Amazon S3 位置的新部署包和CodeUri被更改为新位置)。

在这种情况下,若要成功触发逐步部署,您必须提供AutoPublishCodeSha256

类型:字符串

必需:否

Amazon CloudFormation兼容性:对是唯一的。Amazon SAM并且不提供Amazon CloudFormation等效配置

CodeSigningConfigArn

ARNAWS::Lambda::CodeSigningConfig资源,用于为此函数启用代码签名。有关代码签名的更多信息,请参阅为 配置代码签名Amazon SAMapplications

类型:字符串

必需:否

Amazon CloudFormation兼容性:此属性将直接传递给CodeSigningConfigArn属性。AWS::Lambda::Function资源的费用。

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。默认情况下,相对路径会根据Amazon SAM模板的位置。

类型:字符串 |函数代码

必需:条件

Amazon CloudFormation兼容性:此属性类似于Code属性。AWS::Lambda::Function资源的费用。嵌套的 Amazon S3 属性的命名不同。

DeadLetterQueue

配置 Amazon Simple Notification Service (Amazon SNS) 主题或 Amazon Simple Queue Service (Amazon SQS) 队列,其中 Lambda 将发送其无法处理的事件。有关死信队列功能的更多信息,请参阅。Amazon Lambda函数死信队列中的Amazon Lambda开发人员指南

注意:如果 Lambda 函数的事件源是 Amazon SQS 队列,请为源队列配置死信队列,而不是 Lambda 函数。为函数配置死信队列用于函数的异步调用队列,而不适用于事件源队列。

类型:Map死信队列

必需:否

Amazon CloudFormation兼容性:此属性类似于DeadLetterConfig属性。AWS::Lambda::Function资源的费用。InAmazon CloudFormation类型派生自TargetArn,而在Amazon SAM您必须将类型与TargetArn

DeploymentPreference

启用渐进 Lambda 部署的设置。

如果DeploymentPreference对象,Amazon SAM创建AWS::CodeDeploy::ApplicationCALServerlessDeploymentApplication(每个堆栈一个),AWS::CodeDeploy::DeploymentGroupCAL<function-logical-id>DeploymentGroup,以及AWS::IAM::RoleCALCodeDeployServiceRole

类型DeploymentPreference

必需:否

Amazon CloudFormation兼容性:对是唯一的。Amazon SAM并且不提供Amazon CloudFormation等效配置

另请参阅:有关此属性的更多信息,请参阅逐步部署无服务器应用程序

Description

该函数的描述。

类型:字符串

必需:否

Amazon CloudFormation兼容性:此属性将直接传递给Description属性。AWS::Lambda::Function资源的费用。

Environment

运行时环境的配置。

类型环境

必需:否

Amazon CloudFormation兼容性:此属性将直接传递给Environment属性。AWS::Lambda::Function资源的费用。

EventInvokeConfig

描述 Lambda 函数上的事件调用配置的对象。

类型事件调用配置

必需:否

Amazon CloudFormation兼容性:对是唯一的。Amazon SAM并且不提供Amazon CloudFormation等效配置

Events

指定触发此函数的事件。事件由一个类型和一组取决于类型的属性组成。

类型EventSource

必需:否

Amazon CloudFormation兼容性:对是唯一的。Amazon SAM并且不提供Amazon CloudFormation等效配置

FileSystemConfigs

的列表FileSystemConfig对象,指定 Amazon Elastic File System (Amazon EFS) 文件系统的连接设置。

如果您的模板包含AWS::EFS::MountTarget资源,您还必须指定DependsOn资源属性,以确保在函数之前创建或更新装载目标。

类型:List

必需:否

Amazon CloudFormation兼容性:此属性将直接传递给FileSystemConfigs属性。AWS::Lambda::Function资源的费用。

FunctionName

函数的名称。如果未指定名称,将为您生成一个唯一名称。

类型:字符串

必需:否

Amazon CloudFormation兼容性:此属性将直接传递给FunctionName属性。AWS::Lambda::Function资源的费用。

Handler

代码中调用以开始执行的函数。此属性仅在PackageType属性将设定为Zip

类型:字符串

必需:条件

Amazon CloudFormation兼容性:此属性将直接传递给Handler属性。AWS::Lambda::Function资源的费用。

ImageConfig

用于配置 Lambda 容器映像设置的对象。有关更多信息,请参阅 。将容器映像与 Lambda 一起使用中的Amazon Lambda开发人员指南

类型ImageConfig

必需:否

Amazon CloudFormation兼容性:此属性将直接传递给ImageConfig属性。AWS::Lambda::Function资源的费用。

ImageUri

Lambda 函数的容器映像的 Amazon Elastic Container Registry (Amazon ECR) 存储库的 URI。此属性仅适用于PackageType属性将设定为Image,否则将忽略它。有关更多信息,请参阅 。将容器映像与 Lambda 一起使用中的Amazon Lambda开发人员指南

注意:如果PackageType属性将设定为Image,然后ImageUri是必需的,或者您必须使用必要的Metadata条目。Amazon SAM模板文件。有关更多信息,请参阅 生成应用程序

类型:字符串

必需:否

Amazon CloudFormation兼容性:此属性将直接传递给ImageUri属性AWS::Lambda::Function Code数据类型。

InlineCode

直接在模板中编写的 Lambda 函数代码。此属性仅适用于PackageType属性将设定为Zip,否则将忽略它。

注意:如果PackageType属性将设定为Zip(默认值),然后其中一个CodeUri或者InlineCode是必需的。

类型:字符串

必需:条件

Amazon CloudFormation兼容性:此属性将直接传递给ZipFile属性AWS::Lambda::Function Code数据类型。

KmsKeyArn

的 ARNAmazon Key Management Service(Amazon KMS)密钥,Lambda 用于加密和解密函数的环境变量。

类型:字符串

必需:否

Amazon CloudFormation兼容性:此属性将直接传递给KmsKeyArn属性。AWS::Lambda::Function资源的费用。

Layers

列表LayerVersion此函数应使用的 ARN。此处指定的顺序是运行 Lambda 函数时它们的导入顺序。

类型:List

必需:否

Amazon CloudFormation兼容性:此属性将直接传递给Layers属性。AWS::Lambda::Function资源的费用。

MemorySize

每次调用函数分配的内存大小(以 MB 为单位)。

类型:整数

必需:否

Amazon CloudFormation兼容性:此属性将直接传递给MemorySize属性。AWS::Lambda::Function资源的费用。

PackageType

Lambda 函数的部署程序包类型。有关更多信息,请参阅 。Lambda 部署程序包中的Amazon Lambda开发人员指南

备注:

1. 如果该属性设置为Zip(默认值),则CodeUri或者InlineCode适用,并且ImageUri将忽略。

2. 如果该属性设置为Image,则仅限。ImageUri适用,并且CodeUriInlineCode将被忽略。

有效值ZipImage

类型:字符串

必需:否

默认值Zip

Amazon CloudFormation兼容性:此属性将直接传递给PackageType属性。AWS::Lambda::Function资源的费用。

PermissionsBoundary

用于此函数执行角色的权限边界的 ARN。仅当为您生成角色时,此属性才有效。

类型:字符串

必需:否

Amazon CloudFormation兼容性:此属性将直接传递给PermissionsBoundary属性。AWS::IAM::Role资源的费用。

Policies

此函数需要的一个或多个策略。它们将被附加到此函数的默认角色。

此属性接受单个字符串或字符串列表,并且可以是Amazon托管策略或Amazon SAM策略模板或以 YAML 格式化的内联 IAM 策略文档。

有关 的更多信息Amazon托管策略,请参阅Amazon托管策略(在 IAM 用户指南中)。有关 的更多信息Amazon SAM策略模板,请参阅Amazon SAM策略模板中的Amazon Serverless Application Model开发人员指南 的第一个版本。有关内联策略的更多信息,请参阅内联策略(在 IAM 用户指南中)。

注意:如果Role属性,将忽略该属性。

类型:字符串 | 列表 | 地图

必需:否

Amazon CloudFormation兼容性:此属性类似于Policies属性。AWS::IAM::Role资源的费用。Amazon SAM支持Amazon托管策略名称和Amazon SAM策略模板,以及 JSON 策略文档。Amazon CloudFormation仅接受 JSON 策略文档。

ProvisionedConcurrencyConfig

函数别名的预置并发配置。

注意ProvisionedConcurrencyConfig只有在AutoPublishAlias设置。否则将导致出现错误。

类型ProvisionedConcurrencyConfig

必需:否

Amazon CloudFormation兼容性:此属性将直接传递给ProvisionedConcurrencyConfig属性。AWS::Lambda::Alias资源的费用。

ReservedConcurrentExecutions

要为该函数预留的最大并发执行次数。

有关此属性的更多信息,请参阅Lambda 函数缩放中的Amazon Lambda开发人员指南

类型:整数

必需:否

Amazon CloudFormation兼容性:此属性将直接传递给ReservedConcurrentExecutions属性。AWS::Lambda::Function资源的费用。

Role

用作此函数执行角色的 IAM 角色的 ARN。

类型:字符串

必需:否

Amazon CloudFormation兼容性:此属性类似于Role属性。AWS::Lambda::Function资源的费用。这是必需的Amazon CloudFormation但不在Amazon SAM。如果未指定角色,则会为您创建一个逻辑 ID 为<function-logical-id>Role

Runtime

函数的运行时的标识符。此属性仅在PackageType属性将设定为Zip

注意:如果您指定provided标识符,您可以使用Metadata要指示的资源属性Amazon SAM来构建此函数所需的自定义运行时。有关构建自定义运行时的更多信息,请参阅。构建自定义运行时

类型:字符串

必需:条件

Amazon CloudFormation兼容性:此属性将直接传递给Runtime属性。AWS::Lambda::Function资源的费用。

Tags

一个映射(字符串到字符串),指定添加到此函数的标签。键和值只能包含字母数字字符。密钥的长度可以为 1 到 127 个 Unicode 字符并且不能以为前缀aws:。值的长度可以包含 1 和 255 个 Unicode 字符。

堆栈创建后,Amazon SAM会自动添加一个lambda:createdBy:SAM标签添加到此 Lambda 函数以及为此函数生成的默认角色。

类型:映射

必需:否

Amazon CloudFormation兼容性:此属性类似于Tags属性。AWS::Lambda::Function资源的费用。这些区域有:Tags属性Amazon SAM包括键值对(而Amazon CloudFormation此属性包含Tag对象的费用。此外,Amazon SAM会自动添加一个lambda:createdBy:SAM标签添加到此 Lambda 函数以及为此函数生成的默认角色。

Timeout

函数停止之前可以运行的最长时间(以秒为单位)。

类型:整数

必需:否

默认值:3

Amazon CloudFormation兼容性:此属性将直接传递给Timeout属性。AWS::Lambda::Function资源的费用。

Tracing

指定函数的 X-Ray 跟踪模式的字符串。有关 X-Ray 的更多信息,请参阅。使用Amazon Lambda替换为Amazon X-Ray中的Amazon Lambda开发人员指南

有效值ActivePassThrough

类型:字符串

必需:否

Amazon CloudFormation兼容性:此属性类似于TracingConfig属性。AWS::Lambda::Function资源的费用。如果Tracing属性将设定为ActiveRole属性,则Amazon SAM添加arn:aws:iam::aws:policy/AWSXrayWriteOnlyAccess策略设置为它为您创建的 Lambda 执行角色。

VersionDescription

指定Description字段,该字段将添加到新的 Lambda 版本资源上。

类型:字符串

必需:否

Amazon CloudFormation兼容性:此属性将直接传递给Description属性。AWS::Lambda::Version资源的费用。

VpcConfig

使该函数能够访问您的虚拟私有云 (VPC) 中的私有资源的配置。

类型VpcConfig

必需:否

Amazon CloudFormation兼容性:此属性将直接传递给VpcConfig属性。AWS::Lambda::Function资源的费用。

返回值

Ref

当该资源的逻辑 ID 提供给Ref内部函数,它返回底层 Lambda 函数的资源名称。

有关使用的更多信息,请使用Ref函数,请参阅Ref中的用户指南

Fn::GetAtt

Fn::GetAtt 返回一个此类型指定属性的值。以下为可用属性和示例返回值。

有关使用的更多信息Fn::GetAtt,请参阅Fn::GetAtt中的用户指南

Arn

底层 Lambda 函数的 ARN。

Examples

简便函数

以下是一个基本示例,AWS::Serverless::Function程序包类型的资源Zip(默认值)和函数代码。

YAML

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

函数属性示例

以下是一个示例AWS::Serverless::Function软件包类型Zip(默认值),它使用InlineCodeLayersTracingPoliciesAmazon EFS,以及Api事件源。

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包类型的 Lambda 函数Image

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"