本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
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
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
RolePath:String
Runtime:String
RuntimeManagementConfig:RuntimeManagementConfig
SnapStart:SnapStart
Tags:Map
Timeout:Integer
Tracing:String
VersionDescription:String
VpcConfig:VpcConfig
属性
-
Architectures
-
该函数的指令集架构。
有关此属性的更多信息,请参阅Amazon Lambda开发者指南中的 Lambda 指令集架构。
有效值:
x86_64
或中的一个arm64
类型:清单
必需:否
默认值:
x86_64
Amazon CloudFormation兼容性:此属性直接传递给
AWS::Lambda::Function
资源的Architectures
属性。 -
AssumeRolePolicyDocument
-
为 AssumeRolePolicyDocument 为此函数创建
Role
的默认值添加一个。如果未指定此属性,则为该函数Amazon SAM添加默认的代入角色。类型:JSON
必需:否
Amazon CloudFormation兼容性:此属性类似于
AWS::IAM::Role
资源的AssumeRolePolicyDocument
属性。 Amazon SAM将此属性添加到为此函数生成的 IAM 角色中。如果为该函数提供了角色的 Amazon 资源名称 (ARN),则该属性将不执行任何操作。 -
AutoPublishAlias
-
Lambda 别名。有关 Lambda 别名的更多信息,请参阅Amazon Lambda开发人员指南中的 Lambda 函数别名。有关使用此属性的示例,请参见逐步部署无服务器应用程序。
Amazon SAM设置此属性时生成AWS::Lambda::Version和AWS::Lambda::Alias资源。有关此方案的信息,请参阅指定了 AutoPublishAlias 属性。有关生成的Amazon CloudFormation资源的一般信息,请参阅Amazon CloudFormation。
类型:字符串
必需:否
Amazon CloudFormation兼容性:此属性是唯一的Amazon SAM,没有Amazon CloudFormation等效属性。
-
AutoPublishCodeSha256
-
用于确定是否应发布新的 Lambda 版本的字符串值以及中的
CodeUri
值。只有在还定义了此属性时AutoPublishAlias
才会使用。此属性解决了Amazon SAM模板具有以下特征时出现的问题:
DeploymentPreference
对象配置为渐进部署(如中所述逐步部署无服务器应用程序),该AutoPublishAlias
属性已设置且不会在部署之间更改,该CodeUri
属性已设置且在部署之间不发生变化。当存储在 Amazon Simple Storage Service (Amazon S3) 位置的部署包被包含更新的 Lambda 函数代码的新部署包取代,但该
CodeUri
属性保持不变(而不是将新的部署包上传到新的 Amazon S3 位置并更改为新位置)时,就会出现这种情况。CodeUri
在这种情况下,要成功触发渐进部署,必须为提供唯一值
AutoPublishCodeSha256
。类型:字符串
必需:否
Amazon CloudFormation兼容性:此属性是唯一的Amazon SAM,没有Amazon CloudFormation等效属性。
-
CodeSigningConfigArn
-
AWS::Lambda::CodeSigningConfig资源的 ARN,用于为此函数启用代码签名。更多有关代码签名的信息,请参阅为Amazon SAM应用程序配置代码签名。
类型:字符串
必需:否
Amazon CloudFormation兼容性:此属性直接传递给
AWS::Lambda::Function
资源的CodeSigningConfigArn
属性。 -
CodeUri
-
函数代码的 Amazon S3 URI、本地文件夹或FunctionCode对象的路径。此属性仅在该
PackageType
属性设置为时适用Zip
,否则会被忽略。备注:
1. 如果该
PackageType
属性设置为Zip
(默认),InlineCode
则需要CodeUri
或中的一个。2. 如果提供了 Amazon S3 URI 或FunctionCode对象,则引用的Amazon S3 对象必须是有效的 Lambda 部署包。
3. 如果提供了本地文件夹的路径,则要正确转换代码,模板必须经过包括sam deploy或sam bu在内的工作流程sam package。默认情况下,相对路径是相对于Amazon SAM模板的位置进行解析的。
类型:字符串 | FunctionCode
必需:条件
Amazon CloudFormation兼容性:此属性类似于
AWS::Lambda::Function
资源的Code
属性。嵌套的 Amazon S3 属性的命名方式不同。 -
DeadLetterQueue
-
配置Amazon SiLambda ple Notification Service (Amazon SQS) 主题或 Amazon Simple Queue Service (Amazon SQS) 队列。有关死信队列功能的更多信息,请参阅Amazon Lambda开发者指南中的Amazon Lambda函数死信队列。
注意 如果您的 Lambda 函数的事件源是 Amazon SQS 队列,请为源队列而不是 Lambda 函数配置死信队列。您为函数配置的死信队列用于该函数的异步调用队列,而不是用于事件源队列。
类型:地图 | DeadLetterQueue
必需:否
Amazon CloudFormation兼容性:此属性类似于
AWS::Lambda::Function
资源的DeadLetterConfig
属性。Amazon CloudFormation在 type 中派生自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兼容性:此属性直接传递给
AWS::Lambda::Function
资源的Description
属性。 -
Environment
-
运行时环境的配置。
类型:环境
必需:否
Amazon CloudFormation兼容性:此属性直接传递给
AWS::Lambda::Function
资源的Environment
属性。 -
EphemeralStorage
-
一个对象,用于指定 Lambda 函数在中可用的磁盘空间(以 MB 为单位)
/tmp
。有关此属性的更多信息,请参阅Amazon Lambda开发者指南中的 Lambda 执行环境。
必需:否
Amazon CloudFormation兼容性:此属性直接传递给
AWS::Lambda::Function
资源的EphemeralStorage
属性。 -
EventInvokeConfig
-
描述 Lambda 函数的事件调用配置的对象。
必需:否
Amazon CloudFormation兼容性:此属性是唯一的Amazon SAM,没有Amazon CloudFormation等效属性。
-
Events
-
指定触发此函数的事件。事件由一种类型和一组依赖于该类型的属性组成。
类型:EventSource
必需:否
Amazon CloudFormation兼容性:此属性是唯一的Amazon SAM,没有Amazon CloudFormation等效属性。
-
FileSystemConfigs
-
指定Amazon EFile System (Amazon EFS) 文件系统连接设置的FileSystemConfig对象列表。
如果模板包含AWS::EFS::MountTarget资源,您还必须指定
DependsOn
资源属性,以确保在函数之前创建或更新装载目标。类型:清单
必需:否
Amazon CloudFormation兼容性:此属性直接传递给
AWS::Lambda::Function
资源的FileSystemConfigs
属性。 -
FunctionName
-
函数的名称。如果没有指定名称,将为您生成一个唯一的名称。
类型:字符串
必需:否
Amazon CloudFormation兼容性:此属性直接传递给
AWS::Lambda::Function
资源的FunctionName
属性。 -
FunctionUrlConfig
-
描述函数 URL 的对象。函数 URL 是可用于调用函数的 HTTPS 端点。
有关更多信息,请参阅Amazon Lambda开发者指南中的函数 URL。
必需:否
Amazon CloudFormation兼容性:此属性是唯一的Amazon SAM,没有Amazon CloudFormation等效属性。
-
Handler
-
代码中为开始执行而调用的函数。只有当该属性设置为时,才需要此
PackageType
属性Zip
。类型:字符串
必需:条件
Amazon CloudFormation兼容性:此属性直接传递给
AWS::Lambda::Function
资源的Handler
属性。 -
ImageConfig
-
用于配置 Lambda 容器映像设置的对象。有关更多信息,请参阅Amazon Lambda开发者指南中的 Lambda 中使用容器镜像。
类型:ImageConfig
必需:否
Amazon CloudFormation兼容性:此属性直接传递给
AWS::Lambda::Function
资源的ImageConfig
属性。 -
ImageUri
-
Lambda 函数的容器镜像。此属性仅在该
PackageType
属性设置为时适用Image
,否则会被忽略。有关更多信息,请参阅Amazon Lambda开发者指南中的 Lambda 中使用容器镜像。注意 如果该
PackageType
属性设置为Image
,则其中一个ImageUri
为必填项,或者您必须在Amazon SAM模板文件中使用必要的Metadata
条目来构建应用程序。有关更多信息,请参阅构建应用程序:使用必要
Metadata
条目构建应用程序的优先级高于ImageUri
,因此,如果您同时指定这两个条目,ImageUri
则会被忽略。类型:字符串
必需:否
Amazon CloudFormation兼容性:此属性直接传递给
AWS::Lambda::Function
Code
数据类型的ImageUri
属性。 -
InlineCode
-
直接在模板中编写的 Lambda 函数代码。此属性仅在该
PackageType
属性设置为时适用Zip
,否则会被忽略。注意 如果该
PackageType
属性设置为Zip
(默认),InlineCode
则需要CodeUri
或中的一个。类型:字符串
必需:条件
Amazon CloudFormation兼容性:此属性直接传递给
AWS::Lambda::Function
Code
数据类型的ZipFile
属性。 -
KmsKeyArn
-
Amazon Key Management Service(Amazon KMS) 密钥的 ARN,Lambda 用于加密和解密函数的环境变量。
类型:字符串
必需:否
Amazon CloudFormation兼容性:此属性直接传递给
AWS::Lambda::Function
资源的KmsKeyArn
属性。 -
Layers
-
此函数应使用的
LayerVersion
ARN 列表。此处指定的顺序是运行 Lambda 函数时导入它们的顺序。类型:清单
必需:否
Amazon CloudFormation兼容性:此属性直接传递给
AWS::Lambda::Function
资源的Layers
属性。 -
MemorySize
-
每次调用函数分配的内存大小(以 MB 为单位)。
类型:整数
必需:否
Amazon CloudFormation兼容性:此属性直接传递给
AWS::Lambda::Function
资源的MemorySize
属性。 -
PackageType
-
Lambda 函数的部署包类型。有关更多信息,请参阅Amazon Lambda开发人员指南中的 Lambda 部署包。
备注:
1. 如果此属性设置为
Zip
(默认),则InlineCode
应用CodeUri
或并ImageUri
被忽略。2. 如果将此属性设置为
Image
,则仅ImageUri
适用,并且CodeUri
和InlineCode
都被忽略。CLAmazon SAM I 可以auto 创建存储函数容器映像所需的 Amazon ECR 存储库。有关更多信息,请参阅sam deploy:有效值:
Zip
或Image
类型:字符串
必需:否
默认值:
Zip
Amazon CloudFormation兼容性:此属性直接传递给
AWS::Lambda::Function
资源的PackageType
属性。 -
PermissionsBoundary
-
用于该函数执行角色的权限边界的 ARN。只有在为你生成角色时,此属性才有效。
类型:字符串
必需:否
Amazon CloudFormation兼容性:此属性直接传递给
AWS::IAM::Role
资源的PermissionsBoundary
属性。 -
Policies
-
此功能需要的一项或多项策略。它们将附加到此函数的默认角色中。
此属性接受单个字符串或字符串列表,可以是Amazon托管Amazon SAM策略或策略模板的名称,也可以是以 YAML 格式化的内联 IAM 策略文档。
有关Amazon托管策略的更多信息,请参阅Amazon IAM 用户指南。有关Amazon SAM策略模板的更多信息Amazon SAM策略模板,请参阅Amazon Serverless Application Model开发者指南。更多有关内联策略的信息,请参阅 IAM 用户指南中的内联策略。
注意 如果设置了该
Role
属性,将忽略该属性。类型:字符串 | 列表 | 地图
必需:否
Amazon CloudFormation兼容性:此属性类似于
AWS::IAM::Role
资源的Policies
属性。 Amazon SAM除了 JSONAmazon SAM 策略文档外,还支持Amazon托管策略名称和策略模板。 Amazon CloudFormation仅接受 JSON 策略文档。 -
ProvisionedConcurrencyConfig
-
为函数的别名,预置的并发配置。
注意 ProvisionedConcurrencyConfig
只有在设置了时AutoPublishAlias
才能指定。否则,将出错。类型:ProvisionedConcurrencyConfig
必需:否
Amazon CloudFormation兼容性:此属性直接传递给
AWS::Lambda::Alias
资源的ProvisionedConcurrencyConfig
属性。 -
ReservedConcurrentExecutions
-
您要为该函数预留的最大数量。
有关此属性的更多信息,请参阅Amazon Lambda开发人员指南中的 Lambda 函数扩展。
类型:整数
必需:否
Amazon CloudFormation兼容性:此属性直接传递给
AWS::Lambda::Function
资源的ReservedConcurrentExecutions
属性。 -
Role
-
用作该函数的执行角色的 ARN。
类型:字符串
必需:否
Amazon CloudFormation兼容性:此属性类似于
AWS::Lambda::Function
资源的Role
属性。这在中是必填的Amazon CloudFormation,但不是必需的Amazon SAM。如果未指定角色,则会为您创建一个逻辑 ID 为的角色
。<function-logical-id>
Role -
RolePath
-
该函数的 IAM 执行角色的路径。
在为您生成角色时使用此属性。在使用
Role
属性指定角色时不要使用。类型:字符串
必需:条件
Amazon CloudFormation兼容性:此属性直接传递给
AWS::IAM::Role
资源的Path
属性。 -
Runtime
-
函数的运行时的标识符。只有当该属性设置为时,才需要此
PackageType
属性Zip
。注意 如果您为此属性指定了
provided
标识符,则可以使用Metadata
资源属性Amazon SAM来指示构建此函数所需的自定义运行时。更多有关构建自定义运行时环境的信息,请参阅构建自定义运行时。类型:字符串
必需:条件
Amazon CloudFormation兼容性:此属性直接传递给
AWS::Lambda::Function
资源的Runtime
属性。 -
RuntimeManagementConfig
-
为您的 Lambda 函数配置运行时管理选项,例如运行时环境更新、回滚行为和选择特定的运行时版本。要了解更多信息,请参阅Amazon Lambda开发者指南中的 Lambda 运行时更新。
注意 如果已配置,
AutoPublishAlias
则RuntimeManagementConfig
将$LATEST
同时适用于新创建的函数版本。必需:否
Amazon CloudFormation兼容性:此属性直接传递给
AWS::Lambda::Function
资源的RuntimeManagementConfig
属性。 -
SnapStart
-
创建任何新 Lambda 函数版本的快照。快照是初始化函数的缓存状态,包括其所有依赖关系。该函数仅初始化一次,缓存状态将在future 的所有调用中重复使用,从而通过减少必须初始化函数的次数来提高应用程序性能。要了解更多信息,请参阅Amazon Lambda开发者指南 SnapStart中的 “使用 Lambda 提高启动性能”。
类型:SnapStart
必需:否
Amazon CloudFormation兼容性:此属性直接传递给
AWS::Lambda::Function
资源的SnapStart
属性。 -
Tags
-
一个映射(字符串到字符串),指定添加到该函数的标签。有关标签的有效密钥和值的详细信息,请参阅Amazon Lambda开发者指南中的标签密钥和值要求。
创建堆栈时,Amazon SAM会自动向此 Lambda 函数以及为此函数生成的默认角色添加
lambda:createdBy:SAM
标签。类型:地图
必需:否
Amazon CloudFormation兼容性:此属性类似于
AWS::Lambda::Function
资源的Tags
属性。中的Tags
属性由键值对Amazon SAM组成(而Amazon CloudFormation此属性由Tag
对象列表组成)。此外,还Amazon SAM会自动向此 Lambda 函数以及为此函数生成的默认角色添加lambda:createdBy:SAM
标签。 -
Timeout
-
该函数在停止之前可以运行的最长时间(以秒为单位)。
类型:整数
必需:否
原定设置值:3
Amazon CloudFormation兼容性:此属性直接传递给
AWS::Lambda::Function
资源的Timeout
属性。 -
Tracing
-
指定函数的 X-Ray 跟踪模式的字符串。有关 X-Ray 的更多信息,请参阅Amazon Lambda开发人员指南Amazon X-Ray中的使用Amazon Lambda。
有效值:
Active
或PassThrough
类型:字符串
必需:否
Amazon CloudFormation兼容性:此属性类似于
AWS::Lambda::Function
资源的TracingConfig
属性。如果该Tracing
属性设置为Active
且未指定该Role
属性,则Amazon SAM将该arn:aws:iam::aws:policy/AWSXrayWriteOnlyAccess
策略添加到它为您创建的 Lambda 执行角色中。 -
VersionDescription
-
指定在新 Lambda 版本资源上添加的
Description
字段。类型:字符串
必需:否
Amazon CloudFormation兼容性:此属性直接传递给
AWS::Lambda::Version
资源的Description
属性。 -
VpcConfig
-
使该函数能够访问虚拟私有云 (VPC) 中的私有资源。
类型:VpcConfig
必需:否
Amazon CloudFormation兼容性:此属性直接传递给
AWS::Lambda::Function
资源的VpcConfig
属性。
返回值
Ref
当该资源的逻辑 ID 提供给Ref
内部函数时,它将返回底层 Lambda 函数的资源名称。
有关使用该Ref
函数的更多信息,请参阅Ref
《Amazon CloudFormation用户指南》。
Fn::GetAtt
Fn::GetAtt
返回一个此类型指定属性的值。以下为可用属性和示例返回值。
有关使用的更多信息Fn::GetAtt
,请参阅Fn::GetAtt
Amazon CloudFormation用户指南中的。
示例
简单函数
以下是 Amazon S3 存储桶中包类型Zip
(默认)和函数代码的AWS::Serverless::Function资源的基本示例。
YAML
Type: AWS::Serverless::Function Properties: Handler: index.handler Runtime: python3.9 CodeUri: s3://
bucket-name
/key-name
函数属性示例
以下是使用InlineCode
、、、、Layers
和Api
事件源的包类型Zip
(默认)的示例。AWS::Serverless::FunctionTracing
Policies
Amazon EFS
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.9 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
。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
"
RuntimeManagementConfig 例子
配置为根据当前行为更新其运行时环境的 Lambda 函数:
TestFunction Type: AWS::Serverless::Function Properties: ... Runtime: python3.9 RuntimeManagementConfig: UpdateRuntimeOn: Auto
配置为在函数更新时更新其运行时环境的 Lambda 函数:
TestFunction Type: AWS::Serverless::Function Properties: ... Runtime: python3.9 RuntimeManagementConfig: UpdateRuntimeOn: FunctionUpdate
配置为手动更新其运行时环境的 Lambda 函数:
TestFunction Type: AWS::Serverless::Function Properties: ... Runtime: python3.9 RuntimeManagementConfig: RuntimeVersionArn: arn:aws:lambda:us-east-1::runtime:4c459dd0104ee29ec65dcad056c0b3ddbe20d6db76b265ade7eda9a066859b1e UpdateRuntimeOn: Manual
SnapStart 例子
在future 版本中 SnapStart 处于开启状态的 Lambda 函数的示例:
TestFunc Type: AWS::Serverless::Function Properties: ... SnapStart: ApplyOn: PublishedVersions