

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

# AWS::Serverless::Function
<a name="sam-resource-function"></a>

创建触发该 AWS Lambda 函数的函数、 AWS Identity and Access Management (IAM) 执行角色和事件源映射。

该[AWS::Serverless::Function](#sam-resource-function)资源还支持 r `Metadata` esource 属性，因此您可以指示 AWS SAM 构建应用程序所需的自定义运行时。有关构建自定义运行时系统的更多信息，请参阅 [在中使用自定义运行时构建 Lambda 函数 AWS SAM](building-custom-runtimes.md)。

**注意**  
部署到时 AWS CloudFormation， AWS SAM 会将您的 AWS SAM 资源转换为 CloudFormation 资源。有关更多信息，请参阅 [生成的 CloudFormation 资源用于 AWS SAM](sam-specification-generated-resources.md)。

## 语法
<a name="sam-resource-function-syntax"></a>

要在 AWS Serverless Application Model (AWS SAM) 模板中声明此实体，请使用以下语法。

### YAML
<a name="sam-resource-function-syntax.yaml"></a>

```
Type: AWS::Serverless::Function
Properties:
  [Architectures](#sam-function-architectures): {{List}}
  [AssumeRolePolicyDocument](#sam-function-assumerolepolicydocument): {{JSON}}
  [AutoPublishAlias](#sam-function-autopublishalias): {{String}}
  AutoPublishAliasAllProperties: {{Boolean}}
  [AutoPublishCodeSha256](#sam-function-autopublishcodesha256): {{String}}
  [CapacityProviderConfig](#sam-function-capacityproviderconfig): {{CapacityProviderConfig}}
  [CodeSigningConfigArn](#sam-function-codesigningconfigarn): {{String}}
  [CodeUri](#sam-function-codeuri): {{String | FunctionCode}}
  [DeadLetterQueue](#sam-function-deadletterqueue): {{Map | DeadLetterQueue}}
  [DeploymentPreference](#sam-function-deploymentpreference): {{DeploymentPreference}}
  [Description](#sam-function-description): {{String}}
  [DurableConfig](#sam-function-durableconfig): {{DurableConfig}}
  [Environment](#sam-function-environment): {{[Environment](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-environment.html)}}
  [EphemeralStorage](#sam-function-ephemeralstorage): {{[EphemeralStorage](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-ephemeralstorage)}}
  [EventInvokeConfig](#sam-function-eventinvokeconfig): {{EventInvokeConfiguration}}
  [Events](#sam-function-events): {{EventSource}}
  [FileSystemConfigs](#sam-function-filesystemconfigs): {{List}}
  [FunctionName](#sam-function-functionname): {{String}}
  [FunctionScalingConfig](#sam-function-functionscalingconfig): {{FunctionScalingConfig}}
  [FunctionUrlConfig](#sam-function-functionurlconfig): {{FunctionUrlConfig}}
  [Handler](#sam-function-handler): {{String}}
  [ImageConfig](#sam-function-imageconfig): {{[ImageConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-imageconfig)}}
  [ImageUri](#sam-function-imageuri): {{String}}
  [InlineCode](#sam-function-inlinecode): {{String}}
  [KmsKeyArn](#sam-function-kmskeyarn): {{String}}
  [Layers](#sam-function-layers): {{List}}
  LoggingConfig: {{[LoggingConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-loggingconfig.html)}}
  [MemorySize](#sam-function-memorysize): {{Integer}}
  [PackageType](#sam-function-packagetype): {{String}}
  [PermissionsBoundary](#sam-function-permissionsboundary): {{String}}
  [Policies](#sam-function-policies): {{String | List | Map}}
  [PublishToLatestPublished](#sam-function-publishtolatestpublished): {{Boolean}}
  PropagateTags: {{Boolean}}
  [ProvisionedConcurrencyConfig](#sam-function-provisionedconcurrencyconfig): {{[ProvisionedConcurrencyConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-alias.html#cfn-lambda-alias-provisionedconcurrencyconfig)}}
  RecursiveLoop: {{String}}
  [ReservedConcurrentExecutions](#sam-function-reservedconcurrentexecutions): {{Integer}}
  [Role](#sam-function-role): {{String}}
  [RolePath](#sam-function-rolepath): {{String}}
  [Runtime](#sam-function-runtime): {{String}}
  RuntimeManagementConfig: {{[RuntimeManagementConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-runtimemanagementconfig.html)}}
  SnapStart: {{[SnapStart](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-snapstart.html)}}
  [SourceKMSKeyArn](#sam-function-sourcekmskeyarn): {{String}}
  [Tags](#sam-function-tags): {{Map}}
  [TenancyConfig](#sam-function-tenancyconfig): {{TenancyConfig}}
  [Timeout](#sam-function-timeout): {{Integer}}
  [Tracing](#sam-function-tracing): {{String}}
  [VersionDescription](#sam-function-versiondescription): {{String}}
  [VersionDeletionPolicy](#sam-function-versiondeletionpolicy): {{String}}
  [VpcConfig](#sam-function-vpcconfig): {{[VpcConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-vpcconfig.html)}}
```

## Properties
<a name="sam-resource-function-properties"></a>

 `Architectures`   <a name="sam-function-architectures"></a>
该函数的指令集架构。  
有关此属性更多信息，请参阅*《AWS Lambda 开发人员指南》*中的 [Lambda 指令集架构](https://docs.aws.amazon.com/lambda/latest/dg/foundation-arch.html)。  
*有效值*：`x86_64` 或 `arm64` 之一。  
*类型*：列表  
*必需*：否  
*默认值*：`x86_64`  
*CloudFormation 兼容性*：此属性直接传递给`AWS::Lambda::Function`资源的`[Architectures](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-architectures)`属性。

 `AssumeRolePolicyDocument`   <a name="sam-function-assumerolepolicydocument"></a>
 AssumeRolePolicyDocument 为该函数创建`Role`的默认值添加一个。如果未指定此属性，则为该函数 AWS SAM 添加默认的代入角色。  
*类型*：JSON  
*必需*：否  
*CloudFormation 兼容性*：此属性类似于`AWS::IAM::Role`资源的`[AssumeRolePolicyDocument](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html#cfn-iam-role-assumerolepolicydocument)`属性。 AWS SAM 将此属性添加到为此函数生成的 IAM 角色中。如果为此函数提供了角色的 Amazon 资源名称（ARN），则此属性将不执行任何操作。

 `AutoPublishAlias`   <a name="sam-function-autopublishalias"></a>
Lambda 别名的名称。要了解有关 Lambda 别名的更多信息，请参阅*《AWS Lambda 开发人员指南》*中的 [Lambda 函数别名](https://docs.aws.amazon.com/lambda/latest/dg/configuration-aliases.html)。有关使用此属性的示例，请参见 [使用以下方法逐步部署无服务器应用程序 AWS SAM](automating-updates-to-serverless-apps.md)。  
AWS SAM 设置此属性时生成[https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-version.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-version.html)和[https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-alias.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-alias.html)资源。有关此场景的更多信息，请参阅[AutoPublishAlias 属性已指定](sam-specification-generated-resources-function.md#sam-specification-generated-resources-function-autopublishalias)。有关生成的 CloudFormation 资源的一般信息，请参阅[生成的 CloudFormation 资源用于 AWS SAM](sam-specification-generated-resources.md)。  
*类型*：字符串  
*必需*：否  
*CloudFormation 兼容性*：此属性是独有的 AWS SAM ，没有 CloudFormation 等效属性。

 `AutoPublishAliasAllProperties`   <a name="sam-function-autopublishaliasallproperties"></a>
指定何时创建新的 [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-version.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-version.html)。当为 `true` 时，修改 Lambda 函数中的任何属性时，就会创建新的 Lambda 版本。当为 `false` 时，只有修改了以下任何属性时，才会创建新的 Lambda 版本：  
+ `Environment`、`MemorySize` 或者 `SnapStart`。
+ 导致 `Code` 属性更新的任何更改，例如 `CodeDict`、`ImageUri`、或 `InlineCode`。
此属性需要定义 `AutoPublishAlias`。  
如果也指定 `AutoPublishCodeSha256`，则其行为优先于 `AutoPublishAliasAllProperties: true`。  
*类型*：布尔值  
*必需*：否  
*默认值*：`false`  
*CloudFormation 兼容性*：此属性是独有的 AWS SAM ，没有 CloudFormation 等效属性。

 `AutoPublishCodeSha256`   <a name="sam-function-autopublishcodesha256"></a>
使用时，此字符串将与 `CodeUri` 值一起确定是否需要发布新的 Lambda 版本。此属性通常用于解决以下部署问题：部署包存储在 Amazon S3 位置，且被包含更新后的 Lambda 函数代码的新部署包取代，但 `CodeUri` 属性保持不变（相反情况是新的部署包上传到新的 Amazon S3 位置并且 `CodeUri` 更改为新位置）。  
此问题由具有以下特征的 AWS SAM 模板标记：  
+ `DeploymentPreference` 对象配置为逐步部署（如[使用以下方法逐步部署无服务器应用程序 AWS SAM](automating-updates-to-serverless-apps.md)中所述）
+ `AutoPublishAlias` 属性已设置，且在部署之间不会更改
+ `CodeUri` 属性已设置，且在部署之间不会更改。
在这种情况下，更新 `AutoPublishCodeSha256` 会导致成功创建新的 Lambda 版本。但是，部署到 Amazon S3 的新函数代码将无法识别。要识别新的函数代码，请考虑在 Amazon S3 存储桶中使用版本控制。为 Lambda 函数指定 `Version` 属性，并将存储桶配置为始终使用最新的部署包。  
在这种情况下，要成功触发逐步部署，必须为 `AutoPublishCodeSha256` 提供一个唯一的值。  
*类型*：字符串  
*必需*：否  
*CloudFormation 兼容性*：此属性是独有的 AWS SAM ，没有 CloudFormation 等效属性。

 `CapacityProviderConfig`   <a name="sam-function-capacityproviderconfig"></a>
配置要将函数的已发布版本附加到的容量提供商。这使该函数能够在由 Lambda 托管实例管理的客户拥有的 EC2 实例上运行。  
*类型*：[CapacityProviderConfig](sam-property-function-capacityproviderconfig.md)  
*必需*：否  
*CloudFormation 兼容性*：SAM 对传递给`AWS::Lambda::Function`资源属性的`[CapacityProviderConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-capacityproviderconfig)`属性进行扁平化并重建嵌套结构。

 `CodeSigningConfigArn`   <a name="sam-function-codesigningconfigarn"></a>
[https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-codesigningconfig.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-codesigningconfig.html) 资源的 ARN，用于为此函数启用代码签名。有关代码签名的更多信息，请参阅 [为您的 AWS SAM 应用程序设置代码签名](authoring-codesigning.md)。  
*类型*：字符串  
*必需*：否  
*CloudFormation 兼容性*：此属性直接传递给`AWS::Lambda::Function`资源的`[CodeSigningConfigArn](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-codesigningconfigarn)`属性。

 `CodeUri`   <a name="sam-function-codeuri"></a>
函数的代码。可接受的值包括：  
+ 该函数的 Amazon S3 URI。例如 `s3://bucket-123456789/sam-app/1234567890abcdefg`。
+ 函数的本地路径。例如 `hello_world/`。
+ 一个 [FunctionCode](sam-property-function-functioncode.md) 对象。
如果您提供函数的 Amazon S3 URI 或 [FunctionCode](sam-property-function-functioncode.md) 对象，则必须引用有效的 [Lambda 部署包](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-package.html)。  
如果您提供本地文件路径，请在部署时使用 AWS SAM CLI 上传本地文件。要了解更多信息，请参阅[如何在 AWS SAM 部署时上传本地文件](deploy-upload-local-files.md)。  
如果你在`CodeUri`属性中使用内部函数， AWS SAM 将无法正确解析这些值。请考虑改用[AWS::Language扩展程序转换](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/transform-aws-languageextensions.html)。
*类型*：[ 字符串 \| [FunctionCode](sam-property-function-functioncode.md) ]  
*必填*：条件性。当 `PackageType` 设置为 `Zip` 时，则 `CodeUri` 或 `InlineCode` 中的一种为必需。  
*CloudFormation 兼容性*：此属性类似于`AWS::Lambda::Function`资源的`[ Code](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-code)`属性。嵌套的 Amazon S3 属性的命名有所不同。

 `DeadLetterQueue`   <a name="sam-function-deadletterqueue"></a>
在 Lambda 发送无法处理的事件时配置 Amazon Simple Notiﬁcation Service (Amazon SNS)主题或 Amazon Simple Queue Service (Amazon SQS) 队列。有关死信队列功能的更多信息，请参阅《AWS Lambda 开发人员指南》**中的[死信队列](https://docs.aws.amazon.com/lambda/latest/dg/invocation-async-retain-records.html#invocation-dlq)。  
如果您的 Lambda 函数的事件源是 Amazon SQS 队列，请为源队列而不是 Lambda 函数配置死信队列。您为函数配置的死信队列用于函数的[异步调用队列](https://docs.aws.amazon.com/lambda/latest/dg/invocation-async.html)，而不是用于事件源队列。
*类型*：地图 \| [DeadLetterQueue](sam-property-function-deadletterqueue.md)  
*必需*：否  
*CloudFormation 兼容性*：此属性类似于`AWS::Lambda::Function`资源的`[DeadLetterConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-deadletterconfig.html)`属性。在 CloudFormation 中，类型是派生自的`TargetArn`，而在中， AWS SAM 你必须将类型与一起传递`TargetArn`。

 `DeploymentPreference`   <a name="sam-function-deploymentpreference"></a>
用于启用逐步 Lambda 部署的设置。  
如果指定了`DeploymentPreference`对象，则 AWS SAM 会创建一个[https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-application.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-application.html)被调用对象`ServerlessDeploymentApplication`（每个堆栈一个）、一个[https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-codedeploy-deploymentgroup.html)被调用`{{<function-logical-id>}}DeploymentGroup`对象和一个[https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html)被调用对象`CodeDeployServiceRole`。  
*类型*：[DeploymentPreference](sam-property-function-deploymentpreference.md)  
*必需*：否  
*CloudFormation 兼容性*：此属性是独有的 AWS SAM ，没有 CloudFormation 等效属性。  
*另请参阅*：有关此属性的更多信息，请参阅 [使用以下方法逐步部署无服务器应用程序 AWS SAM](automating-updates-to-serverless-apps.md)。

 `Description`   <a name="sam-function-description"></a>
该函数的描述。  
*类型*：字符串  
*必需*：否  
*CloudFormation 兼容性*：此属性直接传递给`AWS::Lambda::Function`资源的`[Description](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-description)`属性。

 `DurableConfig`   <a name="sam-function-durableconfig"></a>
耐用功能的配置。通过自动检查点和重播功能启用有状态执行。  
*类型*：[DurableConfig](sam-property-function-durableconfig.md)  
*必需*：否  
*CloudFormation 兼容性*：此属性是独有的 AWS SAM ，没有 CloudFormation 等效属性。

 `Environment`   <a name="sam-function-environment"></a>
运行时系统环境的配置。  
*类型*：[环境](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-environment.html)  
*必需*：否  
*CloudFormation 兼容性*：此属性直接传递给`AWS::Lambda::Function`资源的`[Environment](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-environment.html)`属性。

 `EphemeralStorage`   <a name="sam-function-ephemeralstorage"></a>
指定 `/tmp` 中 Lambda 函数可用的磁盘空间（以 MB 为单位）的对象。  
有关此属性的更多信息，请参阅*《AWS Lambda 开发人员指南》*中的 [Lambda 执行环境](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-context.html)。  
*类型*：[EphemeralStorage](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-ephemeralstorage)  
*必需*：否  
*CloudFormation 兼容性*：此属性直接传递给`AWS::Lambda::Function`资源的`[EphemeralStorage](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-ephemeralstorage)`属性。

 `EventInvokeConfig`   <a name="sam-function-eventinvokeconfig"></a>
描述 Lambda 函数的事件调用配置的对象。  
*类型*：[EventInvokeConfiguration](sam-property-function-eventinvokeconfiguration.md)  
*必需*：否  
*CloudFormation 兼容性*：此属性是独有的 AWS SAM ，没有 CloudFormation 等效属性。

 `Events`   <a name="sam-function-events"></a>
指定触发此函数的事件。事件由一个类型和一组依赖于该类型的属性组成。  
*类型*：[EventSource](sam-property-function-eventsource.md)  
*必需*：否  
*CloudFormation 兼容性*：此属性是独有的 AWS SAM ，没有 CloudFormation 等效属性。

 `FileSystemConfigs`   <a name="sam-function-filesystemconfigs"></a>
指定亚马逊弹性文件系统 (Amazon EFS) 文件系统或亚马逊 S3 文件系统连接设置的[FileSystemConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-filesystemconfig.html)对象列表。您可以连接 Amazon EFS 接入点或 S3 文件访问点，但不能同时连接两者。  
每个`FileSystemConfig`对象都包含一个`Arn`（接入点 ARN）和 a`LocalMountPath`（函数中文件系统的挂载路径）。对于亚马逊 EFS 来说，ARN 是亚马逊 EFS 接入点 ARN。对于 S3 文件，ARN 是一个 ARN。`AWS::S3Files::AccessPoint`  
如果模板包含 [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-efs-mounttarget.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-efs-mounttarget.html) 资源，您还必须指定一个 `DependsOn` 资源属性，以确保在函数之前创建或更新装载目标。同样，如果您的模板包含`AWS::S3Files::MountTarget`资源，则必须为 S3 文件挂载目标指定一个`DependsOn`属性。  
*类型*：列表  
*必需*：否  
*CloudFormation 兼容性*：此属性直接传递给`AWS::Lambda::Function`资源的`[FileSystemConfigs](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-filesystemconfigs)`属性。

 `FunctionName`   <a name="sam-function-functionname"></a>
函数的名称。如果您没有指定名称，则系统为您生成唯一的名称。  
*类型*：字符串  
*必需*：否  
*CloudFormation 兼容性*：此属性直接传递给`AWS::Lambda::Function`资源的`[FunctionName](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-functionname)`属性。

 `FunctionScalingConfig`   <a name="sam-function-functionscalingconfig"></a>
为在容量提供程序上运行的 Lambda 函数配置扩展行为。定义执行环境的最小和最大数量。  
*类型*：[FunctionScalingConfig](sam-property-function-functionscalingconfig.md)  
*必需*：否  
*CloudFormation 兼容性*：此属性直接传递给`AWS::Lambda::Function`资源的`[FunctionScalingConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-functionscalingconfig)`属性。

 `FunctionUrlConfig`   <a name="sam-function-functionurlconfig"></a>
描述函数 URL 的对象。函数 URL 是可用于调用函数的 HTTPS 端点。  
有关更多信息，请参阅《*AWS Lambda 开发者指南*》URLs中的[函数](https://docs.aws.amazon.com/lambda/latest/dg/lambda-urls.html)。  
*类型*：[FunctionUrlConfig](sam-property-function-functionurlconfig.md)  
*必需*：否  
*CloudFormation 兼容性*：此属性是独有的 AWS SAM ，没有 CloudFormation 等效属性。

 `Handler`   <a name="sam-function-handler"></a>
代码中被调用以开始执行的函数。仅当属性 `PackageType` 为 `Zip` 时，该属性是必需属性。  
*类型*：字符串  
*必需*：条件  
*CloudFormation 兼容性*：此属性直接传递给`AWS::Lambda::Function`资源的`[Handler](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-handler)`属性。

 `ImageConfig`   <a name="sam-function-imageconfig"></a>
用于配置 Lambda 容器映像设置的对象。有关更多信息，请参阅*《AWS Lambda 开发人员指南》*中的[将容器映像与 Lambda 结合使用](https://docs.aws.amazon.com/lambda/latest/dg/lambda-images.html)。  
*类型*：[ImageConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-imageconfig)  
*必需*：否  
*CloudFormation 兼容性*：此属性直接传递给`AWS::Lambda::Function`资源的`[ImageConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-imageconfig)`属性。

 `ImageUri`   <a name="sam-function-imageuri"></a>
Lambda 函数容器映像的 Amazon Elastic Container Registry (Amazon ECR) 存储库 URI 仅当 `PackageType` 属性设置为 `Image` 时，此属性才适用，否则将被忽略。有关更多信息，请参阅*《AWS Lambda 开发人员指南》*中的[将容器映像与 Lambda 结合使用](https://docs.aws.amazon.com/lambda/latest/dg/lambda-images.html)。  
如果将该`PackageType`属性设置为`Image`，`ImageUri`则要么为必填项，要么必须使用 AWS SAM 模板文件中的必要`Metadata`条目来构建应用程序。有关更多信息，请参阅 [默认版本使用 AWS SAM](serverless-sam-cli-using-build.md)。
使用必要的 `Metadata` 条目构建应用程序优先于 `ImageUri`，因此，如果您同时指定两者，则 `ImageUri` 会被忽略。  
*类型*：字符串  
*必需*：否  
*CloudFormation 兼容性*：此属性直接传递给`AWS::Lambda::Function``Code`数据类型的`[ImageUri](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-code.html#cfn-lambda-function-code-imageuri)`属性。

 `InlineCode`   <a name="sam-function-inlinecode"></a>
直接在模板中编写的 Lambda 函数代码。仅当 `PackageType` 属性设置为 `Zip` 时，此属性才适用，否则将被忽略。  
如果 `PackageType` 属性设置为 `Zip`（默认），则 `CodeUri` 或 `InlineCode` 中的一个为必需。
*类型*：字符串  
*必需*：条件  
*CloudFormation 兼容性*：此属性直接传递给`AWS::Lambda::Function``Code`数据类型的`[ZipFile](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-code.html#cfn-lambda-function-code-zipfile)`属性。

 `KmsKeyArn`   <a name="sam-function-kmskeyarn"></a>
Lambda 用来加密和解密函数环境变量的 AWS Key Management Service (AWS KMS) 密钥的 ARN。  
*类型*：字符串  
*必需*：否  
*CloudFormation 兼容性*：此属性直接传递给`AWS::Lambda::Function`资源的`[KmsKeyArn](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-kmskeyarn)`属性。

 `Layers`   <a name="sam-function-layers"></a>
此函数应使用的列表。`LayerVersion` ARNs 此处指定的顺序是运行 Lambda 函数时它们的导入顺序。该版本要么是包含版本的完整 ARN，要么是对资源的引用。 LayerVersion 例如，对 `LayerVersion` 的引用为 `!Ref MyLayer`，而包含版本号的完整 ARN 为 `arn:aws:lambda:{{region}}:{{account-id}}:layer:{{layer-name}}:{{version}}`。  
*类型*：列表  
*必需*：否  
*CloudFormation 兼容性*：此属性直接传递给`AWS::Lambda::Function`资源的`[Layers](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-layers)`属性。

 `LoggingConfig`   <a name="sam-function-loggingconfig"></a>
该函数的 Amazon CloudWatch 日志配置设置。  
*类型*：[LoggingConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-loggingconfig.html)  
*必需*：否  
*CloudFormation 兼容性*：此属性直接传递给`AWS::Lambda::Function`资源的[https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-loggingconfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-loggingconfig)属性。

 `MemorySize`   <a name="sam-function-memorysize"></a>
每次调用函数时分配的内存大小（以 MB 为单位）。  
*类型*：整数  
*必需*：否  
*CloudFormation 兼容性*：此属性直接传递给`AWS::Lambda::Function`资源的`[MemorySize](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-memorysize)`属性。

 `PackageType`   <a name="sam-function-packagetype"></a>
Lambda 函数的部署包类型。有关更多信息，请参阅*《AWS Lambda 开发人员指南》*中的[Lambda 部署包](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-package.html)。  
**备注**：  
1. 如果此属性设置为 `Zip`（默认），则将应用 `CodeUri` 或 `InlineCode`，并忽略 `ImageUri`。  
2. 如果此属性设置为 `Image`，则仅应用 `ImageUri`，并忽略 `CodeUri` 和 `InlineCode`。存储函数容器镜像所需的 Amazon ECR 存储库可以由自动创建。 AWS SAMCLI有关更多信息，请参阅 [sam deploy](sam-cli-command-reference-sam-deploy.md)。  
*有效值*：`Zip` 或 `Image`  
*类型*：字符串  
*必需*：否  
*默认值*：`Zip`  
*CloudFormation 兼容性*：此属性直接传递给`AWS::Lambda::Function`资源的`[PackageType](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-packagetype)`属性。

 `PermissionsBoundary`   <a name="sam-function-permissionsboundary"></a>
用于此函数执行角色的权限边界的 ARN。仅当为您生成角色时，此属性才起作用。  
*类型*：字符串  
*必需*：否  
*CloudFormation 兼容性*：此属性直接传递给`AWS::IAM::Role`资源的`[PermissionsBoundary](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html#cfn-iam-role-permissionsboundary)`属性。

 `Policies`   <a name="sam-function-policies"></a>
此函数的权限策略。策略将附加到函数的默认 AWS Identity and Access Management (IAM) 执行角色中。  
此属性接受单个值或值列表。允许的值包括：  
+ [AWS SAM策略模板](serverless-policy-templates.md).
+ [AWS 托管策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies)或[客户管理型策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#customer-managed-policies)的 ARN。
+ 以下[列表](https://github.com/aws/serverless-application-model/blob/develop/samtranslator/internal/data/aws_managed_policies.json)中 AWS 托管策略的名称。
+ 在 YAML 中格式化为映射的[内联 IAM policy](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#inline-policies)。
如果指定 `Role` 属性，则将忽略该属性。
*类型*：字符串 \| 列表 \| 映射  
*必需*：否  
*CloudFormation 兼容性*：此属性类似于`AWS::IAM::Role`资源的`[Policies](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html#cfn-iam-role-policies)`属性。

 `PublishToLatestPublished`   <a name="sam-function-publishtolatestpublished"></a>
指定在函数更新时是否发布最新的函数版本。  
*类型*：布尔值  
*必需*：否  
*CloudFormation 兼容性*：此属性直接传递给`AWS::Lambda::Function`资源的`[PublishToLatestPublished](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-publishtolatestpublished)`属性。

`PropagateTags`  <a name="sam-function-propagatetags"></a>
指明是否将 `Tags` 属性中的标签传递给 [AWS::Serverless::Function](sam-specification-generated-resources-function.md) 生成的资源。指定 `True` 以在生成的资源中传播标签。  
*类型*：布尔值  
*必需*：否  
*默认值*：`False`  
*CloudFormation 兼容性*：此属性是独有的 AWS SAM ，没有 CloudFormation 等效属性。

 `ProvisionedConcurrencyConfig`   <a name="sam-function-provisionedconcurrencyconfig"></a>
函数别名的预置并发配置。  
仅当设置 `AutoPublishAlias` 时才可以指定 `ProvisionedConcurrencyConfig`。否则将导致错误。
*类型*：[ProvisionedConcurrencyConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-alias.html#cfn-lambda-alias-provisionedconcurrencyconfig)  
*必需*：否  
*CloudFormation 兼容性*：此属性直接传递给`AWS::Lambda::Alias`资源的`[ProvisionedConcurrencyConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-alias.html#cfn-lambda-alias-provisionedconcurrencyconfig)`属性。

 `RecursiveLoop`   <a name="sam-function-recursiveloop"></a>
函数的递归循环检测配置的状态。  
当此值设置为 `Allow` 且 Lambda 检测到您的函数作为递归循环的一部分调用时，它不会采取任何操作。  
当此值设置为 `Terminate` 且 Lambda 检测到您的函数作为递归循环的一部分调用时，它会停止调用函数并通知您。  
*类型*：字符串  
*必需*：否  
*CloudFormation 兼容性*：此属性直接传递给`AWS::Lambda::Function`资源的`[RecursiveLoop](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-recursiveloop)`属性。

 `ReservedConcurrentExecutions`   <a name="sam-function-reservedconcurrentexecutions"></a>
希望为函数预留的最大并发执行数。  
有关此属性更多信息，请参阅*《AWS Lambda 开发人员指南》*中的 [Lambda 函数扩展](https://docs.aws.amazon.com/lambda/latest/dg/scaling.html)。  
*类型*：整数  
*必需*：否  
*CloudFormation 兼容性*：此属性直接传递给`AWS::Lambda::Function`资源的`[ReservedConcurrentExecutions](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-reservedconcurrentexecutions)`属性。

 `Role`   <a name="sam-function-role"></a>
要用作此函数执行角色的 IAM 角色的 ARN。  
*类型*：字符串  
*必需*：否  
*CloudFormation 兼容性*：此属性类似于`AWS::Lambda::Function`资源的`[Role](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-role)`属性。这在中是必需的 CloudFormation ，但不是必填的 AWS SAM。如果未指定角色，则会为您创建一个逻辑 ID 为 `{{<function-logical-id>}}Role` 的角色。

 `RolePath`   <a name="sam-function-rolepath"></a>
函数的 IAM 执行角色的路径。  
生成角色时请使用此属性。当使用 `Role` 属性指定角色时，请勿使用。  
*类型*：字符串  
*必需*：条件  
*CloudFormation 兼容性*：此属性直接传递给`AWS::IAM::Role`资源的`[Path](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html#cfn-iam-role-path)`属性。

 `Runtime`   <a name="sam-function-runtime"></a>
函数的[运行时](https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html)的标识符。仅当属性 `PackageType` 为 `Zip` 时，该属性是必需属性。  
如果为此属性指定标`provided`识符，则可以使用 res `Metadata` ource 属性 AWS SAM 来指示构建此函数所需的自定义运行时。有关构建自定义运行时系统的更多信息，请参阅 [在中使用自定义运行时构建 Lambda 函数 AWS SAM](building-custom-runtimes.md)。
*类型*：字符串  
*必需*：条件  
*CloudFormation 兼容性*：此属性直接传递给`AWS::Lambda::Function`资源的`[Runtime](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-runtime)`属性。

 `RuntimeManagementConfig`   <a name="sam-function-runtimemanagementconfig"></a>
为 Lambda 函数配置运行时系统管理选项，例如运行时环境更新、回滚行为以及选择特定的运行时版本。要了解更多信息，请参阅*《AWS Lambda 开发人员指南》*中的 [Lambda 运行时系统更新](https://docs.aws.amazon.com//lambda/latest/dg/runtimes-update.html)。  
*类型*：[RuntimeManagementConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-runtimemanagementconfig.html)  
*必需*：否  
*CloudFormation 兼容性*：此属性直接传递给`AWS::Lambda::Function`资源的`[ RuntimeManagementConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-runtimemanagementconfig.html)`属性。

 `SnapStart`   <a name="sam-function-snapstart"></a>
创建任何新 Lambda 函数版本的快照。快照是初始化函数的缓存状态，包括其所有依赖项。函数仅被初始化一次，缓存的状态将在未来的所有调用中重复使用，从而通过减少必须初始化函数的次数来提高应用程序性能。要了解更多信息，请参阅*AWS Lambda 开发人员*指南SnapStart中的[使用 Lambda 提高启动性能](https://docs.aws.amazon.com/lambda/latest/dg/snapstart.html)。  
*类型*：[SnapStart](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-snapstart.html)  
*必需*：否  
*CloudFormation 兼容性*：此属性直接传递给`AWS::Lambda::Function`资源的`[SnapStart](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-snapstart.html)`属性。

 `SourceKMSKeyArn`   <a name="sam-function-sourcekmskeyarn"></a>
代表用于加密客户 ZIP 功能代码的 KMS 密钥 ARN。  
*类型*：字符串  
*必需*：否  
*CloudFormation 兼容性*：此属性直接传递给`AWS::Lambda::Function``Code`数据类型的`[SourceKMSKeyArn](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-sourcekmskeyarn)`属性。

 `Tags`   <a name="sam-function-tags"></a>
指定添加到此函数的标签的映射（字符串到字符串）。有关标签的有效键和值的详细信息，请参阅*《AWS Lambda 开发人员指南》*中的[标签键和值要求](https://docs.aws.amazon.com/lambda/latest/dg/configuration-tags.html#configuration-tags-restrictions)。  
创建堆栈后， AWS SAM 会自动向此 Lambda 函数以及为此函数生成的默认角色添加`lambda:createdBy:SAM`标签。  
*类型*：映射  
*必需*：否  
*CloudFormation 兼容性*：此属性类似于`AWS::Lambda::Function`资源的`[Tags](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-tags)`属性。中的`Tags`属性由键值对 AWS SAM 组成（而 CloudFormation 在此属性中则由`Tag`对象列表组成）。此外，还 AWS SAM 会自动向此 Lambda 函数以及为此函数生成的默认角色添加`lambda:createdBy:SAM`标签。

 `TenancyConfig`   <a name="sam-function-tenancyconfig"></a>
Lambda 租户隔离模式的配置。确保不同租户之间永远不会共享执行环境 IDs，从而为多租户应用程序提供计算级隔离。  
*类型*：[TenancyConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-tenancyconfig.html)  
*必需*：否  
*CloudFormation 兼容性*：此属性直接传递给`AWS::Lambda::Function`资源的`[TenancyConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-tenancyconfig)`属性。

 `Timeout`   <a name="sam-function-timeout"></a>
函数在停止之前可以运行的最长时间（以秒为单位）。  
*类型*：整数  
*必需*：否  
*原定设置值：*3  
*CloudFormation 兼容性*：此属性直接传递给`AWS::Lambda::Function`资源的`[Timeout](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-timeout)`属性。

 `Tracing`   <a name="sam-function-tracing"></a>
指定函数的 X-Ray 跟踪模式的字符串。  
+ `Active` – 为该函数激活 X-Ray 跟踪
+ `Disabled` – 为该函数停用 X-Ray 跟踪
+ `PassThrough` – 为该函数激活 X-Ray 跟踪 采样决策委托给下游服务。
如果指定为 `Active` 或 `PassThrough` 且未设置 `Role` 属性，则 AWS SAM 会将 `arn:aws:iam::aws:policy/AWSXrayWriteOnlyAccess` 策略添加到它为您创建的 Lambda 执行角色中。  
有关 X-Ray 的更多信息，请参阅《*AWS Lambda 开发者指南》 AWS X-Ray*中的 “[AWS Lambda 与一起使用](https://docs.aws.amazon.com/lambda/latest/dg/lambda-x-ray.html)”。  
*有效值*：[`Active`\|`Disabled`\|`PassThrough`]  
*类型*：字符串  
*必需*：否  
*CloudFormation 兼容性*：此属性类似于`AWS::Lambda::Function`资源的`[TracingConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html#cfn-lambda-function-tracingconfig)`属性。

 `VersionDescription`   <a name="sam-function-versiondescription"></a>
指定在新的 Lambda 版本资源上添加的 `Description` 字段。  
*类型*：字符串  
*必需*：否  
*CloudFormation 兼容性*：此属性直接传递给`AWS::Lambda::Version`资源的`[Description](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-version.html#cfn-lambda-version-description)`属性。

 `VersionDeletionPolicy`   <a name="sam-function-versiondeletionpolicy"></a>
为设置时`AutoPublishAlias`创建的 Lambda 版本资源指定删除策略。这控制了删除堆栈时是保留还是删除版本资源。  
*有效值*：`Delete`、`Retain` 或 `Snapshot`  
*类型*：字符串  
*必需*：否  
*CloudFormation 兼容性*：此属性是独有的 AWS SAM ，没有 CloudFormation 等效属性。它在生成的`AWS::Lambda::Version`资源上设置`DeletionPolicy`属性。

 `VpcConfig`   <a name="sam-function-vpcconfig"></a>
该配置使该函数能够访问您的虚拟私有云（VPC）中的私有资源。  
*类型*：[VpcConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-vpcconfig.html)  
*必需*：否  
*CloudFormation 兼容性*：此属性直接传递给`AWS::Lambda::Function`资源的`[VpcConfig](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-lambda-function-vpcconfig.html)`属性。

## 返回值
<a name="sam-resource-function-return-values"></a>

### Ref
<a name="sam-resource-function-return-values-ref"></a>

当向 `Ref` 内置函数提供此资源的逻辑 ID 时，将返回底层 Lambda 函数的资源名称。

有关使用 `Ref` 函数的更多信息，请参阅*《AWS CloudFormation 用户指南》*中的 [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-ref.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-ref.html)。

### Fn:: GetAtt
<a name="sam-resource-function-return-values-fn--getatt"></a>

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

有关使用 `Fn::GetAtt` 的更多信息，请参阅*《AWS CloudFormation 用户指南》*中的 [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-getatt.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-getatt.html)。

`Arn`  <a name="Arn-fn::getatt"></a>
底层 Lambda 函数的 ARN。

## 示例
<a name="sam-resource-function-examples"></a>

### 简单函数
<a name="sam-resource-function-examples-simple-function"></a>

以下是 Amazon S3 存储桶中包类型为 `Zip`（默认）的 [AWS::Serverless::Function](#sam-resource-function) 资源和函数代码的基本示例。

#### YAML
<a name="sam-resource-function-examples-simple-function--yaml"></a>

```
Type: AWS::Serverless::Function
Properties:
  Handler: index.handler
  Runtime: python3.9
  CodeUri: s3://{{bucket-name}}/{{key-name}}
```

### 函数属性示例
<a name="sam-resource-function-examples-function-properties-example"></a>

以下是使用`InlineCode`、、、`Layers``Tracing``Policies`、`Amazon EFS`文件系统和`Api`事件源的包类型`Zip`（默认）的示例。[AWS::Serverless::Function](#sam-resource-function)

#### YAML
<a name="sam-resource-function-examples-function-properties-example--yaml"></a>

```
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:::{{sam-s3-demo-bucket}}/*'
  Events:
    ApiEvent:
      Type: Api
      Properties:
        Path: /path
        Method: get
```

### ImageConfig 示例
<a name="sam-resource-function-examples-imageconfig-example"></a>

以下是包类型为 `Image` 的 Lambda 函数的 `ImageConfig` 示例。

#### YAML
<a name="sam-resource-function-examples-imageconfig-example--yaml"></a>

```
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 例子
<a name="sam-resource-function-examples-runtimemanagementconfig-examples"></a>

配置为根据当前行为更新其运行时环境的 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 例子
<a name="sam-resource-function-examples-snapstart-examples"></a>

在未来版本中 SnapStart 启用的 Lambda 函数示例：

```
TestFunc
  Type: AWS::Serverless::Function
  Properties:
    ...
    SnapStart:
      ApplyOn: PublishedVersions
```

### TenancyConfig 例子
<a name="sam-resource-function-examples-tenancyconfig-examples"></a>

开启租户隔离模式的 Lambda 函数示例：

```
TestFunction
  Type: AWS::Serverless::Function
  Properties:
    ...
    TenancyConfig:
      TenantIsolationMode: PER_TENANT
```

### S3 文件文件系统示例
<a name="sam-resource-function-examples-s3files-example"></a>

以下示例创建了一个用于挂载 Amazon S3 文件文件系统的 Lambda 函数。该模板创建一个 S3 存储桶、一个由该存储桶支持的 S3 文件系统、一个 VPC 子网中的挂载目标和一个接入点。该函数将接入点安装在，`/mnt/s3files`并且可以读取和写入同步到 S3 存储桶的文件。

**注意**  
您可以将 Amazon EFS 文件系统或 S3 文件系统附加到 Lambda 函数，但不能同时连接两者。

#### YAML
<a name="sam-resource-function-examples-s3files-example--yaml"></a>

```
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: Lambda function with S3 Files file system

Resources:
  # VPC and networking
  MyVpc:
    Type: AWS::EC2::VPC
    Properties:
      CidrBlock: 10.0.0.0/16
      EnableDnsSupport: true
      EnableDnsHostnames: true

  MySubnet:
    Type: AWS::EC2::Subnet
    Properties:
      VpcId: !Ref MyVpc
      CidrBlock: 10.0.1.0/24
      AvailabilityZone: !Select [0, !GetAZs '']

  MySecurityGroup:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: Security group for Lambda and S3 Files
      VpcId: !Ref MyVpc
      SecurityGroupIngress:
        - IpProtocol: tcp
          FromPort: 2049
          ToPort: 2049
          CidrIp: 10.0.0.0/16

  # S3 bucket for file storage
  MyS3Bucket:
    Type: AWS::S3::Bucket

  # IAM role for S3 Files to access the bucket
  S3FilesRole:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Effect: Allow
            Principal:
              Service: elasticfilesystem.amazonaws.com
            Action: sts:AssumeRole
      Policies:
        - PolicyName: S3FilesBucketAccess
          PolicyDocument:
            Version: '2012-10-17'
            Statement:
              - Effect: Allow
                Action:
                  - s3:GetObject
                  - s3:PutObject
                  - s3:DeleteObject
                  - s3:ListBucket
                Resource:
                  - !GetAtt MyS3Bucket.Arn
                  - !Sub '${MyS3Bucket.Arn}/*'

  # S3 Files resources
  MyS3FilesFileSystem:
    Type: AWS::S3Files::FileSystem
    Properties:
      Bucket: !GetAtt MyS3Bucket.Arn
      RoleArn: !GetAtt S3FilesRole.Arn

  MyS3FilesMountTarget:
    Type: AWS::S3Files::MountTarget
    Properties:
      FileSystemId: !Ref MyS3FilesFileSystem
      SubnetId: !Ref MySubnet
      SecurityGroups:
        - !Ref MySecurityGroup

  MyS3FilesAccessPoint:
    Type: AWS::S3Files::AccessPoint
    Properties:
      FileSystemId: !Ref MyS3FilesFileSystem
      PosixUser:
        Uid: '1000'
        Gid: '1000'
      RootDirectory:
        Path: /lambda
        CreationInfo:
          OwnerUid: '1000'
          OwnerGid: '1000'
          Permissions: '750'

  # Lambda function with S3 Files mount
  MyFunction:
    Type: AWS::Serverless::Function
    DependsOn: MyS3FilesMountTarget
    Properties:
      Handler: index.handler
      Runtime: python3.12
      Timeout: 120
      VpcConfig:
        SecurityGroupIds:
          - !Ref MySecurityGroup
        SubnetIds:
          - !Ref MySubnet
      FileSystemConfigs:
        - Arn: !GetAtt MyS3FilesAccessPoint.AccessPointArn
          LocalMountPath: /mnt/s3files
      Policies:
        - Version: '2012-10-17'
          Statement:
            - Effect: Allow
              Action:
                - s3files:ClientMount
                - s3files:ClientWrite
              Resource: !GetAtt MyS3FilesAccessPoint.AccessPointArn
      InlineCode: |
        import os

        def handler(event, context):
            # Write a file to the S3 Files mount
            with open('/mnt/s3files/hello.txt', 'w') as f:
                f.write('Hello from Lambda!')

            # List files at the mount path
            files = os.listdir('/mnt/s3files')
            return {'files': files}
```