本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
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:ListAssumeRolePolicyDocument:JSONAutoPublishAlias:StringAutoPublishCodeSha256: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:StringRuntime:StringTags:MapTimeout:IntegerTracing:StringVersionDescription:StringVpcConfig:VpcConfig
属性
-
Architectures -
该函数的指令集架构。
有关此属性的更多信息,请参阅Lambda 指令集架构中的Amazon Lambda开发人员指南.
有效值:其中一个
x86_64要么arm64类型:列表
必需:否
默认值:
x86_64Amazon 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 build然后是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) 队列,Lambda 将在队列中发送无法处理的事件。有关死信队列功能的更多信息,请参阅Amazon Lambda函数死信队列中的Amazon Lambda开发人员指南.
注意:如果 Lambda 函数的事件源是 Amazon SQS 队列,请为源队列而不是 Lambda 函数配置死信队列。您为函数配置的死信队列用于函数的异步调用队列,不适用于事件源队列。
类型:| MapDeadLetter 队列
必需:否
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资源。 -
EphemeralStorage -
一个对象,它在中指定可供您的 Lambda 函数使用的磁盘空间(以 MB 为单位)
/tmp.有关此属性的更多信息,请参阅Lambda 执行环境中的Amazon Lambda开发人员指南.
必需:否
Amazon CloudFormation兼容性:此属性将直接传递给
EphemeralStorage的财产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资源属性,以确保在函数之前创建或更新装载目标。类型:列表
必需:否
Amazon CloudFormation兼容性:此属性将直接传递给
FileSystemConfigs的财产AWS::Lambda::Function资源。 -
FunctionName -
函数的名称。如果您没有指定名称,将为您生成一个唯一名称。
类型:字符串
必需:否
Amazon CloudFormation兼容性:此属性将直接传递给
FunctionName的财产AWS::Lambda::Function资源。 -
FunctionUrlConfig -
描述函数 URL 的对象。函数 URL 是可用于调用函数的 HTTPS 终端节点。
有关更多信息,请参阅 。函数 URL中的Amazon Lambda开发人员指南.
类型:函数 URLConfig
必需:否
Amazon CloudFormation兼容性:此属性对是唯一的。Amazon SAM并且没有Amazon CloudFormation等效项
-
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::FunctionCode数据类型。 -
InlineCode -
直接写入模板中的 Lambda 函数代码。此属性仅适用于
PackageType属性将设定为Zip否则将忽略它。注意:如果
PackageType属性将设定为Zip(默认值),然后是其中之一CodeUri要么InlineCode是必需的。类型:字符串
必需:条件
Amazon CloudFormation兼容性:此属性将直接传递给
ZipFile的财产AWS::Lambda::FunctionCode数据类型。 -
KmsKeyArn -
一个 ARNAmazon Key Management Service(Amazon KMS) Lambda 用于加密和解密函数环境变量的密钥。
类型:字符串
必需:否
Amazon CloudFormation兼容性:此属性将直接传递给
KmsKeyArn的财产AWS::Lambda::Function资源。 -
Layers -
列表
LayerVersion此函数应该使用的 ARN。此处指定的顺序是运行 Lambda 函数时它们的导入顺序。类型:列表
必需:否
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类型:字符串
必需:否
默认值:
ZipAmazon 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 函数,以及为此函数生成的默认角色。类型:映射
必需:否
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程序包类型的资源ZipAmazon 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-nameImageConfig: Command: - "app.lambda_handler" EntryPoint: - "entrypoint1" WorkingDirectory: "workDir"