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

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

AWS::Serverless::Function

创建Lambda函数、IAM执行角色以及触发函数的事件源映射。

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

语法

若要在您的 AWS 无服务器应用程序模型 (AWS SAM)模板,请使用以下语法。

属性

AssumeRolePolicyDocument

添加 AssumeRolePolicyDocument 所创建的默认值, Role 功能。如果这个属性未指定, AWS SAM 为此功能添加一个默认假设角色。

类型:JSON

必需: 否

AWS CloudFormation 兼容性: 该属性类似于 AssumeRolePolicyDocument 属性 AWS::IAM::Role 资源。 AWS SAM 将此属性添加到此函数的生成IAM角色。如果为此功能提供了角色ARN,则此属性不会执行任何操作。

AutoPublishAlias

名称 Lambda 别名。有关Lambda别名的更多信息,请参阅 AWSLambda函数别名. 有关使用此属性的示例,请参阅 逐步部署无服务器应用程序.

AWS SAM 产生 AWS::Lambda::版本AWS::Lambda::别名 资源。有关此场景的信息,请参阅 AutoPublishAlias 属性已指定. 有关已生成 AWS CloudFormation 资源,请参阅 已生成 AWS CloudFormation 资源.

类型:字符串

必需: 否

AWS CloudFormation 兼容性: 此属性是 AWS SAM 并且没有 AWS CloudFormation 等效。

AutoPublishCodeSha256

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

该属性解决了当 AWS SAM 模板具有以下特征: DeploymentPreference 对象已配置为逐步部署(如 逐步部署无服务器应用程序)、 AutoPublishAlias 属性已设置,且在部署和 CodeUri 属性已设置,且在部署之间不更改。

当部署包存储在 Amazon S3 位置被包含已更新的新部署包替换 Lambda 功能代码,但 CodeUri 属性保持不变(而不是将新的部署包上传到新的 Amazon S3 位置和 CodeUri 更改为新位置)。

在此场景中,您必须为 AutoPublishCodeSha256 以成功触发逐步部署。

类型:字符串

必需: 否

AWS CloudFormation 兼容性: 此属性是 AWS SAM 并且没有 AWS CloudFormation 等效。

CodeUri

的 Amazon S3 URI、本地文件路径或 FunctionCode 功能代码的对象。

如果 Amazon S3 URI或 FunctionCode 对象, Amazon S3 引用的对象必须是有效的 Lambda部署包.

如果提供了本地文件路径,则模板必须通过包含 sam deploysam package 命令,以便正确转换代码。

注意:或者 CodeUriInlineCode 为必填项。

类型:字符串| FunctionCode

必需: 条件

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

DeadLetterQueue

配置SNS主题或SQS队列,Lambda在其中发送其无法处理的事件。有关死字队列功能的更多信息,请参阅 AWSLambda功能死信队列.

类型:地图| DeadLetterQueue

必需: 否

AWS CloudFormation 兼容性: 该属性类似于 DeadLetterConfig 属性 AWS::Lambda::Function 资源。英寸 AWS CloudFormation 类型来自 TargetArn,而 AWS SAM 您必须将类型与 TargetArn.

DeploymentPreference

逐步启用的设置 Lambda 部署。

如果 DeploymentPreference 对象已指定, AWS SAM 会创建 AWS::代码部署::应用程序 已调用 ServerlessDeploymentApplication (每层一个),一个 AWS::代码部署::部署组 已调用 <function-logical-id>DeploymentGroupAWS::IAM::角色 已调用 CodeDeployServiceRole.

类型: DeploymentPreference

必需: 否

AWS CloudFormation 兼容性: 此属性是 AWS SAM 并且没有 AWS CloudFormation 等效。

另请参见: 查看 逐步部署无服务器应用程序 文档,了解有关此属性的更多信息。

Description

该函数的描述。

类型:字符串

必需: 否

AWS CloudFormation 兼容性: 此属性直接传递到 Description 属性 AWS::Lambda::Function 资源。

Environment

运行时环境的配置。

类型Environment

必需: 否

AWS CloudFormation 兼容性: 此属性直接传递到 Environment 属性 AWS::Lambda::Function 资源。

EventInvokeConfig

描述事件调用配置的对象 Lambda 功能。

类型: EventInvokeConfiguration

必需: 否

AWS CloudFormation 兼容性: 此属性是 AWS SAM 并且没有 AWS CloudFormation 等效。

Events

指定触发这个功能的事件。事件由取决于类型的类型和一组属性组成。

类型: EventSource

必需: 否

AWS CloudFormation 兼容性: 此属性是 AWS SAM 并且没有 AWS CloudFormation 等效。

FileSystemConfigs

列表 FileSystemConfig 指定连接设置的对象 Amazon EFS 文件系统。

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

类型:列表

必需: 否

AWS CloudFormation 兼容性: 此属性直接传递到 FileSystemConfigs 属性 AWS::Lambda::Function 资源。

FunctionName

函数的名称。如果您没有指定名称,则会为您生成一个唯一的名称。

类型:字符串

必需: 否

AWS CloudFormation 兼容性: 此属性直接传递到 FunctionName 属性 AWS::Lambda::Function 资源。

Handler

代码内用来开始执行的函数。

类型:字符串

必需: 是

