本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
AWS::Serverless::Function
创建触发该Amazon Lambda函数的函数、Amazon Identity and Access Management (IAM) 执行角色和事件源映射。
该AWS::Serverless::Function资源还支持Metadata资源属性,因此您可以指示Amazon SAM构建应用程序所需的自定义运行时。有关构建自定义运行时环境的更多信息,请参阅构建自定义运行时。
注意
当您部署到时Amazon CloudFormation,Amazon SAM会将您的Amazon SAM资源转换为Amazon CloudFormation资源。有关更多信息,请参阅Amazon CloudFormation:
语法
要在Amazon Serverless Application Model (Amazon SAM) 模板中声明此实体,请使用以下语法。
YAML
Type: AWS::Serverless::Function Properties: Architectures:ListAssumeRolePolicyDocument:JSONAutoPublishAlias:StringAutoPublishAliasAllProperties:BooleanAutoPublishCodeSha256:StringCodeSigningConfigArn:StringCodeUri:String | FunctionCodeDeadLetterQueue:Map | DeadLetterQueueDeploymentPreference:DeploymentPreferenceDescription:StringEnvironment:EnvironmentEphemeralStorage:EphemeralStorageEventInvokeConfig:EventInvokeConfigurationEvents:EventSourceFileSystemConfigs:ListFunctionName:StringFunctionUrlConfig:FunctionUrlConfigHandler:StringImageConfig:ImageConfigImageUri:StringInlineCode:StringKmsKeyArn:StringLayers:ListMemorySize:IntegerPackageType:StringPermissionsBoundary:StringPolicies:String | List | MapProvisionedConcurrencyConfig:ProvisionedConcurrencyConfigReservedConcurrentExecutions:IntegerRole:StringRolePath:StringRuntime:StringRuntimeManagementConfig:RuntimeManagementConfigSnapStart:SnapStartTags:MapTimeout:IntegerTracing:StringVersionDescription:StringVpcConfig:VpcConfig
属性
-
Architectures -
该函数的指令集架构。
有关此属性的更多信息,请参阅Amazon Lambda开发者指南中的 Lambda 指令集架构。
有效值:
x86_64或中的一个arm64类型:清单
必需:否
默认值:
x86_64Amazon CloudFormation兼容性:此属性直接传递给
AWS::Lambda::Function资源的Architectures属性。 -
AssumeRolePolicyDocument -
为 AssumeRolePolicyDocument 为此函数创建
Role的默认值添加一个。如果未指定此属性,则为该函数Amazon SAM添加默认的代入角色。类型:JSON
必需:否
Amazon CloudFormation兼容性:此属性类似于
AWS::IAM::Role资源的AssumeRolePolicyDocument属性。 Amazon SAM将此属性添加到为此函数生成的 IAM 角色中。如果为该函数提供了一个角色的 Amazon Resource Name (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等效属性。
-
AutoPublishAliasAllProperties -
指定何时创建新
AWS::Lambda::Version的。当true修改 Lambda 函数中的任何属性时,就会创建一个新的 Lambda 版本。时false,只有在修改了以下任何属性时才会创建新的 Lambda 版本:-
Environment,MemorySize, 或者SnapStart。 -
导致
Code属性更新的任何更改,例如CodeDictImageUri、或InlineCode。
需要定义
AutoPublishAlias此属性。如果
AutoPublishSha256还指定了,则其行为优先于AutoPublishAliasAllProperties: true。类型:布尔值
必需:否
默认值:
falseAmazon 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 package。默认情况下,相对路径是相对于Amazon SAM模板的位置进行解析的。
类型:字符串 | FunctionCode
必需:条件
Amazon CloudFormation兼容性:此属性类似于
AWS::Lambda::Function资源的Code属性。嵌套的 Amazon S3 属性的命名方式不同。 -
DeadLetterQueue -
配置Amazon Simple Notification Service (Amazon SNS) 主题或 Amazon Simple Queue Service (Amazon SQS) 队列,Lambda 将 有关死信队列功能的更多信息,请参阅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 EEEFS File 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 函数的容器镜像的 Amazon Elastic Container Registry (Amazon ECR) 存储库的 URI。此属性仅在该
PackageType属性设置为时适用Image,否则会被忽略。有关更多信息,请参阅Amazon Lambda开发者指南中的 Lambda 中使用容器镜像。注意
如果该
PackageType属性设置为Image,则其中一个ImageUri为必填项,或者您必须在Amazon SAM模板文件中使用必要的Metadata条目来构建应用程序。有关更多信息,请参阅构建应用程序:使用必需
Metadata条目构建应用程序的优先级高于ImageUri,因此,如果您同时指定这两个条目,ImageUri则会被忽略。类型:字符串
必需:否
Amazon CloudFormation兼容性:此属性直接传递给
AWS::Lambda::FunctionCode数据类型的ImageUri属性。 -
InlineCode -
直接在模板中编写的 Lambda 函数代码。此属性仅在该
PackageType属性设置为时适用Zip,否则会被忽略。注意
如果该
PackageType属性设置为Zip(默认),InlineCode则需要CodeUri或中的一个。类型:字符串
必需:条件
Amazon CloudFormation兼容性:此属性直接传递给
AWS::Lambda::FunctionCode数据类型的ZipFile属性。 -
KmsKeyArn -
Lambda 用于加密和解密函数的环境变量的Amazon Key Management Service (Amazon KMS) 密钥的 ARN。
类型:字符串
必需:否
Amazon CloudFormation兼容性:此属性直接传递给
AWS::Lambda::Function资源的KmsKeyArn属性。 -
Layers -
此函数应使用的
LayerVersionARN 列表。此处指定的顺序是运行 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类型:字符串
必需:否
默认值:
ZipAmazon CloudFormation兼容性:此属性直接传递给
AWS::Lambda::Function资源的PackageType属性。 -
PermissionsBoundary -
用于该函数的执行角色的权限边界的 ARN。只有在为你生成角色时,此属性才有效。
类型:字符串
必需:否
Amazon CloudFormation兼容性:此属性直接传递给
AWS::IAM::Role资源的PermissionsBoundary属性。 -
Policies -
此功能需要的一项或多项策略。它们将附加到此函数的默认角色中。
此属性接受单个字符串或字符串列表,可以是Amazon托管Amazon SAM策略或策略模板的名称,也可以是以 YAML 格式化的内联 IAM 策略文档。
有关Amazon托管策略的更多信息,请参阅 IAM 用户指南中的Amazon托管策略。有关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 -
用作该函数的执行角色的 IAM 角色的 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 ay Amazon Lambda的更多信息,请参阅Amazon Lambda开发人员指南Amazon X-Ray中的使用。
有效值:
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 -
使该函数能够访问虚拟Private Cloud (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::FunctionTracingPoliciesAmazon 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-nameImageConfig: 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