本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
AWS::Serverless::Function
创建Amazon Lambda函数,Amazon Identity and Access Management(IAM) 执行角色和触发函数的事件源映射。
这些区域有:AWS::Serverless::Function资源也支持Metadata
资源属性,所以你可以指示Amazon SAM以构建应用程序所需的自定义运行时。有关构建自定义运行时的更多信息,请参阅。构建自定义运行时.
语法
要在您的中声明此实体Amazon Serverless Application Model(Amazon 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
EventInvokeConfig:EventInvokeConfiguration
Events:EventSource
FileSystemConfigs:List
FunctionName:String
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
属性
-
Architectures
-
函数的指令集架构。
有关此属性的更多信息,请参阅。Lambda 指令集架构中的Amazon Lambda开发人员指南.
有效值:其中之一
x86_64
要么arm64
类型:List
必需:否
默认值:
x86_64
Amazon CloudFormation兼容性:此属性将直接传递给
Architectures
的财产AWS::Lambda::Function
资源。 -
AssumeRolePolicyDocument
-
为创建的默认值添加一个 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::Version和AWS::Lambda::Alias设置此属性时的资源。有关此方案的信息,请参阅。指定了 AutoPublishAlias 属性. 有关生成的一般信息Amazon CloudFormation资源,请参阅生成Amazon CloudFormation资源.
类型:字符串
必需:否
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 SAM应用程序.
类型:字符串
必需:否
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 构建然后是sam deploy要么sam package. 默认情况下,相对路径是相对于Amazon SAM模板的位置。
类型:字符串 |FunctionCode
必需:条件
Amazon CloudFormation兼容性:此属性类似于
Code
的财产AWS::Lambda::Function
资源。嵌套的 Amazon S3 属性的命名方式不同。 -
DeadLetterQueue
-
配置 Amazon Simple Notification Service (Amazon SNS) 主题或 Amazon Simple Queue Service (Amazon SQS) 队列。有关死信队列功能的更多信息,请参阅。Amazon Lambda函数死信队列中的Amazon Lambda开发人员指南.
注意:如果 Lambda 函数的事件源是 Amazon SQS 队列,请为源队列而不是 Lambda 函数配置死信队列。您为函数配置的死信队列用于函数的异步调用队列,不适用于事件源队列。
类型:地图 |DeadLetter 队列
必需:否
Amazon CloudFormation兼容性:此属性类似于
DeadLetterConfig
的财产AWS::Lambda::Function
资源。InAmazon CloudFormation该类型派生自TargetArn
,而在Amazon SAM你必须将类型与TargetArn
. -
DeploymentPreference
-
用于启用渐进 Lambda 部署的设置。
如果
DeploymentPreference
已指定对象,Amazon SAM创建AWS::CodeDeploy::Application叫ServerlessDeploymentApplication
(每个堆栈一个),AWS::CodeDeploy::DeploymentGroup叫
,还有AWS::IAM::Role叫<function-logical-id>
DeploymentGroupCodeDeployServiceRole
.必需:否
Amazon CloudFormation兼容性:该属性对是唯一的Amazon SAM而且没有Amazon CloudFormation等效项
另请参阅:有关此属性的更多信息,请参阅逐步部署无服务器应用程。
-
Description
-
该函数的描述。
类型:字符串
必需:否
Amazon CloudFormation兼容性:此属性将直接传递给
Description
的财产AWS::Lambda::Function
资源。 -
Environment
-
运行时环境的配置。
类型: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模板文件。有关更多信息,请参阅 生成应用。使用必要的方式构建应用
Metadata
条目优先于ImageUri
,所以如果你同时指定两者那么ImageUri
将忽略。类型:字符串
必需:否
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
适用,而且两者都有CodeUri
和InlineCode
将忽略。存储功能容器映像所需的 Amazon ECR 存储库可以由Amazon SAMCLI。有关更多信息,请参阅 sam deploy。有效值:
Zip
或Image
类型:字符串
必需:否
默认值:
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
-
指定添加到该函数的标签的映射(字符串到字符串)。有关标签的有效密钥和值的详细信息,请参阅标签键和值要求中的Amazon Lambda开发人员指南.
创建堆栈时,Amazon SAM自动添加
lambda:createdBy:SAM
标签到此 Lambda 函数,以及为此函数生成的默认角色。类型:Map
必需:否
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开发人员指南.
有效值:
Active
或PassThrough
类型:字符串
必需:否
Amazon CloudFormation兼容性:此属性类似于
TracingConfig
的财产AWS::Lambda::Function
资源。如果Tracing
属性将设定为Active
和Role
没有指定属性,那么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
中的Amazon CloudFormation用户指南.
Fn::GetAtt
Fn::GetAtt
返回一个此类型指定属性的值。以下为可用属性和示例返回值。
有关如何使用的更多信息Fn::GetAtt
,请参阅Fn::GetAtt
中的Amazon CloudFormation用户指南.
示例
简单函数
以下是一个基本示例AWS::Serverless::Function程序包类型的资源Zip
Amazon S3 存储桶中的函数代码。
YAML
Type: AWS::Serverless::Function Properties: Handler: index.handler Runtime: python3.6 CodeUri: s3://
bucket-name
/key-name
示例
以下是一个示例AWS::Serverless::Function的程序包类型Zip
(默认)使用InlineCode
、Layers
、Tracing
、Policies
、Amazon 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 示例
以下是一个示例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
"