

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

# 部署应用程序
<a name="serverlessrepo-consuming-applications"></a>

此部分帮助您了解如何查找和部署已发布到 AWS Serverless Application Repository的无服务器应用程序。您可以通过访问[公共网站](https://aws.amazon.com/serverless/serverlessrepo)来浏览公开发布的应用程序，而无需 AWS 注册帐户。或者，您可以从 AWS Lambda 控制台中浏览应用程序。

某些应用程序具有**经过验证的作者**徽章，并附有指向作者个人资料的链接。如果** AWS 作者以合理和谨慎的服务提供商的身份对请求者提供的信息进行了真诚的审查，并确认请求者的身份与所声称的相同，则该作者被视为经过验证**的作者。

在部署应用程序之前 AWS Serverless Application Repository，请参阅以下主题以了解应用程序部署权限和应用程序功能。

**Topics**
+ [

# 应用程序部署权限
](application-deployment-permissions.md)
+ [

# 应用程序功能：IAM 角色、资源策略和嵌套应用程序
](acknowledging-application-capabilities.md)
+ [

# 如何部署应用程序
](serverlessrepo-how-to-consume.md)

# 应用程序部署权限
<a name="application-deployment-permissions"></a>

要在中部署应用程序 AWS Serverless Application Repository，您必须拥有执行此操作的权限。您有权部署的应用程序分为三类：
+ **私有** — 使用同一个账户创建且未与任何其他账户共享的应用程序。您有权部署使用您的 AWS 账户创建的应用程序。
+ **私下共享** — 发布者已明确与一组特定 AWS 账户共享的应用程序。您有权部署已与您的 AWS 账户共享的应用程序。
+ **公开共享**-发布者与所有人共享的应用程序。您有权部署任何公开共享的应用程序。

您只能搜索和浏览您有权限的应用程序。其中包括使用您的 AWS 账户创建、与您的 AWS 账户私下共享以及公开共享的应用程序。不会为您显示所有其他应用程序。

**重要**  
包含嵌套应用程序的应用程序继承嵌套应用程序的共享限制。例如，假设一个应用程序是公开共享的，但它包含一个仅与创建父应用程序的 AWS 账户私下共享的嵌套应用程序。在这种情况下，如果您的 AWS 账户无权部署嵌套应用程序，则无法部署父应用程序。有关嵌套应用程序的更多信息，请参阅《*AWS Serverless Application Model 开发人员指南》*中的[嵌套应用程序](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-template-nested-applications.html)。

# 应用程序功能：IAM 角色、资源策略和嵌套应用程序
<a name="acknowledging-application-capabilities"></a>

在部署应用程序之前， AWS Serverless Application Repository 会检查应用程序模板中是否有 IAM 角色、 AWS 资源策略以及模板指定应创建的嵌套应用程序。IAM 资源，例如具有完全访问权限的 IAM 角色，可以修改您 AWS 账户中的任何资源。因此，建议您在继续之前检查与应用程序关联的权限，以便您不会无意中创建具有升级权限的资源。为确保已完成此操作，您必须先确认该应用程序包含功能，然后 AWS Serverless Application Repository 才能代表您部署应用程序。

应用程序可能包含以下四个功能中的任何功能：`CAPABILITY_IAM`、`CAPABILITY_NAMED_IAM`、`CAPABILITY_RESOURCE_POLICY` 和 `CAPABILITY_AUTO_EXPAND`。

以下资源需要您指定`CAPABILITY_IAM`或`CAPABILITY_NAMED_IAM`：[AWS::IAM::Group](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-iam-group.html)、[AWS::IAM::InstanceProfile[AWS::IAM::Policy](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-policy.html)](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-instanceprofile.html)、和[AWS::IAM::Role](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html)。如果应用程序包含具有自定义名称的 IAM 资源，您必须指定 `CAPABILITY_NAMED_IAM`。有关如何指定功能的示例，请参阅[查找并确认应用程序功能 (AWS CLI)](serverlessrepo-how-to-consume.md#acknowledging-application-capabilities-api)。

以下资源需要您指定`CAPABILITY_RESOURCE_POLICY`：[AWS::Lambda::LayerVersion权限](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-layerversionpermission.html)、、[AWS::Events::EventBus策略[AWS::Lambda::Permission](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-permission.html)](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-eventbuspolicy.html)、[AWS:: iam: Policy](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-policy.html)、、、[AWS::ApplicationAutoScaling::ScalingPolicy](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-applicationautoscaling-scalingpolicy.html)、[AWS::S3::BucketPolicy](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-policy.html)和。[AWS::SQS::QueuePolicy[AWS::SNS::TopicPolicy](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sns-policy.html)](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-sqs-policy.html)

包含一个或多个嵌套应用程序的应用程序要求您指定 `CAPABILITY_AUTO_EXPAND`。有关嵌套应用程序的更多信息，请参阅《*AWS Serverless Application Model 开发人员指南》*中的[嵌套应用程序](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-template-nested-applications.html)。

## 查找并确认应用程序功能（控制台）
<a name="acknowledging-application-capabilities-console"></a>

您可以在[AWS Serverless Application Repository 网站上](https://aws.amazon.com/serverless/serverlessrepo/)找到可用的应用程序，也可以通过 [Lambda 控制台（在 AWS Serverless Application Repository 选项卡下的 “**创建函数**” 页面上）](https://console.aws.amazon.com/lambda/home?region=us-east-1#/create?tab=serverlessApps)找到可用的应用程序。 AWS Serverless Application Repository 

默认情况下，要求确认用于创建自定义 IAM 角色或资源策略的功能的应用程序不会显示在搜索结果中。要搜索包含这些功能的应用程序，您必须选中 **Show apps that create custom IAM roles or resource policies (显示创建自定义 IAM 角色或资源策略的应用程序)** 复选框。

在您选择应用程序时，可以在 **Permissions (权限)** 选项卡下查看应用程序的功能。要部署应用程序，您需要选中 **I acknowledge this application creates custom IAM roles or resource policies (我确认此应用程序创建自定义 IAM 角色或资源策略)** 复选框。如果您不确认这些功能，则会看到以下错误消息：**需要确认。要进行部署，请选中配置应用程序参数部分中的复选框**。

## 查看应用程序功能 (AWS CLI)
<a name="acknowledging-application-capabilities-cli"></a>

要使用查看应用程序的功能 AWS CLI，您首先需要该应用程序的 Amazon 资源名称 (ARN)。然后，您可以执行以下命令：

```
aws serverlessrepo get-application \
--application-id application-arn
```

[requiredCapabilities](https://docs.aws.amazon.com/serverlessrepo/latest/devguide/applications-applicationid.html#applications-applicationid-prop-version-requiredcapabilities) 响应属性包含您需要确认然后才能部署应用程序的应用程序功能列表。请注意，如果 [requiredCapabilities](https://docs.aws.amazon.com/serverlessrepo/latest/devguide/applications-applicationid.html#applications-applicationid-prop-version-requiredcapabilities) 属性为空，则应用程序没有所需功能。



# 如何部署应用程序
<a name="serverlessrepo-how-to-consume"></a>

本节向您介绍使用 AWS 管理控制台 或从部署无服务器应用程序的过程。 AWS Serverless Application Repository AWS CLI

## 部署新应用程序（控制台）
<a name="consuming-applications-console"></a>

本节介绍如何 AWS Serverless Application Repository 使用部署新应用程序 AWS 管理控制台。有关部署现有应用程序的新版本的说明，请参阅[更新应用程序](serverlessrepo-how-to-consume-new-version.md)。

### 浏览、搜索和部署应用程序
<a name="browse-and-search-applications"></a>

使用以下步骤在中查找、配置和部署应用程序。 AWS Serverless Application Repository 

**要在中查找和配置应用程序 AWS Serverless Application Repository**

1. 打开 [AWS Serverless Application Repository 公有主页](https://aws.amazon.com/serverless/serverlessrepo)，或打开 [AWS Lambda 控制台](https://console.aws.amazon.com/lambda/)。选择 **Create function (创建函数)**，然后选择 **Browse serverless app repository (浏览无服务器应用程序存储库)**。

1. 浏览或搜索应用程序。
**注意**  
要显示包含自定义 IAM 角色或资源策略的应用程序，请选中 **Show apps that create custom IAM roles or resource policies (显示创建自定义 IAM 角色或资源策略的应用程序)** 复选框。有关自定义 IAM 角色和资源策略的更多信息，请参阅[确认应用程序功能](acknowledging-application-capabilities.md)。

1. 选择一个应用程序以查看详细信息，例如其权限、功能以及 AWS 客户部署该应用程序的次数。

   将显示您尝试部署应用程序的 AWS 区域的部署计数。

1. 在应用程序详细信息页面上，通过查看 AWS SAM 模板、许可证和自述文件来查看应用程序的权限和应用程序资源。在此页上，您还可以找到公开共享的应用程序的 **Source code URL (源代码 URL)** 链接。如果应用程序包含任何嵌套应用程序，您还可以在此页面上查看嵌套应用程序的详细信息。

1. 在 **Application settings (应用程序设置)** 部分中配置应用程序。有关配置特定应用程序的指导，请参阅该应用程序的自述文件。

   例如，配置要求可能包括指定您希望应用程序有权访问的资源的名称。这样的资源可能是亚马逊 DynamoDB 表、亚马逊 S3 存储桶或 Amazon API Gateway API API。

1. 选择**部署**。这样做您会进入 **Deployment status** 页。
**注意**  
如果应用程序具有需要确认的功能，您必须选中 **I acknowledge this application creates custom IAM roles or resource policies (我确认此应用程序创建自定义 IAM 角色或资源策略)** 复选框，然后才能部署应用程序。否则将导致出现错误。有关自定义 IAM 角色和资源策略的更多信息，请参阅[确认应用程序功能](acknowledging-application-capabilities.md)。

1. 在 **Deployment status (部署状态)** 页面上，您可以查看部署的进度。在等待部署完成时，您可以搜索和浏览其他应用程序，然后通过 Lambda 控制台返回此页面。

成功部署应用程序后，您可以查看和管理使用现有 AWS 工具创建的资源。

## 部署新应用程序 (AWS CLI)
<a name="consuming-applications-cli"></a>

本节介绍如何使用从部署新应用程序 AWS CLI。 AWS Serverless Application Repository 有关部署现有应用程序的新版本的说明，请参阅[更新应用程序](serverlessrepo-how-to-consume-new-version.md)。

### 查找并确认应用程序功能 (AWS CLI)
<a name="acknowledging-application-capabilities-api"></a>

要使用确认应用程序的功能 AWS CLI，请执行以下步骤：

1. **查看应用程序的功能。**使用以下 AWS CLI 命令查看应用程序的功能：

   ```
   aws serverlessrepo get-application \
   --application-id application-arn
   ```

   [requiredCapabilities](https://docs.aws.amazon.com/serverlessrepo/latest/devguide/applications-applicationid.html#applications-applicationid-prop-version-requiredcapabilities) 响应属性包含您需要确认然后才能部署应用程序的应用程序功能列表。您也可以使用中的 [GetApplication API](https://docs.aws.amazon.com/goto/WebAPI/serverlessrepo-2017-09-08/GetApplication) AWS SDKs 来获取这些数据。

1. **创建变更集。**创建 CloudFormation 变更集时，必须提供一组必需的[权能](https://docs.aws.amazon.com/serverlessrepo/latest/devguide/applications-applicationid-changesets.html#applications-applicationid-changesets-createcloudformationchangesetinput-capabilities)。例如，使用以下 AWS CLI 命令通过确认应用程序的功能来部署应用程序：

   ```
   aws serverlessrepo create-cloud-formation-change-set \
   --application-id application-arn \
   --stack-name unique-name-for-cloud-formation-stack \
   --capabilities list-of-capabilities
   ```

   成功执行此命令后，将返回更改集 ID。下一步需要更改集 ID。您也可以使用中的 [CreateCloudFormationChangeSet API](https://docs.aws.amazon.com/goto/WebAPI/serverlessrepo-2017-09-08/CreateCloudFormationChangeSet) AWS SDKs 来创建变更集。

   例如，以下 AWS CLI 命令确认包含具有自定义名称的[AWS::IAM::Role](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html)资源和一个或多个嵌套应用程序的应用程序：

   ```
   aws serverlessrepo create-cloud-formation-change-set \
   --application-id application-arn \
   --stack-name unique-name-for-cloud-formation-stack \
   --capabilities CAPABILITY_NAMED_IAM CAPABILITY_AUTO_EXPAND
   ```

1. **执行变更集。**执行更改集将实际执行部署。提供在上一步中创建更改集时返回的更改集 ID。

   以下示例 AWS CLI 命令执行应用程序变更集来部署应用程序：

   ```
   aws cloudformation execute-change-set \
   --change-set-name changeset-id-arn
   ```

   您也可以使用中的 [ExecuteChangeSet API](https://docs.aws.amazon.com/goto/WebAPI/cloudformation-2010-05-15/CreateChangeSet) AWS SDKs 来执行变更集。

## 删除应用程序堆栈
<a name="delete-application-stack"></a>

要删除之前使用部署的应用程序 AWS Serverless Application Repository，请按照与删除 CloudFormation 堆栈相同的步骤进行操作：
+ **AWS 管理控制台**：要使用删除应用程序 AWS 管理控制台，请参阅*AWS CloudFormation 用户指南中的[在 CloudFormation 控制台上删除堆栈](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-delete-stack.html)。*
+ **AWS CLI**：要使用删除应用程序 AWS CLI，请参阅*AWS CloudFormation 用户指南中的[删除堆栈](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-cli-deleting-stack.html)。*

# 更新应用程序
<a name="serverlessrepo-how-to-consume-new-version"></a>

在部署了中的应用程序后 AWS Serverless Application Repository，您可能需要对其进行更新。例如，您可能希望更改应用程序设置，或者您可能希望将应用程序更新到已发布的最新版本。

以下各节介绍如何使用 AWS 管理控制台 或部署应用程序的新版本 AWS CLI。

## 更新应用程序（控制台）
<a name="update-applications"></a>

要更新之前部署的应用程序，请使用与部署新应用程序相同的过程，并*提供与最初部署该应用程序相同的应用程序名称*。特别是，在应用程序 AWS Serverless Application Repository 名称前`serverlessrepo-`加上。但是，要部署应用程序的新版本，您需要提供原始应用程序名称而不在前面附加 `serverlessrepo-`。

例如，如果您部署了具有名称 `MyApplication` 的应用程序，则堆栈名称将为 `serverlessrepo-MyApplication`。要更新该应用程序，您需要`MyApplication`再次提供名称，请*不要*指定的完整堆栈名称。`serverlessrepo-MyApplication`

对于所有其他应用程序设置，您可以保持与之前部署相同的值，也可以提供新值。

## 更新应用程序 (AWS CLI)
<a name="update-applications-cli"></a>

要更新之前部署的应用程序，请使用与部署新应用程序相同的过程，并*提供与最初部署该应用程序所用的相同 `--stack-name`*。特别是，在堆栈 AWS Serverless Application Repository 名称前面`serverlessrepo-`加上。但是，要部署应用程序的新版本，您需要提供原始堆栈名称而不在前面附加 `serverlessrepo-`。

例如，如果您部署了具有堆栈名称 `MyApplication` 的应用程序，则创建的堆栈名称将为 `serverlessrepo-MyApplication`。要更新该应用程序，您需要`MyApplication`再次提供名称，请*不要*指定的完整堆栈名称。`serverlessrepo-MyApplication`