

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

# Amazon SAM 与 Amazon Serverless Application Repository
<a name="using-aws-sam"></a>

 Amazon Serverless Application Model (Amazon SAM) 是一个开源框架，可用于在其上 Amazon构建[无服务器应用程序](https://www.amazonaws.cn/serverless/)。有关使用构建无服务器应用程序 Amazon SAM 的更多信息，请参阅《[https://docs.amazonaws.cn/serverless-application-model/latest/developerguide/](https://docs.amazonaws.cn/serverless-application-model/latest/developerguide/)。

在构建将发布到的应用程序时 Amazon Serverless Application Repository，必须考虑一组可用的受支持 Amazon 资源和策略模板。以下各节将更详细地介绍这些主题。

## 中支持的 Amazon 资源 Amazon Serverless Application Repository
<a name="supported-resources-for-serverlessrepo"></a>

 Amazon Serverless Application Repository 支持由许多 Amazon SAM Amazon CloudFormation 资源组成的无服务器应用程序。要查看支持的 Amazon 资源的完整列表 Amazon Serverless Application Repository，请参阅[支持的 Amazon 资源清单](list-supported-resources.md)。

如果您想请求支持以获取其他 Amazon 资源，请联系 Suppor [Amazon t](https://console.amazonaws.cn/support/home#/)。

**重要**  
Amazon Serverless Application Repository 阻止发布包含以下过于宽泛的 IAM 权限模式的应用程序，这些模式不遵循最低权限原则：  
将`AWSLambda_FullAccess`托管策略附加到 Lambda 函数
在内联 IAM 策略中`iam:*`对所有资源 (`*`) 授予`iam:AttachRolePolicy``iam:PutRolePolicy`、或
要发布您的应用程序，请仅`AWSLambda_FullAccess`替换为应用程序所需的特定 Lambda 权限`iam:AttachRolePolicy`、范围`iam:PutRolePolicy`、和`iam:PassRole`权限， ARNs 而不是所有资源。有关指导，请参阅 [IAM 安全最佳实践](https://docs.amazonaws.cn/IAM/latest/UserGuide/best-practices.html)。

**重要**  
如果您的应用程序模板包含以下任一自定义 IAM 角色或资源策略，则默认情况下，您的应用程序不会显示在搜索结果中。另外，客户需要确认应用程序的自定义 IAM 角色或资源策略，然后才能部署应用程序。有关更多信息，请参阅[确认应用程序功能](acknowledging-application-capabilities.md)。  
这适用于的资源列表是：  
**IAM 角色：[AWS::IAM::Group[AWS::IAM::InstanceProfile](https://docs.amazonaws.cn/AWSCloudFormation/latest/UserGuide/aws-resource-iam-instanceprofile.html)](https://docs.amazonaws.cn/AWSCloudFormation/latest/UserGuide/aws-properties-iam-group.html)**、[AWS::IAM::Policy](https://docs.amazonaws.cn/AWSCloudFormation/latest/UserGuide/aws-resource-iam-policy.html)、和[AWS::IAM::Role](https://docs.amazonaws.cn/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html)。
**资源策略：AWS::Lambda::LayerVersion**[权限](https://docs.amazonaws.cn/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-layerversionpermission.html)、[AWS::Events::EventBus策略[AWS::Lambda::Permission](https://docs.amazonaws.cn/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-permission.html)](https://docs.amazonaws.cn/AWSCloudFormation/latest/UserGuide/aws-resource-events-eventbuspolicy.html)、[AWS:: iam: Policy、、[AWS::ApplicationAutoScaling::ScalingPolicy[AWS::S3::BucketPolicy](https://docs.amazonaws.cn/AWSCloudFormation/latest/UserGuide/aws-properties-s3-policy.html)](https://docs.amazonaws.cn/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalingpolicy.html)、[AWS::SQS::QueuePolicy](https://docs.amazonaws.cn/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-policy.html)和 AWS::](https://docs.amazonaws.cn/AWSCloudFormation/latest/UserGuide/aws-resource-iam-policy.html) SN [S](https://docs.amazonaws.cn/AWSCloudFormation/latest/UserGuide/aws-properties-sns-policy.html):。TopicPolicy
如果您的应用程序包含[AWS::Serverless::Application](https://docs.amazonaws.cn/serverless-application-model/latest/developerguide/serverless-sam-template.html#serverless-sam-template-application)资源，则客户需要先确认该应用程序包含**嵌套应用程序**，然后才能部署该应用程序。有关嵌套应用程序的更多信息，请参阅《*Amazon Serverless Application Model 开发人员指南》*中的[嵌套应用程序](https://docs.amazonaws.cn/serverless-application-model/latest/developerguide/serverless-sam-template-nested-applications.html)。有关确认功能的更多信息，请参阅[确认应用程序功能](acknowledging-application-capabilities.md)。

## 策略模板
<a name="policy-templates-for-serverlessrepo"></a>

Amazon SAM 为您提供了策略模板列表，用于将 Lambda 函数的权限范围限定为应用程序所使用的资源。使用策略模板不需要额外的客户确认，即可搜索、浏览或部署应用程序。

有关标准 Amazon SAM 策略模板的列表，请参阅《*[Amazon Serverless Application Model 开发人员指南](https://docs.amazonaws.cn/serverless-application-model/latest/developerguide/)*》中的[Amazon SAM 策略模板](https://docs.amazonaws.cn/serverless-application-model/latest/developerguide/serverless-policy-templates.html)。