AWS CloudFormation 兼容性: 此属性直接传递到 Handler 属性 AWS::Lambda::Function 资源。

InlineCode

的 Lambda 直接在模板中写入的功能代码。

注意:或者 CodeUriInlineCode 为必填项。

类型:字符串

必需: 条件

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

KmsKeyArn

Lambda用于加密和解密函数环境变量的AWS密钥管理服务(AWSKMS)密钥的Amazon资源名称(ARN)。

类型:字符串

必需: 否

AWS CloudFormation 兼容性: 此属性直接传递到 KmsKeyArn 属性 AWS::Lambda::Function 资源。

Layers

列表 LayerVersion ARNs 的功能。此处指定的顺序是在运行Lambda功能时导入顺序。

类型:列表

必需: 否

AWS CloudFormation 兼容性: 此属性直接传递到 Layers 属性 AWS::Lambda::Function 资源。

MemorySize

每次调用函数所分配的内存大小(MB)。

类型:整数

必需: 否

AWS CloudFormation 兼容性: 此属性直接传递到 MemorySize 属性 AWS::Lambda::Function 资源。

PermissionsBoundary

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

类型:字符串

必需: 否

AWS CloudFormation 兼容性: 此属性直接传递到 PermissionsBoundary 属性 AWS::IAM::Role 资源。

Policies

此功能需要的一个或多个策略。它们将附加到此功能的默认角色中。

此属性接受单个字符串或字符串列表。酒店可以是 AWS 管理的 AWS Identity and Access Management (人IAM)政策, AWS SAM 策略模板,或一个或多个在线策略文档的格式为地图。

有关AWS管理的IAM策略的更多信息,请参阅 AWS管理策略. 有关 AWS SAM 策略模板,请参阅 AWS SAM 策略模板. 有关内联策略的更多信息,请参阅 内联策略.

注意:如果 Role 属性已设置,此属性将被忽略。

类型:字符串|列表|映射

必需: 否

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

ProvisionedConcurrencyConfig

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

注意:ProvisionedConcurrencyConfig 只有当 AutoPublishAlias 设置为。否则,将出现错误。

类型: ProvisionedConcurrencyConfig

必需: 否

AWS CloudFormation 兼容性: 此属性直接传递到 ProvisionedConcurrencyConfig 属性 AWS::Lambda::Alias 资源。

ReservedConcurrentExecutions

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

有关此属性的更多信息,请参阅 AWSLambda功能扩展 AWSLambdaDeveloperGuide中的。

类型:整数

必需: 否

AWS CloudFormation 兼容性: 此属性直接传递到 ReservedConcurrentExecutions 属性 AWS::Lambda::Function 资源。

Role

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

类型:字符串

必需: 否

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

Runtime

函数的运行时的标识符。

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

类型:字符串

必需: 是

AWS CloudFormation 兼容性: 此属性直接传递到 Runtime 属性 AWS::Lambda::Function 资源。

Tags

指定添加到 Lambda 函数和相应的IAM执行角色。键和值限于个字母数字字符。密钥的长度可以是1至127个Unicode字符,不能以aws前缀:。数值可以是1至255个Unicode字符。

类型:Map

必需: 否

AWS CloudFormation 兼容性: 该属性类似于 Tags 属性 AWS::Lambda::Function 资源。中的标记属性 AWS SAM 由键:值对组成。英寸 AWS CloudFormation 它由标记对象的列表组成。当创建堆栈时, AWS SAM 自动添加 lambda:createdBy:SAM 标记到此 Lambda 函数和相应的IAM执行角色。

Timeout

该功能在被关闭之前可运行的最长时间,以秒为单位。

类型:整数

必需: 否

默认值:3

AWS CloudFormation 兼容性: 此属性直接传递到 Timeout 属性 AWS::Lambda::Function 资源。

Tracing

指定函数的字符串 X-Ray 跟踪模式。有关 X-Ray,请参阅 使用 AWS Lambda 配 AWS X-Ray AWSLambdaDeveloperGuide中的。

支持的值:ActivePassThrough.

类型:字符串

必需: 否

AWS CloudFormation 兼容性: 该属性类似于 TracingConfig 属性 AWS::Lambda::Function 资源。如果 Tracing 设定为 Active,然后 AWS SAM 将 arn:aws:iam::aws:policy/AWSXrayWriteOnlyAccess Lambda角色的政策。

VersionDescription

指定添加到新建的"说明"栏位, Lambda 版本资源。

类型:字符串

必需: 否

AWS CloudFormation 兼容性: 此属性直接传递到 Description 属性 AWS::Lambda::Version 资源。

VpcConfig

使此功能能够访问VPC内的专用资源的配置。

类型: VpcConfig

必需: 否

AWS CloudFormation 兼容性: 此属性直接传递到 VpcConfig 属性 AWS::Lambda::Function 资源。

返回值

Ref

当此资源的逻辑ID提供给 Ref 内在函数,则返回基本Lambda函数的资源名称。

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

Fn::GetAtt

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

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

Arn

底层Lambda函数的AmazonResourceName(ARN)。

示例

简单功能

以下是AWS::Serverless::FunctionResource的基本情况示例。

YAML

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

FunctionProperties示例

以下是一个AWS::Serverless::Functionthatusing InlineCode、跟踪、策略、图层、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