

 AWS Cloud9 不再向新客户提供。 AWS Cloud9 的现有客户可以继续正常使用这项服务。[了解详情](https://aws.amazon.com/blogs/devops/how-to-migrate-from-aws-cloud9-to-aws-ide-toolkits-or-aws-cloudshell/)

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

# 使用 AWS 工具包
<a name="toolkit-welcome"></a>

您可以通过 “ AWS 资源管理器” 窗口 AWS 服务 使用 AWS 工具包进行导航和交互。

## 为什么要使用 AWS 工具包？
<a name="toolkit-why"></a>

该 AWS 工具包是 AWS Cloud9 集成开发环境 (IDE) 的扩展。您可以 AWS 服务 通过此扩展程序访问和使用各种各样的。该 AWS 工具包取代了 Lambda 插件为提供的功能。 AWS Cloud9有关更多信息，请参阅 [禁用 AWS 工具包](#disable-toolkit)。

**重要**  
AWS 工具包支持是的集成功能 AWS Cloud9。目前，您无法使用第三方扩展自定义 AWS Cloud9 IDE。

**警告**  
如果您使用 Mozilla Firefox 作为带有 AWS Cloud9 IDE 的首选浏览器，则有第三方 cookie 设置会阻止 AWS Cloud9 Webview 和 AWS Toolkit 在浏览器中正常运行。要解决此问题，您必须确保在浏览器设置的“*隐私和安全*”部分没有阻止 *Cookie*，如下图所示。  

![\[显示 Firefox 的 Cookie 设置\]](http://docs.aws.amazon.com/zh_cn/cloud9/latest/user-guide/images/firefox-workaround.png)


目前，可以通过 AWS Toolkit 扩展访问以下内容 AWS 服务 和资源：
+ [AWS 应用程序运行器](using-apprunner.md)
+ [API Gateway](api-gateway-toolkit.md)
+ [CloudFormation 堆栈](cloudformation-toolkit.md)
+ [CloudWatch 日志](cloudwatch-logs-toolkit.md)
+ [AWS Lambda](lambda-toolkit.md)
+ [资源](more-resources.md)
+ [Amazon S3 存储桶和对象](s3-toolkit.md)
+ [AWS Serverless Application Model applications](serverless-apps-toolkit.md)
+ [Step Functions 和状态机](bulding-stepfunctions.md)
+ [Systems Manager 自动化文档](systems-manager-automation-docs.md)
+ [在 AWS Cloud9 IDE 中使用 Amazon ECR](ecr.md)
+ [AWS IoT](iot-start.md)
+ [使用 Amazon Elastic Container Service](ecs.md)
+ [Amazon EventBridge](eventbridge.md)
+ [与... 合作 AWS Cloud Development Kit (AWS CDK)](cdk-explorer.md)

## 启用 AWS 工具包
<a name="access-toolkit"></a>

如果您的环境中没有该 AWS 工具包，则可以在 “**首选项**” 选项卡中将其启用。<a name="enabling-toolkit"></a>

**启用工具 AWS 包**

1. 在菜单栏上，依次选择 **AWS Cloud9**、**Preferences（首选项）**。

1. 在 **Preferences（首选项）**选项卡上，在侧面导航窗格中选择 **AWS Settings（Amazon 设置）**。

1. 在 **AWS 资源**窗格中，启用 **AWS Toolkit**，以便在绿色背景上显示复选标记。

   启用 AWS Toolkit 后，集成开发环境 (IDE) 将刷新以显示更新后的 “**启用 AWS 工具包**” 设置。还会在 **Environment**（环境）选项下方的 IDE 旁边显示 AWS Toolkit 选项。

**重要**  
如果您的 AWS Cloud9 环境的 EC2 实例无法访问互联网（也就是说，不允许出站流量），则在启用 AWS Toolkit 并重新启动 IDE 之后，可能会显示一条消息。此消息指出 AWS Toolkit 所需的依赖项无法下载。如果是这样的话，你也不能使用该 AWS 工具包。  
要解决此问题，请为 Amazon S3 创建 VPC 终端节点。这将授予访问您 AWS 区域 中的 Amazon S3 存储桶的权限，该存储桶包含使 IDE 保持最新状态所需的依赖项。  
有关更多信息，请参阅 [为 Amazon S3 配置 VPC 终端节点以下载依赖项](ec2-ssm.md#configure-s3-endpoint)。



## 管理 AWS Toolkit 的访问凭证
<a name="credentials-for-toolkit"></a>

AWS 工具包与各种各样的人交互. AWS 服务要管理访问控制，请确保您的 AWS Toolkit 服务的 IAM 实体拥有该系列服务的必要权限。如需快速开始，请使用 [AWS 托管式临时凭证](security-iam.md#auth-and-access-control-temporary-managed-credentials)来获得必要的权限。这些托管证书的工作原理是代表 AWS 实体（例如 IAM 用户）授予您的 EC2 环境访问权限。 AWS 服务 

但是，如果您已将开发环境的 EC2 实例启动到**私有子网**，则无法使用 AWS 托管临时证书。因此，作为替代方案，您可以 AWS 服务 通过手动创建自己的凭据集允许 AWS Toolkit 访问您的。这组凭证称为*配置文件*。配置文件具有称为访问密钥的长期凭证。您可以从 IAM 控制台获取这些访问密钥。<a name="manual-credentials"></a>

**创建配置文件以提供 Toolkit 的 AWS 访问凭证**

1. 要获取访问密钥（包括访问密钥 *ID 和私有访问**密钥），请访问 https://console.aws.amazon.com*[/](https://console---aws.amazon.com.rproxy.govskope.caiam)iam 上的 IAM 控制台。

1. 从导航栏中选择 **Users（用户）**，然后选择您的 AWS 用户名（不是复选框）。

1. 选择 **Security Credentials（安全凭证）**选项卡，然后选择 **Create access key（创建访问密钥）**。
**注意**  
如果您已经拥有访问密钥但无法访问您的私有密钥，请将旧密钥设为非活动状态并创建一个新密钥。

1. 在显示您的访问密钥 ID 和秘密访问密钥的对话框中，选择 **Download .csv file（下载 .csv 文件）**以将此信息存储在安全位置。

1. 下载访问密钥后，选择 **“窗口”、“新建终端”****，启动 AWS Cloud9 环境并启动终端**会话。

1. 在终端窗口中，运行以下命令。

   ```
   aws configure --profile toolkituser
   ```

   在本例中，`toolkituser` 是正在使用的配置文件名称，但您可以选择自己的配置文件名称。

1. 在命令行中，输入您之前从 IAM 控制台下载的 `AWS Access Key ID` 和 `AWS Secret Access Key`。
   + 对于`Default region name`，请指定 AWS 区域 （例如，`us-east-1`）。
   + 对于 `Default output format`，请指定文件格式（例如，`json`）。
**注意**  
有关对配置文件进行配置时选项的更多信息，请参阅《AWS Command Line Interface 用户指南》**中的[配置基础](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)。

1. 创建个人资料后，启动 AWS Toolkit，前往 Tool [**AWS kit 菜单**](toolkit-navigation.md#toolkit-menu)，然后选择 **Connect t** o AWS。

1. 在 **“选择 AWS 凭据配置文件**” 字段中，选择您刚刚在终端中创建的配置文件（例如`profile:toolkituser`）。

如果所选配置文件包含有效的访问凭据，则**AWS 资源管理器**窗格将刷新以显示您现在 AWS 服务 可以访问的凭据。

### 使用 IAM 角色向在 EC2 实例上运行的应用程序授予权限
<a name="ec2-instance-credentials"></a>

您也可以使用 IAM 角色管理在 EC2 实例上运行的应用程序的临时凭证。该角色提供应用程序在调用其他 AWS 资源时可以使用的临时权限。当您启动 EC2 实例时，可指定要与实例关联的 IAM 角色。在针对 AWS 服务发出 API 请求时，在实例上运行的应用程序可以使用角色提供的临时凭证。

在您创建角色后，通过创建*实例配置文件*，将此角色及其关联的权限分配给实例。实例配置文件附加到实例，并且可以向在实例上运行的应用程序提供角色的临时凭证。

有关更多信息，请参阅《IAM 用户指南》**中的[使用 IAM 角色为 Amazon EC2 实例上运行的应用程序授予权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-ec2.html#roles-usingrole-ec2instance-get-started)。

## 识别 AWS 工具包组件
<a name="ui-components"></a>

以下屏幕截图显示了该 AWS 工具包的三个关键用户界面组件。

![\[带有标签的屏幕截图，显示了工具包的关键用户界面 AWS 组件\]](http://docs.aws.amazon.com/zh_cn/cloud9/latest/user-guide/images/toolkit-UI-overview-labelled.png)


1. **AWS 资源管理器**窗口：用于与可通过 Toolk AWS 服务 it 访问的窗口进行交互。您可以使用集成开发环境 (IDE) 左侧的 AWS 选项在显示和隐藏**AWS 资源管理器**之间切换。有关使用此接口组件和访问其他接口组件 AWS 服务 的更多信息 AWS 区域，请参阅[使用 AWS Explorer 处理多个区域中的服务和资源](toolkit-navigation.md#working-with-aws-explorer)。

1. **Toolkit** 菜单：用于管理连接 AWS、自定义 **AWS Explorer** 窗口的显示、创建和部署无服务器应用程序、使用 GitHub 存储库以及访问文档。有关更多信息，请参阅 [访问和使用 AWS 工具包菜单](toolkit-navigation.md#toolkit-menu)。

1. **AWS 配置**窗格：用于自定义您使用 Toolkit 与之 AWS 服务 交互的行为。有关更多信息，请参阅 [使用 “ AWS 配置” 窗格修改 AWS Toolkit 设置](toolkit-navigation.md#configuration-options)。

## 禁用 AWS 工具包
<a name="disable-toolkit"></a>

您可以在 “**首选项**” 选项卡中禁用该 AWS 工具包。<a name="disabling-toolkit"></a>

**禁用工具 AWS 包**

1. 在菜单栏上，依次选择 **AWS Cloud9**、**Preferences（首选项）**。

1. 在 **Preferences（首选项）**选项卡上，在侧面导航窗格中选择 **AWS Settings（Amazon 设置）**。

1. 在 “**AWS 资源**” 窗格中，关闭 “**AWS AWS 工具包**”。

   禁用 AWS Toolkit 后，集成开发环境 (IDE) 将刷新，移除 IDE 旁边的 “**环境**” 选项下的 “ AWS 工具包” 选项。



## AWS 工具包主题
<a name="toolkit-resources-info"></a>
+ [浏览和配置工具包 AWS](toolkit-navigation.md)
+ [AWS App Runner 与 AWS 工具包一起使用](using-apprunner.md)
+ [使用 AWS 工具包使用 API Gateway](api-gateway-toolkit.md)
+ [使用 AWS Toolkit 处理 AWS CloudFormation 堆栈](cloudformation-toolkit.md)
+ [使用 AWS 工具包处理 AWS Lambda 函数](lambda-toolkit.md)
+ [使用资源](more-resources.md)
+ [使用 AWS 工具包使用 Amazon S3](s3-toolkit.md)
+ [AWS SAM 使用 AWS 工具包](serverless-apps-toolkit.md)
+ [与亚马逊合作 CodeCatalyst](ide-toolkits-cloud9.md)
+ [](ecr.md)

# 浏览和配置工具包 AWS
<a name="toolkit-navigation"></a>

您可以通过以下 AWS Toolkit 界面元素访问资源和修改设置：
+ [**AWS 资源管理器**窗口](#working-with-aws-explorer)： AWS 服务 从其他窗口访问 AWS 区域。
+ [**AWS Toolkit** 菜单](#toolkit-menu)：创建和部署无服务器应用程序、显示或隐藏 AWS 区域、访问用户帮助以及与 Git 存储库交互。
+ [**AWS 配置**窗格](#configuration-options)：修改影响您在 AWS Toolkit AWS 服务 中与之交互方式的设置。

## 使用 AWS Explorer 处理多个区域中的服务和资源
<a name="working-with-aws-explorer"></a>

在**AWS 资源管理器**窗口中，您可以选择 AWS 服务 和使用与该服务关联的特定资源。在 **AWS 各区服务浏览器**中，选择服务名称节点（例如，API Gateway 或 Lambda）。然后，选择与该服务关联的特定资源（例如，REST API 或 Lambda 函数）。当您选择特定资源时，菜单会显示可用的交互选项，例如上传或下载、调用或复制。

考虑以下示例。如果您的 AWS 账户 凭证可以访问 Lambda 函数，请展开为列出的 Lambda 节点 AWS 区域，然后选择要调用的特定 Lambda 函数或将其作为代码上传到 IDE。 AWS Cloud9 您还可以打开节点标题的上下文（右键单击）菜单，开始创建使用 AWS Serverless Application Model的应用程序。

**注意**  
如果在集成开发环境 (IDE) 中看不到查看**AWS 资源管理器**窗口的选项，请确认已启用该 AWS 工具包。然后，在确认已启用后，再试一次。有关更多信息，请参阅 [启用 AWS 工具包](toolkit-welcome.md#access-toolkit)。

**AWS 各区服务浏览器**窗口还可以显示托管在多个 AWS 区域中的服务。

## AWS 服务 从选定区域进行访问


1. 在 **AWS 各区服务浏览器**窗口中，依次选择 **Toolkit** 菜单、**Show region in the Explorer（在 Explorer 中显示区域）**。

1. 从 **“选择要在 AWS 资源管理器中显示的区域”** 列表中，选择一个 AWS 区域。

   选定的区域将添加到 **AWS 各区服务浏览器窗口**。要访问可用的服务和资源，请选择区域名称前面的箭头 (>)。

**注意**  
也可以使用以下选项隐藏**AWS 资源管理器窗口 AWS 区域 **中的选定内容：  
打开区域的上下文（右键单击）菜单，然后选择 **Hide region from the Explorer**（从 Explorer 中隐藏区域）。
在 AWS Toolkit 菜单中，**从资源管理器中选择隐藏区域**，然后选择要隐藏的区域。

## 访问和使用 AWS 工具包菜单
<a name="toolkit-menu"></a>

**AWS Toolkit** 支持对创建和部署[无服务器应用程序](serverless-apps-toolkit.md)选项的访问。您可以使用此菜单管理连接、更新 **AWS：Explorer** 窗口、访问文档以及与 GitHub 存储库交互。

要访问 **Toolkit** 菜单，请选择 **AWS 各区服务浏览器**窗口中与 **AWS：各区服务浏览器**标题相反方向的滚动图标。

![\[带标注的屏幕截图，显示 AWS Toolkit 的 Toolkit 菜单的位置\]](http://docs.aws.amazon.com/zh_cn/cloud9/latest/user-guide/images/toolkit-UI-menu-location.png)


下表概述了 **Toolkit** 菜单上的可用选项。


****工具包**菜单选项**  

| 菜单选项 | 说明 | 
| --- | --- | 
|  **刷新 AWS 资源管理器**  |  选择此选项可刷新 **AWS Explorer** 以显示自上次您打开此窗口以来修改过的所有 AWS 服务 。  | 
|  **Connect to AWS**  |  将 AWS Toolkit 连接到存储在*配置文件*中的 AWS 账户 使用凭据。有关更多信息，请参阅 [管理 AWS Toolkit 的访问凭证](toolkit-welcome.md#credentials-for-toolkit)。  | 
|  **在各区服务浏览器中显示区域**  |   AWS 区域 在**AWS 资源管理器**窗口中显示。有关更多信息，请参阅 [使用 AWS Explorer 处理多个区域中的服务和资源](#working-with-aws-explorer)。  | 
|  **从各区服务浏览器中隐藏区域**  |  在**AWS 资源管理器**窗口 AWS 区域 中隐藏。有关更多信息，请参阅 [使用 AWS Explorer 处理多个区域中的服务和资源](#working-with-aws-explorer)。  | 
|  **创建新的 SAM 应用程序**  |  为新的 AWS 无服务器应用程序生成一组代码文件。有关如何创建和部署 SAM 应用程序的更多信息，请参阅[AWS SAM 使用 AWS 工具包](serverless-apps-toolkit.md)。  | 
|  **部署 SAM 应用程序**  |  将无服务器应用程序部署到。 AWS有关如何创建和部署 SAM 应用程序的更多信息，请参阅[AWS SAM 使用 AWS 工具包](serverless-apps-toolkit.md)。  | 
|  **查看快速入门**  |  打开此快速入门指南。  | 
|  **查看 Toolkit 文档**  |  打开 AWS Toolkit 的用户指南。  | 
|  **在 “查看源代码” GitHub**  |  打开 AWS 工具包的 GitHub 存储库。  | 
|  **在上创建新问题 GitHub**  |  在 Github 上打开 AWS 工具包的新问题页面  | 
|  **提交快速反馈**  |  向 AWS Toolkit 开发团队提交私密的单向反馈。对于需要对话或错误修复的问题，请通过选择 **Create a New Issue on Github**（在 Github 上创建新问题）菜单选项，在 Github 中提交问题。  | 
|  **关于 AWS 工具包**  |  显示有关正在运行的 Toolkit 版本及其配置的 Amazon 操作系统的信息。  | 

## 使用 “ AWS 配置” 窗格修改 AWS Toolkit 设置
<a name="configuration-options"></a>

要访问 **AWS Configuration（Amazon 配置）**窗格，依次选择 **AWS Cloud9**、**Preferences（首选项）**。然后，在 **Preferences（首选项）**窗口中，在 **Project Settings（项目设置）**下，选择 **AWS Configuration（Amazon 配置）。**

![\[带有标签的屏幕截图，显示工具包的 “ AWS 配置” 菜单的位置 AWS\]](http://docs.aws.amazon.com/zh_cn/cloud9/latest/user-guide/images/toolkit-UI-aws-config-location.png)


下表概述了 **AWS 配置**菜单上的可用选项。


****  

| 菜单选项 | 说明 | 
| --- | --- | 
|  **AWS：配置文件**  |  设置要从中获取凭证的凭证配置文件的名称。  | 
|  **AWS：默认区域缺失**  |  表示如果**AWS 资源管理器**窗口中没有选 AWS 区域 定凭据配置文件的默认值，则要采取的操作。您可以从三个选项中进行选择： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/cloud9/latest/user-guide/toolkit-navigation.html)  | 
|  **AWS > S3：每页最大项目数**  |  指定在 **AWS Explorer** 窗口中一次显示多少 Amazon S3 对象或文件夹。当显示最大数量时，您可以选择 **Load More（加载更多）**以显示下一个批次。 该字段接受值的范围介于 3 到 1000 之间。此设置仅适用于同时显示的对象或文件夹的数量。您创建的所有存储桶都会一次性显示。默认情况下，每个存储桶中最多可以创建 100 个存储桶。 AWS 账户  | 
|  **AWS > Samcli：位置**  |  指示用于创建、构建、打包和部署[无服务器应用程序](serverless-apps-toolkit.md)的 SAM CLI 的位置。  | 
|  **AWS > Samcli > 调试 > 附件 > 重试：最大值：**  |  指定在放弃之前，Toolkit 尝试连接 SAM CLI 调试程序的次数。默认限制为 30 次尝试。 当您在 AWS SAMCLI 中以调试模式在本地调用 Lambda 函数时，可以将调试器附加到该函数。  | 
|  **AWS > Samcli > 调试 > 附件 > 超时：Millis：**  |  指定在放弃之前，Toolkit 尝试连接 SAM CLI 调试程序的时间。默认超时为 30000 毫秒（30 秒）。 当您在 AWS SAMCLI 中以调试模式在本地调用 Lambda 函数时，可以将调试器附加到该函数。  | 
|  **AWS : 日志级别:**  |  设置录入的工作流事件的类别。可用级别如下： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/cloud9/latest/user-guide/toolkit-navigation.html)  | 
|  **AWS : 遥测**  |  启用或禁用向发送使用情况数据。 AWS默认情况下启用  | 

# 使用 AWS 工具包使用 API Gateway
<a name="api-gateway-toolkit"></a>

您可以使用 API Gateway 创建 RESTful APIs 并 WebSocket APIs 启用实时双向通信应用程序。有关如何使用 API Gateway APIs 进行创建和管理的更多信息，请参阅 AP [https://docs.aws.amazon.com/apigateway/latest/developerguide/](https://docs.aws.amazon.com/apigateway/latest/developerguide/)。

借助 AWS Toolkit，您可以通过指定 REST 资源、方法类型和作为输入传入的数据来配置对 REST API 的调用。

## APIs 在 API Gateway 中调用 REST
<a name="api-gateway-toolkit-invoke"></a>

**重要**  
使用 AWS Toolkit 调用 API 方法可能会导致无法撤消的资源更改。例如，如果您调用 `POST` 方法，则调用成功时，API 的资源将更新。

您可以 AWS 从 AWS 工具包中调用 API Gateway。

## 调用 REST API


1. 在**AWS 资源管理器**窗口中，选择 API Gateway 节点以查看当前 APIs 可用的 REST 列表 AWS 区域。

1. 右键单击 REST API，然后选择 **Invoke on AWS（在 Amazon 上调用）**。
**注意**  
您可以使用上下文菜单复制 REST API 的 URL、名称和 Amazon 资源名称（ARN）。

   此时将显示 **Invoke methods**（调用方法）窗口。您可以配置对 API 的调用。

1. 对于 **Select a resource**（选择资源），选择要与之交互的 REST 资源。

1. 对于 **Select authentication method（选择身份验证方法）**，请选择以下方法之一：
   + **GET**：从通过 API 访问的后端服务获取资源。
   + **OPTIONS**：请求有关 API Gateway 支持的方法和操作的信息。
   + **POST**：在通过 API 访问的后端服务中创建新资源。

1. 要向 API 方法调用提供输入，可以使用查询字符串或 JSON 格式的负载：
   + **查询字符串**：使用格式 `parameter1=value1&parameter2=value2` 输入查询字符串。（在使用查询字符串之前，请创建[映射模板](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html)，以便在传入的 Web 请求发送到集成后端之前对其进行转换。）
   + JSON 格式：您可以在 **Invoke methods（调用方法）**窗口中的大文本字段中定义 JSON 格式的负载。

     例如，您可以利用包含以下负载的 `POST` 方法来添加新的资源：

     ```
     {"type": "soda", "price" : 3.99}       
     ```

1. 选择 **Invoke（调用）**按钮调用 REST API 资源。

   REST API 响应将显示在 **AWS Remote Invocations（Amazon 远程调用）**选项卡中。响应正文包含 JSON 格式的资源数据。

# AWS App Runner 与 AWS 工具包一起使用
<a name="using-apprunner"></a>

[AWS App Runner](https://docs.aws.amazon.com/apprunner/latest/dg/what-is-apprunner.html) 提供了一种快速且经济高效的方式，从源代码或容器镜像直接部署到 AWS 云中可扩展的安全 Web 应用程序。使用它，您无需学习新技术、决定使用哪种计算服务，也不需要知道如何配置和配置 AWS 资源。

您可以使用 AWS App Runner 基于*源图像或源**代码*创建和管理服务。如果您使用源镜像，则可以选择存储在镜像存储库中的公有或私有容器镜像。App Runner 支持以下镜像存储库提供商：
+ Amazon Elastic Container Registry（Amazon ECR）：在您的 AWS 账户中存储私有镜像。
+ Amazon Elastic Container Registry Public (Amazon ECR Public)：存储公开可读的镜像。

如果选择源代码选项，则可以从受支持的存储库提供商维护的源代码存储库进行部署。目前，App Runner 支持[GitHub](https://github.com/)作为源代码存储库提供者。

## 先决条件
<a name="apprunner-prereqs"></a>

要使用该 AWS 工具包与 App Runner 进行交互，需要满足以下条件：
+ 一个 AWS 账户
+ 具有以下特征的 AWS 工具包版本 AWS App Runner

除了这些核心要求之外，请确保所有相关的 IAM 用户都有权与 App Runner 服务进行交互。还要确保获取有关您的服务源的特定信息，例如容器镜像 URI 和与 GitHub存储库的连接。创建 App Runner 服务时，您需要使用此信息。

### 为 App Runner 配置 IAM 权限
<a name="app-runner-permissions"></a>

要快速授予 App Runner 所需的权限，请将现有 AWS 托管策略附加到相关 AWS Identity and Access Management (IAM) 实体。特别是，您可以将策略附加到用户或组。App Runner 提供两种可附加到 IAM 用户的托管策略：
+ `AWSAppRunnerFullAccess`：允许用户执行所有 App Runner 操作。
+ `AWSAppRunnerReadOnlyAccess`：允许用户列出和查看有关 App Runner 资源的详细信息。

如果您从 Amazon Elastic Container Registry（Amazon ECR）中选择私有存储库作为服务源，则必须为 App Runner 服务创建以下访问角色：
+ `AWSAppRunnerServicePolicyForECRAccess`：允许 App Runner 访问您账户中的 Amazon Elastic Container Registry (Amazon ECR) 镜像。

使用 AWS Toolkit 的命令窗格配置服务实例时，您可以自动创建此角色。

**注意**  
**AWSServiceRoleForAppRunner**服务相关角色 AWS App Runner 允许完成以下任务：  
将日志推送到 Amazon CloudWatch 日志组。
创建亚马逊 CloudWatch 活动规则以订阅亚马逊弹性容器注册表 (Amazon ECR) Container Registry 图片推送。
无需手动创建 服务关联角色。当您使用 AWS Toolkit 调用的 API 操作 AWS App Runner 在 AWS 管理控制台 或中创建时， AWS App Runner 会为您创建此服务相关角色。

有关更多信息，请参阅 *AWS App Runner 开发人员指南*中的[适用于 App Runner 的 Identity and Access Management](https://docs.aws.amazon.com/apprunner/latest/dg/security-iam.html)。

### 获取 App Runner 的服务源
<a name="app-runner-sources"></a>

您可以使用 AWS App Runner 从源图像或源代码部署服务。

------
#### [ Source image ]

如果您从源映像进行部署，请从私有或公共映像注册表中获取该映 AWS 像存储库的链接。
+ [Amazon ECR 私有注册表：复制在存储库中使用 Amazon ECR 控制台的私有存储库的 URI。https://console.aws.amazon.com/ecr/](https://console.aws.amazon.com/ecr/repositories)
+ Amazon ECR 公共注册表：复制使用 Amazon ECR Public Gallery 的公有存储库的 URI：[https://gallery.ecr.aws/](https://gallery.ecr.aws)。

**注意**  
您也可以直接从 AWS 工具包中的 E **AWS xplorer** 中获取私有 Amazon ECR 存储库的 URI：  
打开 **AWS Explorer**，然后展开 **ECR** 节点以查看该 AWS 区域的存储库列表。
打开存储的上下文（右键单击）菜单，然后选择 **Copy Repository URI**（复制存储库 URI）以将链接复制到剪贴板。

使用 T AWS oolkit 命令窗格配置服务实例时，您可以指定图像存储库的 URI。

有关更多信息，请参阅 *AWS App Runner 开发人员指南*中的[基于源镜像的 App Runner 服务](https://docs.aws.amazon.com/apprunner/latest/dg/service-source-image.html)。

------
#### [ Source code ]

要将源代码部署到 AWS App Runner 服务，必须将该代码存储在 Git 存储库中。此 Git 存储库必须由支持的存储库提供商维护。App Runner 支持一个源代码存储库提供商:[GitHub](https://github.com/).

有关设置 GitHub 存储库的信息，请参阅上的 “[入门” 文档](https://docs.github.com/en/github/getting-started-with-github) GitHub。

要将您的源代码从 GitHub 存储库部署到 App Runner 服务，App Runner 需要与建立连接 GitHub。如果您的存储库是私有的（也就是说，它不能在上公开访问 GitHub），则必须向 App Runner 提供连接详细信息。

**重要**  
要创建 GitHub 连接，必须使用 App Runner 控制台 ([https://console.aws.amazon.com/apprunner](https://console.aws.amazon.com/apprunner)) 创建链接到的连接。 GitHub AWS使用 T AWS oolkit 的命令窗格配置服务实例时，您可以选择**GitHub连接**页面上可用的连接。  
有关更多信息，请参阅 *AWS App Runner 开发人员指南*中的[管理 App Runner 连接](https://docs.aws.amazon.com/apprunner/latest/dg/manage-connections.html)。

App Runner 服务实例提供托管运行时，允许您的代码生成和运行。 AWS App Runner 目前支持以下运行时：
+ Python 托管运行时 
+ Node.js 托管运行时

作为服务配置的一部分，您可以提供有关 App Runner 服务如何构建和启动服务的信息。您可以使用**命令调色板**输入此信息，或指定 YAML 格式的 [App Runner 配置文件](https://docs.aws.amazon.com/apprunner/latest/dg/config-file.html)。此文件中的值指示 App Runner 如何构建和启动服务以及提供运行时上下文。这包括相关的网络设置和环境变量。配置文件名为 `apprunner.yaml`。它会自动添加到应用程序存储库的根目录中。

 

------

## 定价
<a name="app-runner-pricing"></a>

您需要为应用程序使用的计算和内存资源付费。此外，如果选择自动执行部署，则还需要为每个应用程序支付一笔固定的月费，其中涵盖该月的所有自动化部署。如果您选择从源代码进行部署，则需要为 App Runner 从源代码构建容器所用的时间支付构建费用。

有关更多信息，请参阅[AWS App Runner 定价](https://aws.amazon.com/apprunner/pricing/)。

**Topics**
+ [先决条件](#apprunner-prereqs)
+ [定价](#app-runner-pricing)
+ [创建 App Runner 服务](creating-service-apprunner.md)
+ [管理 App Runner 服务](managing-service-apprunner.md)

# 创建 App Runner 服务
<a name="creating-service-apprunner"></a>

您可以使用资源管理器在 AWS Toolkit 中创建 App Runn **AWS er** 服务。选择在特定服务中创建服务后 AWS 区域， AWS Toolkit 的命令窗格将描述如何配置应用程序运行的服务实例。

在创建 App Runner 服务之前，请确保您已完成[先决条件](using-apprunner.md#apprunner-prereqs)。这包括提供相关的 IAM 权限以及确认要部署的特定源存储库。<a name="create-service"></a>

# 创建 App Runner 服务
<a name="create-service"></a>

1. 如果 AWS 资源管理器尚未打开，请将其打开。

1. 右键单击 **App Runner** 节点，然后选择 **Create Service**（创建服务）。

   此时将显示 AWS 工具包命令窗格。

1. 对于 **Select a source code location type**（选择源代码位置类型），请选择 **ECR** 或 **Repository**（存储库）。

   如果选择 **ECR**，则可以在 Amazon Elastic Container Registry 维护的存储库中指定容器镜像。如果选择 **Repository**（存储库），则可以指定由受支持的存储库提供商维护的源代码存储库。目前，App Runner 支持[GitHub](https://github.com/)作为源代码存储库提供者。

## 从 ECR 部署
<a name="deploying-from-ECR"></a>

1. 对于 **Select or enter an image repository**（选择或输入镜像存储库），请选择或输入由 Amazon ECR 私有注册表或 Amazon ECR Public Gallery 维护的镜像存储库的 URL。
**注意**  
如果您从 Amazon ECR Public Gallery 指定存储库，请确保关闭自动部署功能。App Runner 不支持为 ECR 公共存储库中的镜像进行自动部署。  
默认情况下关闭自动部署功能。命令窗格标题上的图标显示一条对角线时即指示此状态。如果选择开启自动部署，则会显示一条消息，通知您此选项可能会产生额外费用。

1. 如果命令窗格中的步骤报告 **No tags found**（未找到标签），则您需要后退一步才能选择包含已标记的容器镜像的存储库。

1. 对于 **Port**（端口），输入服务使用的 IP 端口（例如端口 `8000`）。

1. （可选）对于 **Configure environment variables**（配置环境变量），请指定一个文件，其中包含用于自定义服务实例中的行为的环境变量。

1. 如果您使用的是 Amazon ECR 私有注册表，则需要**AppRunnerECRAccess角色** ECR 访问角色。此角色允许 App Runner 访问您账户中的 Amazon Elastic Container Registry（Amazon ECR）镜像。选择命令窗格标题上的“\$1”图标以创建此角色。如果您的镜像存储在 Amazon ECR Public 中，其中镜像是公开可用的，则不需要访问角色。

1. 对于 **Name your service**（命名您的服务），请输入一个唯一名称，然后按 **Enter**。名称中不得包含空格。

1. 对于 **Select instance configuration**（选择实例配置），请为您的服务实例选择 CPU 单元和内存的组合（均以 GB 为单位）。

   创建服务时，其状态将从**正在创建**更改为**正在运行**。

1.  服务开始运行后，打开其上下文（右键单击）菜单并选择 **Copy Service URL**（复制服务 URL）。

1. 要访问已部署的应用程序，请将复制的 URL 粘贴到 Web 浏览器的地址栏中。

## 从远程存储库进行部署
<a name="deploying-from-repository"></a>

1.  **在 “选择连接**” 中，选择链接 GitHub到的连接 AWS。可供选择的连接列在 App Runner 控制台的**GitHub 连接**页面上。

1.  **在 “选择远程 GitHub 存储库” 中**，选择或输入远程存储库的 URL。

    已经配置了 AWS Cloud9 源代码控制管理的远程存储库可供选择。如果存储库没有列出，您也可以粘贴指向存储库的链接。

1. 对于 **Select a branch**（选择分支），请选择要将源代码部署到哪个 Git 分支。

1. 对于 **Choose configuration source**（选择配置源），请指定希望如何定义运行时配置。

   如果选择 **Use configuration file**（使用配置文件），则您的服务实例将通过 `apprunner.yaml` 配置文件定义的设置进行配置。此文件位于应用程序存储库的根目录中。

   如果选择 **Configure all settings here**（在此处配置所有设置），请使用命令窗格指定以下项：
   + **Runtime**（运行时）：选择 **Python 3** 或 **Nodejs 12**。
   + **Build command**（构建命令）：输入命令以在服务实例的运行时环境中构建应用程序。
   + **Start command**（启动命令）：输入命令以在服务实例的运行时环境中启动应用程序。

1. 对于 **Port**（端口），输入服务使用的 IP 端口（例如，端口 `8000`）。

1. （可选）对于 **Configure environment variables**（配置环境变量），请指定一个文件，其中包含用于自定义服务实例中的行为的环境变量。

1. 对于 **Name your service**（命名您的服务），请输入一个唯一名称，然后按 **Enter**。名称中不得包含空格。

1. 对于 **Select instance configuration**（选择实例配置），请为您的服务实例选择 CPU 单位和内存的组合（以 GB 为单位）。

   在创建服务时，其状态将从 **Creating**（正在创建）更改为 **Running**（正在运行）。

1. 服务开始运行后，打开其上下文（右键单击）菜单并选择 **Copy Service URL**（复制服务 URL）。

1. 要访问已部署的应用程序，请将复制的 URL 粘贴到 Web 浏览器的地址栏中。

**注意**  
如果您尝试创建 App Runner 服务失败，则该服务将在 **AWS Explorer** 中显示状态 **Create failed**（创建失败）。有关故障排除信息，请参阅《App Runner 开发人员指南》**中的[服务创建失败时](https://docs.aws.amazon.com/apprunner/latest/dg/manage-create.html#manage-create.failure)。

# 管理 App Runner 服务
<a name="managing-service-apprunner"></a>

创建 App Runner 服务后，您可以使用 AWS 资源管理器窗格对其进行管理，以执行以下活动：
+ [暂停和恢复 App Runner 服务](#pause-resume-apprunner)
+ [部署 App Runner 服务](#deploying-apprunner)
+ [查看 App Runner 的日志流](#viewing-logs-apprunner)
+ [删除 App Runner 服务](#deleting-apprunner)

## 暂停和恢复 App Runner 服务
<a name="pause-resume-apprunner"></a>

如果您需要暂时禁用 Web 应用程序并停止代码运行，则可以暂停 AWS App Runner 服务。App Runner 会将服务的计算容量降至零。当你准备好再次运行应用程序时，请恢复 App Runner 服务。App Runner 将预置新的计算容量，为其部署应用程序，然后运行该应用程序。

**重要**  
仅当 App Runner 运行时，您才需要为它付费。因此，您可以根据需要暂停和恢复应用程序，以便控制成本。这在开发和测试方案中特别有用。<a name="pause-app-runner"></a>

## 暂停 App Runner 服务
<a name="pause-app-runner"></a>

1. 如果 AWS 资源管理器尚未打开，请将其打开。

1. 展开 **App Runner** 以查看服务列表。

1. 右键单击服务并选择 **Pause**（暂停）。

1. 在显示的对话框中，选择 **Confirm**（确认）。

   在服务暂停期间，服务状态将从 **Running**（正在运行）变为 **Pausing**（正在暂停），然后变为 **Paused**（已暂停）。<a name="pause-app-runner"></a>

## 恢复 App Runner 服务
<a name="pause-app-runner"></a>

1. 如果 AWS 资源管理器尚未打开，请将其打开。

1. 展开 **App Runner** 以查看服务列表。

1. 右键单击服务并选择 **Resume**（恢复）。

   在服务恢复期间，服务状态将从 **Resuming**（正在恢复）变为 **Running**（正在运行）。

## 部署 App Runner 服务
<a name="deploying-apprunner"></a>

如果为服务选择手动部署选项，则需要明确启动服务的每个部署。<a name="deploy-app-runner"></a>

1. 如果 AWS 资源管理器尚未打开，请将其打开。

1. 展开 **App Runner** 以查看服务列表。

1. 右键单击服务并选择 **Start Deployment**（开始部署）。

1. 在应用程序部署期间，服务状态将从 **Deploying**（正在部署）变为 **Running**（正在运行）。

1. 要确认应用程序已成功部署，请右键单击同一服务，然后选择 **Copy Service URL**（复制服务 URL）。

1. 要访问已部署的 Web 应用程序，请将复制的 URL 粘贴到 Web 浏览器的地址栏中。

## 查看 App Runner 的日志流
<a name="viewing-logs-apprunner"></a>

使用 CloudWatch 日志来监控、存储和访问诸如 App Runner 之类的服务的日志流。日志流是共享同一来源的一系列日志事件。<a name="view-logs-apprunner"></a>

1. 展开 **App Runner** 以查看服务实例列表。

1. 展开特定服务实例，以查看日志组列表。（日志组是一组具有相同保留期、监控和访问控制设置的日志流。） 

1. 右键单击日志组并选择 **View Log Streams**（查看日志流）。

1. 从命令窗格中，请从组中选择日志流。

    AWS Cloud9 IDE 会显示构成流的日志事件列表。您可以选择将较旧或更新的事件加载到编辑器中。

## 删除 App Runner 服务
<a name="deleting-apprunner"></a>

**重要**  
如果您删除 App Runner 服务，则它将被永久删除，并且您存储的数据也将被删除。如果您需要重新创建服务，则 App Runner 需要重新获取您的源代码并构建它（如果它是代码存储库）。您的 Web 应用程序将获得一个新的 App Runner 域。<a name="delete-app-runner"></a>

1. 如果 AWS 资源管理器尚未打开，请将其打开。

1. 展开 **App Runner** 以查看服务列表。

1. 右键单击服务，然后选择 **Delete Service**（删除服务）。

1. 在 AWS Toolkit 命令窗格中，输入 *delete*，然后**按 Enter** 进行确认。

   已删除的服务将显示 **Deleting**（正在删除）状态，然后这些服务将从列表中消失。

# 使用 AWS Toolkit 处理 AWS CloudFormation 堆栈
<a name="cloudformation-toolkit"></a>

该 AWS 工具包为[AWS CloudFormation](https://aws.amazon.com/cloudformation/)堆栈提供支持。使用 AWS 工具包，您可以删除 CloudFormation 堆栈。

## 删除 CloudFormation 堆栈
<a name="cloudformation-delete"></a>

您可以使用 AWS 工具包查看和删除 CloudFormation 堆栈。

### 先决条件
<a name="cloudformation-delete-prereq"></a>
+ 确保您在 AWS Cloud9 环境中使用的凭证包括对服务的适当读/写访问权限。 CloudFormation 如果在**AWS 资源管理器**下**CloudFormation**看到类似于 “加载 CloudFormation 资源时出错” 的消息，请检查这些凭据所附的权限。对权限所做的更改需要几分钟时间才会对 **AWS Explorer** 生效。

## 删除 CloudFormation 堆栈


1. 在**AWS 资源管理器**中，打开要删除的 CloudFormation 堆栈的上下文（右键单击）菜单。

1. 选择 “**删除 CloudFormation 堆栈”**。

1. 在出现的消息中，选择 **Yes（是）**以确认删除。

删除堆栈后，它不再在 **AWS Explorer** 中列出。

# 使用 AWS 工具包处理 CloudWatch 日志
<a name="cloudwatch-logs-toolkit"></a>

您可以使用 Amazon CloudWatch Logs 将来自所有系统和应用程序以及您 AWS 服务 使用的日志集中到一个高度可扩展的服务中。您可以轻松查看它们、搜索特定的错误代码或模式、根据特定字段进行筛选或者将其安全存档以供将来分析。有关更多信息，请参阅[什么是 Amazon CloudWatch 日志？](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/WhatIsCloudWatchLogs.html) 在《*亚马逊 CloudWatch 用户指南》*中。

以下主题介绍如何使用 AWS 工具包在 AWS 账户中使用 CloudWatch 日志：

**Topics**
+ [查看 CloudWatch 日志组和日志流](viewing-CloudWatch-logs.md)
+ [处理 CloudWatch 日志事件](working-CloudWatch-log-events.md)

# 使用 AWS 工具包查看 CloudWatch 日志组和日志流
<a name="viewing-CloudWatch-logs"></a>

*日志流*是共享同一来源的一系列日志事件。日志中的每个单独日志源构成一个单独的日志流。 CloudWatch 

*日志组*是一组具有相同保留期、监控和访问控制设置的日志流。您可以定义日志组并指定向各组中放入哪些流。可以属于一个日志组的日志流数没有限制。

有关更多信息，请参阅 *Amazon CloudWatch 用户指南*中的[使用日志组和日志流](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Working-with-log-groups-and-streams.html)。

**Topics**
+ [使用 “日志” 节点查看日志组和**CloudWatch 日志**流](#viewing-log-groups)

## 使用 “日志” 节点查看日志组和**CloudWatch 日志**流
<a name="viewing-log-groups"></a>

1. 如果 AWS 资源管理器尚未打开，请将其打开。

1. 单击 “**CloudWatch 日志**” 节点展开日志组列表。

   当前的日志组显示 AWS 区域 在 “**CloudWatch 日志**” 节点下。

1. 若要查看特定日志组中的日志流，请在该日志组名称上打开上下文（右键单击）菜单，然后选择 **View Log Streams**（查看日志流）。

1. 日志组的内容显示在 **Select a log stram（选择日志流）**标题下。

   您可以从列表中选择特定的流，也可以通过在字段中输入文本来对流进行筛选。

   选择流后，该流中的事件将显示在 IDE 的 **Log Streams**（日志流）窗口中。有关与每个流中的日志事件交互的信息，请参阅 [处理 CloudWatch 日志事件](working-CloudWatch-log-events.md)。

# 处理 CloudWatch 日志流中的日志事件
<a name="working-CloudWatch-log-events"></a>

在打开**日志流**窗口后，您可以访问每个流中的日志事件。日志事件是对受监控的应用程序或资源记录的活动的记录。

**Topics**
+ [查看和复制日志流信息](#viewing-log-events)
+ [将日志流编辑器的内容保存到本地文件](#saving-CW-logs)

## 查看和复制日志流信息
<a name="viewing-log-events"></a>

当您打开日志流时，**Log Stream（日志流）**窗口将显示该流的日志事件序列。

1. 若要查找要查看的日志流，请打开 **Log Stream**（日志流）窗口。有关更多信息，请参阅 [查看 CloudWatch 日志组和日志流](viewing-CloudWatch-logs.md)。

   列出事件的每一行都有时间戳，以显示事件的录入时间。

1. 您可以使用以下选项查看和复制有关流的事件信息：
   + **按时间查看事件**：通过选择 **Load newer events**（加载更新的事件）或 **Load older events**（加载更早的事件），显示最新的日志事件或更早的日志事件。
**注意**  
**Log Stream**（日志流）编辑器最初会加载一批最近 1 万行日志事件或 1 MB 的日志数据（以较小者为准）。如果选择 **Load newer events（加载更新的事件）**，编辑器会显示上一批事件加载后记录的事件。如果选择 **Load older events（加载更早的事件）**，编辑器会显示在当前显示的事件之前发生的一批事件。
   + **复制日志事件**：选择要复制的事件，然后打开上下文（右键单击）菜单并从菜单中选择 **Copy**（复制）。
   + **复制日志流的名称**：打开 **Log Stream**（日志流）窗口的选项卡的上下文（右键单击）菜单，然后选择 **Copy Log Stream Name**（复制日志流名称）。

## 将日志流编辑器的内容保存到本地文件
<a name="saving-CW-logs"></a>

您可以将 CloudWatch 日志流编辑器的内容下载到本地计算机上的`log`文件中。

**注意**  
您可以使用此选项，仅将日志流编辑器中当前显示的这些日志事件保存到文件。例如，假设日志流的总大小为 5 MB，编辑器中仅加载了 2 MB。您保存的文件也仅包含 2 MB 的日志数据。要显示更多要保存的数据，请在编辑器中选择 **Load newer events（加载更新的事件）**或 **Load older event（加载更早的事件）**。

1. 若要查找要复制的日志流，请打开 **Log Streams（日志流）**窗口（请参阅 [查看 CloudWatch 日志组和日志流](viewing-CloudWatch-logs.md)）。

1. 打开 **Log Stream**（日志流）窗口选项卡的上下文（右键单击）菜单，然后选择 **Save Current Log Content to File**（将当前日志内容保存为文件）

1. 使用该对话框为日志文件选择或创建下载文件夹，然后单击 **Save**（保存）。

# 使用 AWS 工具包处理 AWS Lambda 函数
<a name="lambda-toolkit"></a>

该 AWS 工具包支持[AWS Lambda](https://aws.amazon.com/lambda/)功能。该 AWS 工具包取代了以前由 Lambda 插件提供的功能。 AWS Cloud9使用该 AWS 工具包，您可以为[无服务器](https://aws.amazon.com/serverless/)应用程序中的 Lambda 函数编写代码。此外，您可以在本地或在 AWS上调用 Lambda 函数。

Lambda 是完全托管的计算服务，该服务运行您的代码以响应由自定义代码生成的或来自各种 AWS 服务的事件。这些服务包括 Amazon Simple Storage Service（Amazon S3）、Amazon DynamoDB、Amazon Kinesis、Amazon Simple Notification Service（Amazon SNS）和 Amazon Cognito。

**重要**  
如果要构建使用 Serverless Application Model（SAM）提供的资源的 Lambda 应用程序，请参阅[AWS SAM 使用 AWS 工具包](serverless-apps-toolkit.md)。

**Topics**
+ [调用远程 Lambda 函数](#remote-lambda)
+ [下载、上传和删除 Lambda 函数](#import-upload-delete-lambda)

## 调用远程 Lambda 函数
<a name="remote-lambda"></a>

使用该 AWS 工具包，您可以通过各种方式与[AWS Lambda](https://aws.amazon.com/lambda/)函数进行交互。

有关 Lambda 的更多信息，请参阅 [AWS Lambda 开发人员指南](https://docs.aws.amazon.com/lambda/latest/dg/)。

**注意**  
假设您已经通过使用 AWS 管理控制台 或以其他方式创建了 Lambda 函数。您可以从 AWS 工具包中调用它们。要使用 AWS Toolkit 创建可部署到的新函数 AWS Lambda，必须先[创建一个无服务器应用程序](serverless-apps-toolkit.md#sam-create)。

### 先决条件
<a name="remote-lambda-prereq"></a>
+ 确保您在中配置的凭据包含对服务的相应读/写访问权限。 AWS Lambda 如果在 **AWS Explorer** 中的 **Lambda** 下，您看到类似于“Error loading Lambda resources”（加载 Lambda 资源时出错）的消息，请检查附加到这些凭证的权限。对权限所做的更改需要几分钟时间才会对 AWS Toolkit 中的 **AWS Explorer** 生效。

### 调用 Lambda 函数
<a name="invoke-lam-func"></a>

**重要**  
使用 AWS Toolkit 调用 API 方法可能会导致无法撤消的资源更改。例如，如果您调用 `POST` 方法，则调用成功时，API 的资源将更新。

您可以在 AWS 使用工具包时调用 Lambda 函数。 AWS 

****

1. 在 **AWS Explorer** 中，选择要调用的 Lambda 函数的名称，然后打开其上下文菜单。

1. 选择 “**开启调用” AWS**。

1. 在打开的 **Invoke function（调用函数）**窗口中，为 Lambda 函数所需的负载选择一个选项。（该负载为您想要作为输入提供到您的 Lambda 函数的 JSON。） 您可以选择 **Browse**（浏览）来选择要用作负载的文件，或使用下拉字段为负载选择模板。在这种情况下，Lambda 函数可能会将字符串显示为输入，如文本框所示。

选择 **Invoke（调用）**来调用 Lambda 并传入负载。

您可以在选项卡中看到 Lambda 函数的 AWS Lambda 输出。

## 下载、上传和删除 Lambda 函数
<a name="import-upload-delete-lambda"></a>

该 AWS 工具包提供了在 IDE 中导入和上传 Lambda 函数的 AWS Cloud9 选项。

### 下载 Lambda 函数
<a name="w2aac28c32c13b5"></a>

通过下载 Lambda 函数，您还可以从 AWS 云端下载描述该函数的项目文件，并在 IDE 中使用这些文件。 AWS Cloud9 

### 下载 Lambda 函数


1. 在 **AWS Explorer** 中的 Lambda 节点下，打开函数的上下文（右键单击）菜单，然后选择 **Download**（下载）。

1. 当被要求 **Select a workspace folder for your new project（为新项目选择工作区文件夹）**，您可以执行下列操作之一：
   + 选择建议创建与 Lambda 项目名称相同子文件夹的文件夹。
   + 选择 **Select a different folder（选择其他文件夹）**打开一个对话框，为项目子文件夹浏览并选择其他父文件夹。

   IDE 将打开一个新的编辑器窗口。

### 配置下载的 Lambda 函数以运行和调试
<a name="w2aac28c32c13b7"></a>

要将下载的 Lambda 函数作为无服务器应用程序运行和调试，需要在 `launch.json` 文件中定义启动配置。在中创建的 Lambda 函数 AWS 管理控制台 可能不包含在启动配置中。因此，您需要手动添加它。

### 将 Lambda 函数添加到启动配置


1. 下载 Lambda 函数后，打开 **Environment**（环境）窗口以查看其文件夹和文件。

1. 接下来，检查 Lambda 函数是否包含在 `/home/ec2-user/.c9/launch.json` 文件中。如果它不存在，请执行以下操作以添加 CodeLens 指向函数代码的链接：

   1. 打开定义 Lambda 函数的源代码文件（例如，`.js` 或 `.py` 文件）。然后，检查是否有可用于将 lambda 函数添加到`launch.json`文件中的 CodeLens 链接。A CodeLens 显示在函数上方并包含`Add Debug Config`链接。

   1. 选择 IDE 左侧的 **Go**（转到）（放大镜图标），然后输入“sam hint”以显示 `AWS: Toggle SAM hints in source files` 命令。选择此命令以运行。

   1. 关闭 Lambda 源代码文件，然后重新打开它。

   1. 如果重新打开文件后源代码中可用，`Add Debug Config`请选择添加启动配置。 CodeLens 

1. 如果在切换 SAM 提示选项后无法添加 CodeLens 偶数，请执行以下操作来添加启动配置：

   1. 选择 IDE 左侧的 **Go**（转到）（放大镜图标），然后键入“config”以显示 `AWS: SAM Debug Configuration Editor` 命令。选择此命令以运行。

   1. 此时将显示 **SAM Debug Configuration Editor**（SAM 调试配置编辑器）。您可以使用此编辑器定义启动配置属性。有关信息，请参阅[使用 SAM 模板运行和调试无服务器应用程序](serverless-apps-toolkit.md#sam-run-debug-template)中用于[configuring launch properties](serverless-apps-toolkit.md#properties)的步骤。
**注意**  
如果 Lambda 函数没有 SAM 应用程序的 `template.yaml`，则需要添加一个。有关更多信息，请参阅[创建 AWS SAM 模板](https://docs.aws.amazon.com/codedeploy/latest/userguide/tutorial-lambda-sam-template.html)。

   1. 在编辑器中输入所需的配置信息后，启动配置将添加到 **launch.json** 文件中。

在为 Lambda 函数定义启动配置后，您可以通过执行以下操作来运行它：

1. 在 IDE 顶部，选择 **Auto**（自动）旁边的箭头，然后选择相关的启动配置。

1. 接下来，选择 **Run**（运行）。

### 上传 Lambda 函数
<a name="w2aac28c32c13b9"></a>

您可以使用本地代码更新现有的 Lambda 函数。以这种方式更新代码不会使用 AWS Serverless Application Model CLI 进行部署，也不会创建 AWS CloudFormation 堆栈。通过这种方法，您可以使用 Lambda 支持的任何运行时上传 Lambda 函数。

有多种接口选项可用于使用该 AWS 工具包上传 Lambda 函数。

#### 从 **Environment**（环境）窗口或 **Command pane**（命令窗格）上载
<a name="upload-lambda-from-environment"></a>

1. 在项目文件的 **Environment**（环境）窗口中，选择要上载的 Lambda 应用程序的 `template.yaml` 的上下文（右键单击）菜单，然后选择 **Upload Lambda**（上传 Lambda）。

   或者，按 **Ctrl\$1P** 以打开**转到任意内容**窗格，然后输入“lambda”以访问 **AWS 上传 Lambda** 命令。接下来，选择它以开始上载过程。

1. 接下来 AWS 区域 ，选择要上传到的。

1. 现在，选择用于上载 Lambda 函数的选项：

   **上传 zip 格式归档**

   1. 从菜单中选择 **ZIP Archive（ZIP 格式归档）**。

   1. 从文件系统中选择一个.zip AWS Cloud9 文件，然后选择 “**打开**”。

   **按原样上载目录**

   1. 从菜单中选择 **Directory（目录）**。

   1. 从 AWS Cloud9 文件系统中选择一个目录，然后选择 “**打开**”。

1. 指定处理事件的 Lambda 函数处理程序。当调用函数时，Lambda 运行此处理程序方法。
**注意**  
选择 Lambda 函数时，您可以从显示的列表中进行选择。如果您不知道要选择哪个函数，可以输入此 Toolkit 中提供的 Lambda 函数的 Amazon 资源名称（ARN）。

   将显示一个对话框，询问您是否希望将此代码发布为 Lambda 函数的最新版本。选择 **Yes**（是）以确认发布。
**注意**  
您还可以打开该文件夹的父文件夹上下文（右键单击）菜单，然后选择 **Upload Lambda**（上传 Lambda）来上传 Lambda 应用程序。将自动选择该父文件夹进行上传。

#### 从 **AWS Explorer** 上载
<a name="upload-lambda-from-explorer"></a>

1. 在 **AWS Explorer**中，在要导入的 Lambda 函数的名称上打开上下文（右键单击）菜单。

1. 选择 **Upload Lambda**（上载 Lambda）。

1. 从上传 Lambda 函数的三个选项中进行选择。

   **上载预先制作的 zip 格式归档**

   1. 从菜单中选择 **ZIP Archive（ZIP 格式归档）**。

   1. 从文件系统中选择一个.zip AWS Cloud9 文件，然后选择 “**打开**”。

   1. 使用模态对话框确认上传。这将上传 .zip 格式文件，并在部署后立即更新 Lambda。

   **按原样上载目录**

   1. 从菜单中选择 **Directory（目录）**。

   1. 从 AWS Cloud9 文件系统中选择一个目录，然后选择 “**打开**”。

   1. 当系统提示构建目录时，选择 **No（否）**。

   1. 使用模态对话框确认上传。这将按原样上传目录，并在部署后立即更新 Lambda。

   **构建和上载目录**

   1. 从菜单中选择 **Directory（目录）**。

   1. 从 AWS Cloud9 文件系统中选择一个目录，然后选择 “**打开**”。

   1. 当系统提示构建目录时，选择 **Yes（是）**。

   1. 使用模态对话框确认上传。这将使用 AWS SAM CLI `sam build` 命令在目录中构建代码，并在部署后立即更新 Lambda。

### 部署 Lambda 函数以进行远程访问
<a name="w2aac28c32c13c11"></a>

您可以通过将本地函数部署为无服务器 SAM 应用程序来远程使用它们。

### 将 Lambda 函数部署为 SAM 应用程序


1. 在 **AWS Explorer** 中，打开 **Lambda** 节点的上下文（右键单击）菜单，然后选择 **Deploy SAM Application**（部署 SAM 应用程序）。

1. 在命令窗格中，选择将函数定义为无服务器应用程序的 [YAML template](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-specification-template-anatomy.html)（YAML 模板）。

1. 接下来，选择 Amazon S3 存储桶来进行 Lambda 部署。也可以选择创建存储桶来进行部署。

1. 现在输入要部署到的 CloudFormation 堆栈的名称。如果指定现有堆栈，则该命令将更新堆栈。如果指定了新堆栈，则该命令将创建它。

   输入堆栈的名称后，Lambda 函数会开始部署为 SAM 应用程序。成功部署后，SAM Lambda 应用程序可以远程使用。这样，您就可以从其他 AWS Cloud9 开发环境下载或调用它。

如果您想从头开始创建 Lambda 函数，我们建议按照以下步骤操作以[使用 Toolkit 创建无服务器应用程序 AWS](serverless-apps-toolkit.md#create-serverless-app)。

### 删除 Lambda 函数
<a name="delete-lambda"></a>

您也可以使用相同的上下文（右键单击）菜单删除 Lambda 函数。

**警告**  
请勿使用此过程删除与 [CloudFormation](https://docs.aws.amazon.com/cloudformation/) 关联的 Lambda 函数。例如，不要删除本指南前文中[创建无服务器应用程序](serverless-apps-toolkit.md#sam-create)时创建的 Lambda 函数。这些函数必须通过 CloudFormation 堆栈删除。

****

1. 在 **AWS Explorer** 中，选择要删除的 Lambda 函数的名称，然后打开其上下文（右键单击）菜单。

1. 选择**删除**。

1. 在出现的消息中，选择 **Yes（是）**以确认删除。

删除此函数后，它不再在 **AWS Explorer** 视图中列出。

# 使用资源
<a name="more-resources"></a>

除了访问 AWS 服务 资源 AWS 管理器中默认列出的资源外，您还可以转到 “**资源**”，然后从数百种资源中进行选择，以添加到界面中。在中 AWS，**资源**是您可以使用的实体。添加的一些资源包括亚马逊 AppFlow、Amazon Kinesis Data Streams AWS 、IAM 角色、亚马逊 VPC 和 CloudFront 亚马逊分配。

要查看可用资源，请转到 **Resources**（资源），然后展开资源类型以列出该类型的可用资源。例如，如果选择 `AWS::Lambda::Function` 资源类型，则可以访问用于定义不同函数、其属性和特性的资源。

将资源类型添加到 **Resources**（资源）后，您可以通过以下方式与它及其资源进行交互：
+ 查看当前 AWS 区域 资源类型中可用的现有资源列表。
+ 查看用于描述资源的 JSON 文件的只读版本。
+ 复制资源的资源标识符。
+ 查看说明资源类型用途和资源建模架构（YAML格式JSON和格式）的 AWS 文档。

## 用于访问资源的 IAM 权限
<a name="cloud-api-permissions"></a>

您需要特定的 AWS Identity and Access Management 权限才能访问与关联的资源 AWS 服务。例如，IAM 实体（如用户或角色）需要 Lambda 权限才能访问 `AWS::Lambda::Function` 资源。

除了服务资源的权限外，IAM 实体还需要权限才能允许 AWS 工具包调用 AWS Cloud Control API 操作。Cloud Control API 操作允许 IAM 用户或角色访问和更新远程资源。

您可以使用 Toolkit 接口将 AWS 托管策略附加到调用这些 API 操作的 IAM 实体，从而快速授予权限。**PowerUserAccess**此托管策略将授予执行应用程序开发任务的一系列权限，包括调用 API 操作。

有关定义远程资源上允许的 API 操作的特定权限，请参阅 [AWS Cloud Control API 用户指南](https://docs.aws.amazon.com//cloudcontrolapi/latest/userguide/security.html)。

## 与现有资源交互
<a name="configure-resources"></a>

1. 在 **AWS Explorer** 中，选择 **Resources**（资源）。

   资源类型列表显示在 **Resources**（资源）节点下方。

1. 有一些文档描述了定义资源类型的模板的语法。要访问此文档，请打开该资源类型的上下文（右键单击）菜单，然后选择 **View Documentation**（查看文档）。
**注意**  
系统可能会要求您关闭浏览器的弹出窗口拦截器，以便您能够访问文档页面。

1. 要查看某种资源类型已存在的资源，请展开该类型的条目。

   可用资源列表显示在其资源类型下方。

1. 要与特定资源交互，请在其名称上打开上下文（右键单击）菜单，然后选择以下选项之一：
   + **Copy Identifier**（复制标识符）：将特定资源的标识符复制到剪贴板。例如，可以使用 `TableName` 属性标识 `AWS::DynamoDB::Table` 资源。
   + **Preview**（预览）：查看用于描述资源的 JSON 格式模板的只读版本。

# 使用 AWS 工具包使用 Amazon S3
<a name="s3-toolkit"></a>

以下主题介绍如何使用该 AWS 工具包在中使用 [Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/) 存储桶和对象。 AWS 账户

**Topics**
+ [使用 Amazon S3 存储桶](work-with-S3-buckets.md)
+ [使用 Amazon S3 对象](work-with-S3-objects.md)

# 使用 Amazon S3 存储桶
<a name="work-with-S3-buckets"></a>

存储于 Amazon S3 中的每个数据元都存储在存储段中。如同通过目录对文件系统中的文件进行分组一样，您也可以使用存储桶对相关对象进行分组。

**Topics**
+ [创建 Amazon S3 存储桶](#creating-s3-bucket)
+ [在 Amazon S3 存储桶中添加文件夹](#adding-folders)
+ [删除 Amazon S3 存储桶](#deleting-s3-buckets)
+ [配置 Amazon S3 项目的显示](#configuring-items-display)

## 创建 Amazon S3 存储桶
<a name="creating-s3-bucket"></a>

1. 在 **AWS Explorer** 中，打开 **S3** 节点的上下文（右键单击）菜单，然后选择 **Create Bucket**（创建存储桶）。

1. 在 **Bucket Name（存储桶名称）**字段中，输入一个有效的存储桶名称。按 **Enter** 键以确认。

   新存储桶将显示在 **S3** 节点下方。
**注意**  
由于 S3 存储桶可用作提供公开访问的 URL，因此您选择的存储桶名称必须具有全局唯一性。如果您选择的名称已被其他一些账户用于创建存储桶，则必须使用其他名称。  
如果您无法创建存储桶，可以检查**输出**选项卡中的 **AWS Toolkit 日志**。例如，如果您使用的存储桶名称已被使用，则会出现 `BucketAlreadyExists` 错误。有关更多信息，请参阅 *《Amazon Simple Storage Service 用户指南》*中的[存储桶限制](https://docs.aws.amazon.com/AmazonS3/latest/userguide/BucketRestrictions.html)。

   创建存储桶后，您可以将其名称和 Amazon Resource Name (ARN) 复制到剪贴板。打开存储桶条目的上下文（右键单击）菜单，然后从菜单中选择相关选项。

## 在 Amazon S3 存储桶中添加文件夹
<a name="adding-folders"></a>

您可以通过队文件夹中的对象分组来组织存储桶的内容。您也可以在其他文件夹中创建文件夹。

1. 在 **AWS Explorer** 中，选择 **S3** 节点以查看存储桶列表。

1. 打开存储桶或文件夹的上下文（右键单击）菜单，然后选择 **Create Folder**（创建文件夹）。

1. 输入 **Folder Name（文件夹名称）**，然后按 **Enter** 键。

   新文件夹现在显示在 **AWS Explorer** 窗口中已选择存储桶或文件夹下方。

## 删除 Amazon S3 存储桶
<a name="deleting-s3-buckets"></a>

删除存储桶时，还会删除其中包含的文件夹和对象。在删除存储桶之前，系统将要求您确认是否要执行此操作。

**注意**  
[仅删除文件夹](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-folders.html)，而不是整个存储桶，请使用 AWS 管理控制台。

1. 在 **AWS Explorer** 中，选择 **S3** 节点以展开存储桶列表。

1. 打开要删除的存储桶的上下文菜单，然后选择 **Delete（删除）**。

1. 输入存储桶的名称来确认您希望删除，然后按 **Enter** 键。
**注意**  
如果存储桶包含对象，则会先清空存储桶，然后再删除它。如果需要删除数千个对象的所有版本，可能需要一些时间。删除过程完成后将显示通知。

## 配置 Amazon S3 项目的显示
<a name="configuring-items-display"></a>

如果您正在使用大量 Amazon S3 对象或文件夹，则指定一次显示的数量会很有帮助。当显示最大数量时，您可以选择 **Load More（加载更多）**以显示下一个批次。

1. 在菜单栏上，依次选择 **AWS Cloud9**、**Preferences（首选项）**。

1. 在 **Preferences（首选项）**窗口中，展开 **Project Settings（项目设置）**，然后转至 **EXTENSIONS（扩展）**部分，选择 **AWS Configuration（Amazon 配置）**。

1. 在 **AWS Configuration（Amazon 配置）**窗格中，转至 **AWS > S3：Max Items Per Page（每页最大项目数）**设置。

1. 在选择加载更多内容之前，将默认值更改为您要显示的 S3 项目数。
**注意**  
接受值的范围介于 3 到 1000 之间。此设置仅适用于同时显示的对象或文件夹的数量。您创建的所有存储桶都会一次性显示。默认情况下，您可以在每个 AWS 账户中创建多达 100 个存储桶。

# 使用 Amazon S3 对象
<a name="work-with-S3-objects"></a>

对象是 Amazon S3 中存储的基础实体。对象由对象数据和元数据组成。

**Topics**
+ [将文件上传到 Amazon S3 存储桶](#uploading-s3-object-to-bucket)
+ [下载 Amazon S3 对象](#downloading-s3-object)
+ [删除 Amazon S3 对象](#deleting-s3-object)
+ [为 Amazon S3 对象生成预签名 URL](#presigned-s3-object)

## 将文件上传到 Amazon S3 存储桶
<a name="uploading-s3-object-to-bucket"></a>

您可以使用 Toolkit 界面或命令将文件上传到存储桶 

这两种方法都允许您从用户环境上传文件并将其作为 S3 对象存储在 AWS 云中。您可以将文件上传到存储桶或组织该存储桶内容的文件夹。

## 使用界面将文件上传到 S3 存储桶


1. 在 **AWS Explorer** 中，选择 **S3** 节点以查看存储桶列表。

1. 打开存储桶或存储桶中的文件夹的上下文菜单（右键单击），然后选择 **Upload File（上传文件）**。
**备注**  
如果打开 S3 对象的上下文菜单（右键单击），则可以选择 **Upload to Parent（上传至父级）**。这使您可以将文件添加到包含所选文件的文件夹或存储桶中。

1. 使用环境的文件管理器，选择一个文件，然后选择 **Upload（上传）**。

   选定的文件将作为 S3 对象上传到存储桶或文件夹。每个对象的条目描述了存储对象的大小以及该对象上传时间距离现在的时间。您可以暂停在对象的列表上，以查看上次修改对象的路径、大小和时间。

## 使用命令将当前文件上传到 S3 存储桶


1. 若要选择要上传的文件，请选择该文件的选项卡。

1. 按 **Ctrl\$1P** 以显示 **Commands（命令）**窗格。

1. 对于 **Go To Anything（转到任意内容）**，开始输入短语 `upload file` 显示 `AWS: Upload File` 命令。当命令出现时，选择该命令。

1. 对于**步骤 1：选择要上传的文件**，您可以选择已选定的文件或浏览其他文件。

1. 对于**步骤 2：选择要上传到的 S3 存储桶**，从列表中选择存储桶。

   选定的文件将作为 S3 对象上传到存储桶或文件夹。每个对象的条目描述了存储对象的大小以及该对象上传时间距离现在的时间。您可以暂停在对象的列表上，以查看上次修改对象的路径、大小和时间。

## 下载 Amazon S3 对象
<a name="downloading-s3-object"></a>

您可以将 Amazon S3 存储桶中的对象从 AWS 云端下载到您 AWS Cloud9 环境中的文件夹。

1. 在 **AWS Explorer** 中，选择 **S3** 节点以查看存储桶列表。

1. 在存储桶中或存储桶中的文件夹中，打开对象的上下文菜单（右键单击），然后选择 **Download As（下载为）**。

1. 使用环境的文件管理器，选择目标文件夹，输入文件名，然后选择 **Download（下载）**。

下载文件后，您可以在 AWS Cloud9中打开。

## 删除 Amazon S3 对象
<a name="deleting-s3-object"></a>

如果对象位于不受版本控制的存储桶中，您可以永久删除该对象。但是，对于启用版本控制的存储桶，删除请求不会永久删除该对象。但是，Amazon S3 将在存储桶中插入一个删除标记。有关更多信息，请参阅 *Amazon Simple Storage Service 用户指南*中的[删除对象版本](https://docs.aws.amazon.com/AmazonS3/latest/userguide/DeletingObjectVersions.html)。

1. 在 **AWS Explorer** 中，选择 **S3** 节点以查看存储桶列表。

1. 在存储桶或存储桶中的文件夹中，打开对象的上下文菜单（右键单击），然后选择 **Delete（删除）**。

1. 要确认删除，请选择 **Delete（删除）**。

## 为 Amazon S3 对象生成预签名 URL
<a name="presigned-s3-object"></a>

使用预签名 URL，对象所有者可以通过授予下载对象的限时权限来与其他人共享私有 Amazon S3 对象。有关更多信息，请参阅 *Amazon S3 用户指南*中的[使用预签名 URL 共享对象](https://docs.aws.amazon.com/AmazonS3/latest/userguide/ShareObjectPreSignedURL.html)。

1. 在 **AWS Explorer** 中，选择 **S3** 节点以查看存储桶列表。

1. 在存储桶或存储桶中的文件夹中，右键单击某个对象，然后选择 **Generate Presigned URL**（生成预签名 URL）。

1. 在 AWS Toolkit 命令窗格中，输入 URL 可用于访问对象的分钟数。按 **Enter** 键以确认。

   IDE 底部的状态确认对象的预签名 URL 已复制到剪贴板。

# AWS SAM 使用 AWS 工具包
<a name="serverless-apps-toolkit"></a>

该 AWS 工具包为[无服务器应用程序](https://aws.amazon.com/serverless/)提供支持。使用 AWS Toolkit，您可以创建包含[AWS Lambda](https://aws.amazon.com/lambda/)函数的无服务器应用程序，然后将这些应用程序部署到 AWS CloudFormation 堆栈中。

## 创建无服务器应用程序
<a name="sam-create"></a>

此示例说明如何使用 AWS Toolkit 创建无服务器应用程序。有关如何运行和调试无服务器应用程序的信息,请参阅[运行和调试无服务器应用程序](#sam-run-debug)。

创建无服务器应用程序的必要先决条件包括 **AWS SAM CLI** 和 **AWS CLI**。这些都包含在 AWS Cloud9。如果 AWS SAM CLI 未安装或已过期，则可能需要运行安装或升级。有关如何安装 AWS SAM CLI 的说明，请参阅[安装 AWS SAM CLI](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/install-sam-cli.html#install-sam-cli-instructions)；有关如何升级 AWS SAM CLI 的说明，请参阅[升级 AWS SAM CLI](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/manage-sam-cli-versions.html#manage-sam-cli-versions-upgrade)。

### 使用 Toolkit 创建无服务器应用程序 AWS
<a name="create-serverless-app"></a>

此示例说明如何使用 [AWS Serverless Application Model (AWS SAM)](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/what-is-sam.html) 使用 AWS Toolkit 创建无服务器应用程序。

1. 在 **AWS Explorer** 中，打开 **Lambda** 节点的上下文（右键单击）菜单，然后选择 **Create Lambda SAM Application**（创建 Lambda SAM 应用程序）。
**注意**  
或者，您也可以单击 **AWS: Explorer** 标题中的菜单图标，然后选择 **Create Lambda SAM Application**（创建 Lambda SAM 应用程序）。

1. 选择 SAM 应用程序的运行时。对于此示例，请选择 **nodejs12.x**。
**注意**  
如果您选择一个带有“(Image)”的运行时，则您的应用程序是 `Image` 型软件包。如果您选择一个不带有“(Image)”的运行时，则您的应用程序是 `Zip` 型。有关 `Image` 和 `Zip` 软件包类型差异的更多信息，请参阅 *AWS Lambda 开发人员指南*中的 [Lambda 部署软件包](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)。

1. 为您的无服务器应用程序选择以下模板之一：
   + **AWS SAM Hello World**：一个带有 Lambda 函数的基本模板，可返回经典的 “Hello World” 消息。
   + **AWS Step Fun** ctions 示例应用程序：运行股票交易工作流程的示例应用程序。Step Functions 编排所涉及 Lambda 函数的交互。

1. 为新项目选择一个位置。如果有工作区文件夹可用，您可以选择现有的工作区文件夹。否则，请浏览其他文件夹。如果您选择 **Select a different folder**（选择其他文件夹），将显示一个对话框，允许您选择文件夹位置。

1. 输入新应用程序的名称。对于本示例，请使用 `my-sam-app-nodejs`。**按 Enter** 键后， AWS 工具包会花一些时间来创建项目。

创建项目后，您可以在环境窗口中查看应用程序的文件。在**各区服务浏览器**窗口的列表中找到该文件夹。

![\[屏幕截图显示了 SAM 应用程序的可用运行时。\]](http://docs.aws.amazon.com/zh_cn/cloud9/latest/user-guide/images/sam-create-app-explorer.png)


## 运行和调试无服务器应用程序
<a name="sam-run-debug"></a>

您可以使用 AWS Toolkit 配置如何调试无服务器应用程序并在开发环境中本地运行它们。您可以调试由 AWS Serverless Application Model (AWS SAM) 模板定义的无服务器应用程序。此模板使用简单的 YAML 语法来描述构成无服务器应用程序的资源 APIs，例如函数、数据库和事件源映射。

要详细了解 AWS SAM 模板，请参阅《*AWS Serverless Application Model 开发者指南》中的[AWS SAM 模板剖析](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-specification-template-anatomy.html)。*

或者，您可以快速调试尚未提交到 SAM 模板的无服务器应用程序。

您开始配置调试行为，方法是使用内联操作来识别符合条件的 AWS Lambda 函数。要使用 SAM 模板定义的基础设施，请在相关 YAML 格式的文件中使用内联操作。要在不使用模板的情况下直接测试函数，请使用应用程序文件中 Lambda 处理程序的上下文感知链接。

**注意**  
在此示例中，我们正在调试一个使用 JavaScript. 但是，您可以将 AWS Toolkit 中提供的调试功能与以下语言和运行时一起使用：  
JavaScript — Node.js 10。 *x*、12。 *x*、14。 *x*
Python — 3.7、3.8、3.9、3.10（Python 2.7 和 3.6 无服务器应用程序可以运行，但不能由工具包调试。） AWS 
您的语言选择还会影响上下文感知链接指示符合条件的 Lambda 处理程序的方式。有关更多信息，请参阅 [直接从代码运行和调试无服务器函数](#run-debug-no-template)。

### 使用 SAM 模板运行和调试无服务器应用程序
<a name="sam-run-debug-template"></a>

对于使用 SAM 模板运行和调试的应用程序，YAML 格式的文件描述了应用程序的行为及其使用的资源。如果您使用 AWS Toolkit 创建无服务器应用程序，`template.yaml`则会自动为您的项目生成一个名为的文件。

在此步骤中，使用在 [创建无服务器应用程序](#sam-create) 中创建的示例应用程序。

### 使用 SAM 模板运行和调试无服务器应用程序


1. 要查看构成无服务器应用程序的应用程序文件，请转到 **Environment（环境）**窗口中。

1. 在应用程序文件夹（例如 *my-sample-app*）中，打开该`template.yaml`文件。

1. 对于 `template.yaml`，选择 **Edit Launch Configuration**（编辑启动配置）。

   新编辑器将显示 `launch.json` 文件，该文件提供具有默认属性的调试配置。

1. <a name="properties"></a>编辑或确认以下配置属性的值：
   + `"name"` – 输入一个易于阅读的名称，以显示在 **Run**（运行）视图中的 **Configuration**（配置）下拉字段中。
   + `"target"` – 确保该值为 `"template"`。这样，SAM 模板便成为调试会话的入口点。
   + `"templatePath"` – 输入 `template.yaml` 文件的相对路径或绝对路径。
   + `"logicalId"` – 确保名称与 SAM 模板的 **Resource**（资源）部分中指定的名称一致。在这种情况下，它是类型 `AWS::Serverless::Function` 的 `HelloWorldFunction`。

   有关 `launch.json` 文件中这些以及其他条目的更多信息，请参阅 [调试无服务器应用程序的配置选项](sam-debug-config-ref.md)。

1. 如果您对调试配置满意，请保存 `launch.json`。然后选择 **RUN**（运行）旁边的绿色“play”（播放）按钮以启动调试。
**注意**  
如果 SAM 应用程序无法运行，请检查 **Output（输出）**窗口以查看错误是否因 Docker 镜像未构建引起。您可能需要释放环境中的磁盘空间。  
有关更多信息，请参阅 [由于 AWS Cloud9 环境没有足够的磁盘空间，因此在 AWS Toolkit 中本地运行 SAM 应用程序时出错](troubleshooting.md#troubleshooting-dockerimage-toolkit)。

   当调试会话启动时，**DEBUG CONSOLE**（调试控制台）面板显示调试输出，并显示 Lambda 函数返回的任何值。调试 SAM 应用程序时，选择 **AWS Toolkit** 作为 **Output**（输出）面板中的 **Output**（输出）通道。<a name="docker-problem"></a>
**注意**  
对于 Windows 用户，如果在此过程中遇到 Docker 安装错误，则可能需要在 **Docker Settings**（Dcoker 设置）中刷新共享驱动器的凭证。Docker 安装错误类似于以下内容。  

   ```
   Fetching lambci/lambda:nodejs10.x Docker container image......
   2019-07-12 13:36:58 Mounting C:\Users\<username>\AppData\Local\Temp\ ... as /var/task:ro,delegated inside runtime container
   Traceback (most recent call last):
   ...requests.exceptions.HTTPError: 500 Server Error: Internal Server Error ...
   ```

### 直接从代码运行和调试无服务器函数
<a name="run-debug-no-template"></a>

测试 AWS SAM 应用程序时，您可以选择仅运行和调试 Lambda 函数。排除 SAM 模板定义的其他资源。此方法涉及使用内联操作来识别源代码中可以直接调用的 Lambda 函数处理程序。

上下文感知链接检测到的 Lambda 处理程序取决于您为应用程序使用的语言和运行时。


|  Language/runtime  | 上下文感知链接识别 Lambda 函数的条件 | 
| --- | --- | 
|  JavaScript （Node.js 10.x、12.x 和 14.x）  |  该函数具有以下功能：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/cloud9/latest/user-guide/serverless-apps-toolkit.html)  | 
|  Python（3.7、3.8、3.9 和 3.10）  |  该函数具有以下功能：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/cloud9/latest/user-guide/serverless-apps-toolkit.html)  | 

### 直接从应用程序代码运行和调试无服务器应用程序




1. 要查看无服务器应用程序文件，请通过选择编辑器旁边的文件夹图标导航到应用程序文件夹。

1. 在应用程序文件夹（例如 *my-sample-app*）中，展开函数文件夹（在本例中为 *hello-world*），然后打开该`app.js`文件。

1. 在识别符合条件的 Lambda 处理程序函数的内联操作中，选择 `Add Debug Configuration`。如果未出现添加调试配置选项，则必须启用代码透镜。要启用代码镜头，请参阅[启用 AWS 工具包代码镜头](enable-code-lenses.md)。  
![\[访问 Lambda 函数处理程序的内联操作中的“Add Debug Configuration（添加调试配置）”选项。\]](http://docs.aws.amazon.com/zh_cn/cloud9/latest/user-guide/images/direct_invoke_config.png)

1. 选择运行 SAM 应用程序的运行时。

1. 在 `launch.json` 文件的编辑器中，编辑或确认以下配置属性的值：
   + `"name"` – 输入易于阅读的名称。
   + `"target"` – 确保值为 `"code"`，以便直接调用 Lambda 函数处理程序。
   + `"lambdaHandler"` – 输入代码中方法的名称，Lambda 可使用该方法来调用您的函数。例如，对于中的应用程序 JavaScript，默认值为`app.lambdaHandler`。
   + `"projectRoot"` – 输入包含 Lambda 函数的应用程序文件的路径。
   + `"runtime"` – 输入或确认 Lambda 执行环境的有效运行时（例如 `"nodejs.12x"`）。
   + `"payload"` – 选择以下选项之一以定义要作为输入提供给 Lambda 函数的事件负载：
     + `"json"`：JSON 格式的键值对，用于定义事件负载。
     + `"path"`：用作事件负载的文件路径。

1. 

   如果您对调试配置满意，请选择 **RUN（运行）** 旁边的绿色播放箭头启动调试。

   当调试会话启动时，**DEBUG CONSOLE**（调试控制台）面板显示调试输出，并显示 Lambda 函数返回的任何值。调试 SAM 应用程序时，选择 **AWS Toolkit** 作为 **Output**（输出）面板中的 **Output**（输出）通道。
**注意**  
如果您看到错误消息中提到的 Docker，请参阅此[备注](#docker-problem)。

### 运行和调试本地 Amazon API Gateway 资源
<a name="run-debug-api-gateway"></a>

您可以运行或调试中指定 AWS SAM 的 API Gateway 本地资源`template.yaml`。为此，请使用运行`type=aws-sam`的 AWS Cloud9 启动配置`invokeTarget.target=api`。

**注意**  
API Gateway 支持两种类型 APIs。它们是 REST 和 HTTP APIs。但是，该 AWS 工具包的 API Gateway 功能仅支持 REST APIs。有时 HTTP APIs 被称为 “API Gateway V2” APIs。

**运行和调试本地 API Gateway 资源**

1. 选择以下方法之一以创建 AWS SAM API Gateway 资源的启动配置：
   + **选项 1**：访问 AWS SAM 项目中的处理程序源代码（具体而言，是 .js、.cs 或 .py 文件），将鼠标悬停在 Lambda 处理程序上，然后选择 **Add Debug Configuration**（添加调试配置）。如果未出现添加调试配置选项，请启用代码透镜。要启用代码透镜，请参阅[启用 AWS 工具包代码镜头](enable-code-lenses.md)。然后，在菜单中，选择标记为 API 事件的项目。
   + **选项 2** 编辑 `launch.json` 并使用以下语法创建新的启动配置。

     ```
     {
         "type": "aws-sam",
         "request": "direct-invoke",
         "name": "myConfig",
         "invokeTarget": {
             "target": "api",
             "templatePath": "n12/template.yaml",
             "logicalId": "HelloWorldFunction"
         },
         "api": {
             "path": "/hello",
             "httpMethod": "post",
             "payload": {
                 "json": {}
             }
         }, 
         "sam": {},
         "aws": {}
     }
     ```

1. 在 **Run**（运行）按钮旁的下拉菜单中，选择启动配置（在前例中名为 `myConfig`）。

1. （可选）将断点添加到您的 Lambda 项目代码中。

1. 选择绿色 **play（播放）按钮**旁边的 **Run（运行）**按钮。

1. 在输出窗格中，查看结果。

#### 配置
<a name="run-debug-api-gateway-configuration"></a>

在使用 `invokeTarget.target` 属性值 `api` 时，Toolkit 会更改启动配置验证和行为，以支持 `api` 字段。

```
{
    "type": "aws-sam",
    "request": "direct-invoke",
    "name": "myConfig",
    "invokeTarget": {
        "target": "api",
        "templatePath": "n12/template.yaml",
        "logicalId": "HelloWorldFunction"
    },
    "api": {
        "path": "/hello",
        "httpMethod": "post",
        "payload": {
            "json": {}
        },
        "querystring": "abc=def&qrs=tuv",
        "headers": {
            "cookie": "name=value; name2=value2; name3=value3"
        }
    },
    "sam": {},
    "aws": {}
}
```

按以下示例的方式替换值：

**invokeTarget.logicalId**  
API 资源。

**path**  
启动配置请求的 API 路径（例如 `"path": "/hello"`）。  
必须是从由 `invokeTarget.templatePath` 指定的 `template.yaml` 解析出的有效 API 路径。

**httpMethod**  
使用以下任一动词：“delete”、“get”、“head”、“options”、“patch”、“post”和“put”。

**payload**  
要在请求中发送的 JSON 负载（HTTP 正文），其结构和规则与 lambda.payload 字段相同。  
`payload.path` 指向包含 JSON 负载的文件。  
`payload.json` 指定内联 JSON 负载。

**headers**  
可选的名称/值对映射。使用它来指定要包含在请求中的 HTTP 标头。  

```
"headers": {
     "accept-encoding": "deflate, gzip;q=1.0, *;q=0.5",
     "accept-language": "fr-CH, fr;q=0.9, en;q=0.8, de;q=0.7, *;q=0.5",
     "cookie": "name=value; name2=value2; name3=value3",
     "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36",
}
```

**querystring**  
（可选）使用此字符串设置请求的 `querystring`（例如 `"querystring": "abc=def&ghi=jkl"`）。

**AWS**  
如何提供 AWS 连接信息。有关更多信息，请参阅 [调试无服务器应用程序的配置选项](sam-debug-config-ref.md) 中的 **AWS 连接 (`aws`) 属性**表。

**sam**  
 AWS SAM CLI 如何构建应用程序。有关更多信息，请参阅 [调试无服务器应用程序的配置选项](sam-debug-config-ref.md) 中的 **AWS SAM CLI (`sam`) 属性**。

## 同步无服务器应用程序
<a name="deploy-serverless-app"></a>

此示例演示如何使用 AWS Toolkit for Visual Studio Code将在上一主题 ([创建无服务器应用程序](#sam-create)) 中创建的无服务器应用程序同步到 AWS 。

### 先决条件
<a name="deploy-sam-prereq"></a>
+ 请务必选择全局唯一的 Amazon S3 存储桶名称。
+ 确保您在中配置的凭证包括对以下服务的相应 read/write 访问权限：Amazon S3、 CloudFormation AWS Lambda、和 Amazon API Gateway。
+ 对于具有部署类型 `Image` 的应用程序，请确保您拥有全局唯一的 Amazon S3 存储桶名称和用于部署的 Amazon ECR 存储库 URI。

### 同步无服务器应用程序
<a name="deploy-sam-proc"></a>

1. 在 **AWS 各区服务浏览器**窗口中，打开 **Lambda** 节点的上下文（右键单击）菜单，然后选择**同步 SAM 应用程序**。

1. 选择要部署 AWS 区域 到的。

1. 选择要用于部署的 `template.yaml` 文件。

1. 输入此部署可使用的 Amazon S3 存储桶的名称。存储桶必须位于您要部署到的区域中。
**警告**  
Amazon S3 存储桶名称在 Amazon S3 中的所有现有存储桶名称之间必须是全局唯一的。向以下示例给出的名称添加唯一标识符，或者选择其他名称。

1. 如果您的无服务器应用程序包含具有类型 `Image` 的函数，输入此部署可使用的 Amazon ECR 存储库的名称。存储库必须位于您要部署到的区域中。

1. 输入已部署堆栈的名称：新堆栈名称或现有堆栈名称。

1. 在 **Console（控制台）**的 **AWS Toolkit** 选项卡验证部署是否成功。

   如果发生错误，右下角将弹出一条消息。

   如果发生这种情况，请查看 **AWS Toolkkit** 选项卡中的文本以了解详细信息。以下是错误详细信息的示例。

   ```
   Error with child process: Unable to upload artifact HelloWorldFunction referenced by CodeUri parameter of HelloWorldFunction resource.
   S3 Bucket does not exist. Execute the command to create a new bucket
   aws s3 mb s3://pbart-my-sam-app-bucket
   An error occurred while deploying a SAM Application. Check the logs for more information by running the "View AWS Toolkit Logs" command from the Command Palette.
   ```

   在此示例中，出现错误的原因是 Amazon S3 存储桶不存在。

完成部署时，您将看到 **AWS 各区服务浏览器**窗口中列出了您的应用程序。要了解如何调用作为应用程序的一部分创建的 Lambda 函数，请参阅 [调用远程 Lambda 函数](lambda-toolkit.md#remote-lambda)。

## 从云端删除无服务器应用程序 AWS
<a name="delete-serverless-app"></a>

删除无服务器应用程序涉及删除您之前部署到 AWS 云端的 CloudFormation 堆栈。请注意，此过程不会从本地主机中删除您的应用程序目录。

1. 打开 **AWS 各区服务浏览器**。

1. 在 **AWS 各区服务浏览器**窗口中，展开包含希望删除的已部署应用程序的区域，然后展开 **CloudFormation**。

1. 打开上下文（右键单击）菜单，查看与要删除的无服务器应用程序相对应的 CloudFormation 堆栈名称。然后，选择**删除 CloudFormation 堆栈**。

1. 要确认删除已选择的堆栈，请选择 **Delete（删除）**。

如果堆栈删除成功， AWS Toolkit 将从 Expl **AWS orer** 中的 CloudFormation 列表中删除堆栈名称。

# 启用 AWS 工具包代码镜头
<a name="enable-code-lenses"></a>

此步骤说明如何启用 AWS Toolkit 代码镜头。

1. 在菜单栏上，依次选择 **AWS Cloud9** 和 **Preferences**（首选项）。

1. 在 **Preferences**（首选项）选项卡上，在侧边栏中选择 **AWS Toolkit**。

1. 要启用代码镜头，请选择 **Enable Code Lenses**（启用代码镜头）。

# 调试无服务器应用程序的配置选项
<a name="sam-debug-config-ref"></a>

通过内联操作，您可以轻松地查找和定义直接调用 Lambda 函数或使用 SAM 模板的属性。您还可以为`"lambda"`（函数的运行方式）、`"sam"`（ AWS SAM CLI 如何构建应用程序）和`"aws"`（如何提供 AWS 连接信息）定义属性。


**AWS SAM：直接 Lambda 处理程序调用/基于模板的 Lambda 调用**  

| 属性 | 说明 | 
| --- | --- | 
|  `type`  |  指定哪个扩展管理启动配置。始终设置`aws-sam`为使用 AWS SAM CLI 在本地进行构建和调试。  | 
|  `name`  |  指定一个易于阅读的名称，以显示在 **Debug launch configuration（调试启动配置）**列表中。  | 
| `request` |  指定要由指定扩展程序执行的配置类型 (`aws-sam`)。始终设置为 `direct-invoke` 以启动 Lambda 函数。  | 
|  `invokeTarget`  |  指定资源调用的入口点。 为了直接调用 Lambda 函数，请为以下 `invokeTarget` 字段设值： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/cloud9/latest/user-guide/sam-debug-config-ref.html) 为了使用 SAM 模板调用 Lambda 资源，请为以下 `invokeTarget` 字段设值： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/cloud9/latest/user-guide/sam-debug-config-ref.html)  | 


**Lambda (`"lambda"`) 属性**  

|  属性 | 说明 | 
| --- | --- | 
|  `environmentVariables`  |  将操作参数传递到您的函数。例如，如果您要写入 Amazon S3 存储桶，请将存储桶名称配置为环境变量。不要对您所写入的存储桶名称进行硬编码。  | 
| `payload` |  为作为输入提供给 Lambda 函数的事件负载提供两个选项。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/cloud9/latest/user-guide/sam-debug-config-ref.html)  | 
|  `memoryMB`  |  指定为运行一个已调用 Lambda 函数所提供的内存（以兆为单位）。  | 
| `runtime` |  指定 Lambda 函数使用的运行时。有关更多信息，请参阅 [AWS Lambda 运行时](https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html)。  | 
|  `timeoutSec`  |  设置调试会话超时之前的允许时间（以秒为单位）。  | 

 AWS Toolkit 扩展使用 AWS SAM CLI 在本地构建和调试无服务器应用程序。您可以使用`launch.json`文件中配置的属性来`"sam"`配置 AWS SAM CLI 命令的行为。


**AWS SAM CLI (`"sam"`) 属性**  

| 属性 |  说明  |  默认 值  | 
| --- | --- | --- | 
|  `buildArguments`  | 配置 `sam build` 命令构建 Lambda 源代码的方式。若要查看构建选项，请参阅 *AWS Serverless Application Model 开发人员指南*中的 [sam 构建](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-cli-command-reference-sam-build.html)。 |  空字符串  | 
|  `containerBuild`  |  表示是否在 AWS Lambda类似 Docker 的容器中构建函数。  |  `false`  | 
|  `dockerNetwork`  |  Lambda Docker 容器应连接到的现有 Docker 网络的名称或 ID，以及默认桥接网络。如果未指定此项，Lambda 容器将仅连接到默认的桥接 Docker 网络。  |  空字符串  | 
|  `localArguments`  |  其他本地调用参数。  |  空字符串  | 
|  `skipNewImageCheck`  |  指定命令是否应跳过下拉最新 Docker 镜像获取 Lambda 运行时的操作。  |  `false`  | 
|  `template`  |  通过使用参数向 SAM 模板输入客户值来对其进行自定义。有关更多信息，请参阅《AWS CloudFormation 用户指南》**中的[参数](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/parameters-section-structure.html)。  |  `"parameters":{}`  | 


**AWS 连接 (`"aws"`) 属性**  

| 属性 | 说明 | 默认 值 | 
| --- | --- | --- | 
| `credentials` |  从您的凭证文件中选择特定的个人资料（例如`profile:default`）以获取 AWS 凭证。  | 您现有的共享 AWS 配置文件或共享 AWS 凭据文件提供的凭据。 AWS  | 
| `Region` |  设置服务的 AWS 区域（例如 us-east-1）。  | 与活动凭证配置文件关联的默认 AWS 区域。 | 

# AWS Step Functions 使用 AWS 工具包
<a name="bulding-stepfunctions"></a>

该 AWS 工具包为提供支持[AWS Step Functions](https://aws.amazon.com/step-functions/)。Step Functions 允许您创建状态机，为支持关键业务应用程序的 AWS Lambda 函数和其他 AWS 服务定义工作流程。

您可以使用该 AWS 工具包对 Step Functions 执行以下操作：
+ 创建并发布状态机，它是由各个步骤组成的工作流。
+ 下载定义状态机工作流的文件。
+ 使用已输入或选择的输入运行状态机工作流程。

**Topics**
+ [先决条件](#bulding-stepfunctions-pre)
+ [创建和发布状态机](#state-machine-create)
+ [在 T AWS oolkit 中运行状态机](#starting-stepfunctions)
+ [下载状态机定义文件并可视化其工作流](#sfn-download)

## 先决条件
<a name="bulding-stepfunctions-pre"></a>

Step Functions 可以运行代码和访问 AWS 资源（例如调用 Lambda 函数）。为了保持安全性，您必须使用 IAM 角色为 Step Functions 授予对这些资源的访问权限。

借 AWS 助 Toolkit，您可以利用自动生成的 IAM 角色，这些角色对您创建状态机的 AWS 区域有效。要为状态机创建自己的 IAM 角色，请参阅*AWS Step Functions 开发人员指南*中的[如何 AWS Step Functions 使用 IAM](https://docs.aws.amazon.com/step-functions/latest/dg/procedure-create-iam-role.html)。

## 创建和发布状态机
<a name="state-machine-create"></a>

使用 AWS Toolkit 创建状态机时，您需要选择一个为业务案例定义工作流程的入门模板。然后，您可以编辑或替换该模板以满足您的特定需求。有关在表示状态机结构的文件中定义状态机的详细信息，请参阅 *AWS Step Functions 开发人员指南*中的 [Amazon 状态语言](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-amazon-states-language.html)。

1. 在 **AWS Explorer** 窗格中，打开上下文（右击）菜单以访问 **Step Functions**，然后选择 **Create a new Step Function state machine**（新建 Step Function 状态机）。

1. 在命令面板中，为状态机的工作流程选择入门模板。

1. 接下来，为定义状态机的 Amazon 状态机 (ASL) 文件选择格式。

   打开一个编辑器以显示定义状态机工作流的 ASL 文件。
**注意**  
有关编辑 ASL 文件以自定义工作流程的信息，请参阅 [State Machine Structure](https://docs.aws.amazon.com/step-functions/latest/dg/amazon-states-language-state-machine-structure.html)（状态机结构）。

1. 在 ASL 文件中，选择 “**发布到 Step Fun** ctions”，将状态机添加到 AWS 云端。
**注意**  
您也可以在 ASL 文件中选择 **Render graph**（渲染图）来显示状态机工作流的可视化表示。  
![\[显示如何选择“发布到 Step Functions”的示意图\]](http://docs.aws.amazon.com/zh_cn/cloud9/latest/user-guide/images/publish-stepfunction.png)

1. 在命令面板中，选择一个 AWS 区域来托管您的步进函数。

1. 接下来，您可以选择创建新的步骤函数，或选择更新现有的函数。

------
#### [ Quick Create  ]

   此选项允许您使用 step [-functions/latest/dg/concepts-standard-vs-express .html 从 ASL 文件中创建新的步骤](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-standard-vs-express.html)函数。系统要求您指定以下内容：
   + 一个 IAM 角色，允许您的步骤函数运行代码和访问 AWS 资源。（您可以选择一个自动生成的 IAM 角色，该角色对您创建状态机的 AWS 区域有效。）
   + 新函数的名称。

   您可以在 T AWS oolkit 输出选项卡中检查状态机是否已成功创建并获取其 ARN。

------
#### [ Quick Update ]

   如果 AWS 区域中已经存在状态机，则可以选择一个状态机使用当前 ASL 文件进行更新。

   您可以在 T AWS oolkit 输出选项卡中检查状态机是否已成功更新并获取其 ARN。

------

   创建状态机之后，它会显示在 **AWS Explorer** 窗格中的 **Step Functions** 下方。如果没有立即出现，请选择 **Toolkit**（工具包）菜单，**Refresh Explorer**（刷新 Explorer）。

## 在 T AWS oolkit 中运行状态机
<a name="starting-stepfunctions"></a>

您可以使用 AWS Toolkit 来运行远程状态机。运行状态机接收 JSON 文本作为输入，并将该输入传递给工作流中的第一个状态。各个状态将接收输入形式的 JSON 并通常将 JSON 以输出形式传递到下一个状态。有关更多信息，请参阅 [Step Functions 中输入和输出的处理](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-input-output-filtering.html)。

1. 在 **AWS Explorer** 窗格中，请选择 **Step Functions**。然后打开特定状态机的上下文（右键单击）菜单，并选择 **Start Execution**（开始执行）。

1. 在 **Start Execution**（开始执行）窗格中，通过直接在下面的字段中输入文本或从本地设备上传文件，为状态机的工作流添加 JSON 格式的输入。

1. 选择 **Execute**（执行）。

    AWS Toolkit 输出选项卡显示工作流已启动的确认信息以及进程 ID 的 ARN。您可以使用该进程 ID 在 AWS Step Functions 控制台中检查工作流程是否成功运行。您还可以查看工作流程开始和结束的时间戳。

## 下载状态机定义文件并可视化其工作流
<a name="sfn-download"></a>

下载状态机意味着您下载一个包含表示该状态机结构的 JSON 文本的文件。然后，您可以编辑此文件以创建新状态机或更新现有状态机。有关更多信息，请参阅 *AWS Step Functions 开发人员指南*中的 [Amazon 状态语言](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-amazon-states-language.html)。

1. 在 **AWS Explorer** 窗格中，请选择 **Step Functions**。然后打开特定状态机的上下文（右键单击）菜单，并选择 **Download Definition**（下载定义）。
**注意**  
上下文菜单还提供了若干选项，可**复制名称**和**复制 ARN**。

1. 在 **Save**（保存）对话框中，选择您在环境中存储已下载状态机文件的文件夹，然后选择 **Save**（保存）。

   定义状态机工作流程的 JSON 格式文件将显示在编辑器中。

1. 要显示工作流的可视化表示，请选择 **Render graph**（渲染图）。

   窗口显示一个流程图，其中显示状态机工作流程中的状态顺序。  
![\[状态机工作流程的可视化表示\]](http://docs.aws.amazon.com/zh_cn/cloud9/latest/user-guide/images/render-graph.png)

# 使用 Systems Manager 自动化文档
<a name="systems-manager-automation-docs"></a>

借 AWS Systems Manager助，您可以查看和控制您的基础架构 AWS。Systems Manager 提供了一个统一的用户界面，您可以使用该界面查看来自多个资源的操作数据， AWS 服务 并自动执行跨 AWS 资源的操作任务。

[Systems Manager 文档](https://docs.aws.amazon.com//systems-manager/latest/userguide/sysman-systems-manager-docs.html)定义 Systems Manager 对您的托管式实例执行的操作。自动化文档是一种 Systems Manager 文档，用于执行常见的维护和部署任务。这包括创建或更新 Amazon 机器映像（AMI）。本主题概述了如何使用 AWS Toolkit 创建、编辑、发布和删除自动化文档。

**Topics**
+ [假设和先决条件](#systems-manager-assumptions)
+ [Systems Manager 自动化文档的 IAM 权限](#systems-manager-permissions)
+ [创建新的 Systems Manager 自动化文档](#systems-manager-create)
+ [发布 Systems Manager 自动化文档](#systems-manager-publish)
+ [编辑现有 Systems Manager 自动化文档](#systems-manager-open)
+ [使用版本](#systems-manager-edit-default-version)
+ [删除 Systems Manager 自动化文档](#systems-manager-delete)
+ [运行 Systems Manager 自动化文档](#systems-manager-run)
+ [对 AWS 工具包中的 Systems Manager 自动化文档进行故障排除](systems-manager-troubleshoot.md)

## 假设和先决条件
<a name="systems-manager-assumptions"></a>

在开始之前，请确保您满足以下条件：
+ 您熟悉 Systems Manager。有关更多信息，请参阅 [AWS Systems Manager 用户指南](https://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html)**。
+ 你熟悉 Systems Manager 自动化使用案例。有关更多信息，请参阅 *AWS Systems Manager 用户指南*中的 [AWS Systems Manager 自动化](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-automation.html)。

## Systems Manager 自动化文档的 IAM 权限
<a name="systems-manager-permissions"></a>

要创建、编辑、发布和删除 Systems Manager 自动化文档，您必须拥有包含必要 AWS Identity and Access Management (IAM) 权限的证书配置文件。以下策略文档定义了可在主体策略中使用的必要 IAM 权限。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:ListDocuments",
                "ssm:ListDocumentVersions",
                "ssm:DescribeDocument",
                "ssm:GetDocument",
                "ssm:CreateDocument",
                "ssm:UpdateDocument",
                "ssm:UpdateDocumentDefaultVersion",
                "ssm:DeleteDocument"
            ],
            "Resource": "*"
        }
    ]
}
```

------

有关如何更新 IAM policy 的信息，请参阅《IAM 用户指南》**中的[创建 IAM policy](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)。

## 创建新的 Systems Manager 自动化文档
<a name="systems-manager-create"></a>

您可以使用 AWS 工具包在 `JSON` 或 `YAML` 中创建自动化文档。创建自动化文档时，它将显示在无标题文件中。您可以命名文件并将其保存。但是，只有在您发布文件后， AWS 才会将其上传到。

**要新建自动化文档**

1. 请在左侧导航窗格中选择搜索图标或按 **Ctrl\$1P** 以打开搜索窗格。

1. 在搜索窗格中，开始输入术语“systems manager”并于显示时选择 **AWS: Create a new Systems Manager Document Locally** 命令。

1. 为“Hello World”示例选择其中一个初学者模板。

1. 请选择 `JSON` 或 `YAML` 作为文档的模板。

   编辑器将显示新的自动化文档。

**注意**  
当第一次创建本地自动化文档时，它不会自动显示在 AWS中。在运行它之前，必须将其发布到 AWS。

## 发布 Systems Manager 自动化文档
<a name="systems-manager-publish"></a>

在 AWS Toolkit 中创建或编辑自动化文档后，您可以将其发布到 AWS。

**要发布您的自动化文档**

1. 打开您想要使用 [编辑现有 Systems Manager 自动化文档](#systems-manager-open) 中概述的流程进行发布的自动化文档。

1. 在左侧导航窗格中选择搜索图标或按 **Ctrl\$1P** 以打开搜索窗格。

1. 在搜索窗格中，开始输入术语 "systems manager" 并于显示时选择 **AWS: Publish a new Systems Manager Document** 命令。

1. 对于**第 1 步（共 3** 步），选择要发布文档 AWS 区域 的位置。

1. 对于**步骤 2（共 3 步）**，选择 **Quick Create**（快速创建）以创建一个自动化文档。或者选择 **Quick Update**（快速更新）以在该区域中更新现有的自动化文档。
**注意**  
您只能更新您拥有的自动化文档。如果选择 **Quick Update**（快速更新）而且您不拥有该区域中的任何文档，会有一条消息通知您在更新文档之前发布文档。

1. 对于**步骤 3（共 3 步）**，根据您在上一步中的选择，输入新自动化文档的名称或选择要更新的现有文档。
**注意**  
当您在中发布现有自动化文档的更新时 AWS，会向该文档添加一个新版本。如果一个文档有多个版本，则可以设置[默认版本](#systems-manager-edit-default-version)。

## 编辑现有 Systems Manager 自动化文档
<a name="systems-manager-open"></a>

您可以使用 AWS 资源管理器查找现有的 Systems Manager 自动化文档。当您打开现有文档时，它会在 AWS Cloud9 编辑器中显示为无标题文件。您可以下载三种类型的自动化文档：
+ **Owned by Amazon**：可通过在运行时指定参数来使用的预配置 SSM 文档。
+ 归@@ **我所有**：我创建并发布到的文档 AWS。
+ **与我共享**：所有者根据你的 AWS 账户 ID 与你共享的文档。

你唯一可以更新的文档类型 AWS 是那些*归我*所有的文档。您还可以下载亚马逊共享或拥有的自动化文档，并在 AWS Cloud9中进行编辑。但是，当您发布到时 AWS，必须使用创建新文档或更新您拥有的现有文档。您不能创建具有其他所有者或由亚马逊拥有的文档的新版本。

有关更多信息，请参阅 *AWS Systems Manager 用户指南*中的 [AWS Systems Manager 文档](https://docs.aws.amazon.com/systems-manager/latest/userguide/documents.html)。

1. 在 AWS Explorer 中，对于 S **ystems Manager**，选择要下载的 SSM 文档的类别：“**亚马逊所有**”、“**我所有**” 或 “**与我共享**”。

1. 对于特定文档，请打开上下文（右键单击）菜单并选择 **Download as YAML**（下载为 YAML）或者 **Download as JSON**（下载为 JSON）。

   格式化的 SSM 文档将显示在新的编辑器选项卡中。

完成编辑后，您可以使用 **AWS：发布新的 Systems Manager 文档**命令在 AWS 云端创建新文档或更新您拥有的现有文档。

## 使用版本
<a name="systems-manager-edit-default-version"></a>

Systems Manager 自动化文档使用版本进行变更管理。使用 AWS Toolkit，您可以设置文档的默认版本，即运行文档时使用的版本。

**要设置默认版本**
+ 在 AWS 资源管理器中，导航到要设置默认版本的文档，打开该文档的上下文（右键单击）菜单，然后选择**设置默认版本**。
**注意**  
如果选择的文档只有一个版本，则无法更改默认版本。

## 删除 Systems Manager 自动化文档
<a name="systems-manager-delete"></a>

您可以在 AWS Toolkit 中删除您拥有的自动化文档。删除自动化文档将删除该文档以及该文档的所有版本。

**重要**  
删除是一个无法撤消的破坏性操作。
删除已经启动的自动化文档不会删除运行时创建或修改的 AWS 资源。
只有在您拥有文档的情况下才允许删除。

**要删除您的自动化文档**

1. 在 AWS 资源管理器窗格中，对于 **Systems Manager**，展开 Own **ed by Me** 以列出您的文档。

1. 打开要删除的文档的上下文（右键单击）菜单，然后选择 **Delete document**（删除文档）。

1. 在显示的警告对话框中，选择 **Delete**（删除）以确认。

## 运行 Systems Manager 自动化文档
<a name="systems-manager-run"></a>

将自动化文档发布到后 AWS，您可以运行它来代表您在中执行任务 AWS 账户。要运行自动化文档，可以使用、Systems Manager APIs AWS CLI、或 AWS Tools for PowerShell。 AWS 管理控制台有关如何运行 Automation 文档的说明，请参阅 *AWS Systems Manager 用户指南*中的[运行简单的自动化](https://docs.aws.amazon.com/systems-manager/latest/userguide/running-simple-automations.html)。

或者，如果您想在 Systems Manager 中 AWS SDKs 使用其中一个 APIs 来运行自动化文档，请参阅 [AWS SDK 参考资料](https://aws.amazon.com/developer/tools/)。

**重要**  
运行自动化文档可能会在中创建新资源， AWS 并可能产生账单费用。我们强烈建议您在运行自动化文档之前了解自动化文档将在账户中创建什么。

# 对 AWS 工具包中的 Systems Manager 自动化文档进行故障排除
<a name="systems-manager-troubleshoot"></a>

**我在 AWS Toolkit 中保存了我的自动化文档，但在中却看不到它 AWS 管理控制台。**  
在 AWS Toolkit 中保存自动化文档不会将自动化文档发布到 AWS。有关发布自动化文档的更多信息，请参阅[发布 Systems Manager 自动化文档](systems-manager-automation-docs.md#systems-manager-publish)。

**发布自动化文档失败，出现权限错误。**  
确保您的 AWS 凭证配置文件具有发布 Automation 文档所需的权限。有关权限策略的示例，请参阅 [Systems Manager 自动化文档的 IAM 权限](systems-manager-automation-docs.md#systems-manager-permissions)。

**我已将自动化文档发布到 AWS，但在 AWS 资源管理器窗格中看不到它。**  
确保您已将文档发布到您在 AWS 资源管理器窗格中浏览的同一 AWS 区域。

**我已经删除了自动化文档，但是我仍在为其创建的资源付费。**  
删除自动化文档不会删除它创建或修改的资源。您可以通过[AWS 账单管理控制台](https://console.aws.amazon.com/billing/home)识别您创建的 AWS 资源，查看您的费用，然后从中选择要删除的资源。

# 在 AWS Cloud9 IDE 中使用 Amazon ECR
<a name="ecr"></a>

Amazon Elastic Container Registry (Amazon ECR) AWS 是一项安全且可扩展的容器注册管理服务。可通过 AWS 工具包资源管理器访问多个 Amazon ECR 服务功能：
+ 创建存储库。
+ 为您的存储库或带标签的图像创建 AWS App Runner 服务。
+ 访问图像标签和存储库 URIs 或 ARNs.
+ 删除映像标签和存储库。

您还可以通过安装 CL AWS I 和其他平台，通过 AWS Cloud9 控制台访问全套 Amazon ECR 功能。

有关 Amazon ECR 的更多信息，请参阅《Amazon Elastic Container Registry 用户指南》中的[什么是 Amazon ECR？](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html)

## 先决条件
<a name="prereqs-awstoolkit-vscode-ecr"></a>

以下内容已预先安装在 AWS Cloud9 IDE 中，适用于 AWS Cloud9 亚马逊 EC2 环境。他们需要从 AWS Cloud9 IDE 访问 Amazon ECR 服务。

### IAM 凭证
<a name="create-an-iam-user"></a>

您在 AWS 控制台中创建并用于进行身份验证的 IAM 角色。有关 IAM 的更多信息，请参阅 [AWS Identity and Access Management 用户指南](https://docs.aws.amazon.com/IAM/latest/UserGuide/)。

### Docker 配置
<a name="create-an-iam-user"></a>

Docker 已预先安装在适用于 AWS Cloud9 亚马逊 AWS Cloud9 EC2 环境的 IDE 中。有关 Docker 的更多信息，请参阅[安装 Docker 引擎](https://docs.docker.com/engine/install/)。

### AWS CLI 版本 2 配置
<a name="create-an-iam-user"></a>

AWS 适用于 AWS Cloud9 亚马逊 EC2 环境的 AWS Cloud9 IDE 中已预安装了 CLI 版本 2。有关 AWS CLI 版本 2 的更多信息，请参阅[安装、更新和卸载 AWS CLI 版本 2](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)。

**Topics**
+ [先决条件](#prereqs-awstoolkit-vscode-ecr)
+ [将 Amazon ECR 与 IDE 配合使用 AWS Cloud9](ecr-working.md)

# 使用亚马逊 ECR 服务 AWS Cloud9
<a name="ecr-working"></a>

您可以直接从 AWS IDE 中的资源管理器访问亚马逊弹性容器注册表 (Amazon ECR) Container Registry 服务。 AWS Cloud9 您可以使用 Amazon ECR 将程序映像推送到 Amazon ECR 存储库。要开始使用，请执行以下步骤：

1. 创建一个 Dockerfile，其中包含构建映像所需的信息。

1. 从该 Dockerfile 生成映像并标记该映像以供处理。

1. 创建一个位于 Amazon ECR 实例内部的存储库。

1. 将标记的映像推送到此存储库。

**Topics**
+ [先决条件](#prereqs-vscode-ecr)
+ [1. 创建 Dockerfile](#dockerfile-ecr-cloud9toolkit)
+ [2. 从您的 Dockerfile 构建映像](#build-docker-image)
+ [3. 创建新的存储库](#create-repository)
+ [4. 推送、提取和删除映像](#push-image)

## 先决条件
<a name="prereqs-vscode-ecr"></a>

在使用该 AWS 工具包的 Amazon ECR 功能之前 AWS Cloud9，请确保先满足这些[先决条件](ecr.md#prereqs-awstoolkit-vscode-ecr)。这些先决条件已预先安装在适用于 AWS Cloud9 亚马逊 EC2 环境的 AWS Cloud9 IDE 中，并且是访问 Amazon ECR 所必需的。

## 1. 创建 Dockerfile
<a name="dockerfile-ecr-cloud9toolkit"></a>

Docker 使用名为 Dockerfile 的文件来定义可以推送和存储在远程存储库中的映像。在将映像上载到 ECR 存储库之前，请先创建一个 Dockerfile，然后从该 Dockerfile 构建映像。

**创建 Dockerfile**

1. 要导航到要在其中存储 Dockerfile 的目录，请在 AWS Cloud9 IDE 的左侧导航栏中选择 **Toggle Tree**（切换树）选项。

1. 创建名为 **Dockerfile** 的新文件。
**注意**  
AWS Cloud9 IDE 可能会提示您选择文件类型或文件扩展名。如果出现这种情况，请选择**纯文本**。 AWS Cloud9 IDE 有一个 “dockerfile” 扩展名。但是，我们建议您不要使用它。这是因为该扩展名可能会导致与某些版本的 Docker 或其他关联应用程序发生冲突。

**使用 IDE 编辑你的 Dockerfile AWS Cloud9**

如果 Dockerfile 具有文件扩展名，请打开该文件的上下文（右键单击）菜单，然后移除文件扩展名。带有扩展名的 Dockerfile 可能会导致与某些版本的 Docker 或其他关联应用程序发生冲突。

从 Dockerfile 中删除文件扩展名后：

1. 直接在 IDE 中打开空的 Dockerfile。 AWS Cloud9 

1. 将以下示例的内容复制到您的 Dockerfile 中。  
**Example Dockerfile 映像模板**  

   ```
   FROM ubuntu:22.04
   
   # Install dependencies
   RUN apt-get update && \
    apt-get -y install apache2
   
   # Install apache and write hello world message
   RUN echo 'Hello World!' > /var/www/html/index.html
   
   # Configure apache
   RUN echo '. /etc/apache2/envvars' > /root/run_apache.sh && \
    echo 'mkdir -p /var/run/apache2' >> /root/run_apache.sh && \
    echo 'mkdir -p /var/lock/apache2' >> /root/run_apache.sh && \ 
    echo '/usr/sbin/apache2 -D FOREGROUND' >> /root/run_apache.sh && \ 
    chmod 755 /root/run_apache.sh
   
   EXPOSE 80
   
   CMD /root/run_apache.sh
   ```

   这是使用 Ubuntu 22.04 映像的 Dockerfile。**RUN** 指令将更新软件包缓存。安装一些适用于 Web 服务器的软件包，然后将“Hello World\$1” 内容写入到 Web 服务器的文档根目录。**EXPOSE** 指令在容器上公开端口 80，而 **CMD** 指令启动 Web 服务器。

1. 保存您的 Dockerfile。

## 2. 从您的 Dockerfile 构建映像
<a name="build-docker-image"></a>

您创建的 Dockerfile 包含为程序构建映像所需的信息。在将该映像推送到您的 Amazon ECR 实例之前，请先构建该映像。

**从您的 Dockerfile 构建映像**

1. 要导航到包含您的 Dockerfile 的目录，请使用 Docker CLI 或与您的 Docker 实例集成的 CLI。

1. 要构建在 Dockerfile 中定义的映像，请在与 Dockerfile 相同的目录中运行 **Docker build** 命令。

   ```
             docker build -t hello-world .
   ```

1. 要验证是否已正确创建映像，请运行 **Docker images** 命令。

   ```
   docker images --filter reference=hello-world
   ```  
**Example**  

   输出如下所示。

   ```
   REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
   hello-world         latest              e9ffedc8c286        4 minutes ago       241MB
   ```

1. 要运行基于 Ubuntu 22.04 的新构建映像，请使用 **echo** 命令。
**注意**  
创建或推送映像不需要执行此步骤。但是，您可以看到程序映像在运行时是如何工作的。

   ```
   FROM ubuntu:22.04
   CMD ["echo", "Hello from Docker in Cloud9"]
   ```

   然后，运行并构建 dockerfile。必须从与 dockerfile 相同的目录中运行此命令。

   ```
   docker build -t hello-world .
   docker run --rm hello-world
   ```  
**Example**  

   输出如下所示。

   ```
   Hello from Docker in Cloud9
   ```

   有关 **Docker run** 命令的更多信息，请参阅 Docker 网站上的 [Docker Run 参考](https://docs.docker.com/engine/reference/run/)。

## 3. 创建新的存储库
<a name="create-repository"></a>

要将您的映像上载到您的 Amazon ECR 实例，请创建一个新的存储库来存储它。

**创建新的 Amazon ECR 存储库**

1. 从 AWS Cloud9 IDE 导航栏中选择 “**AWS 工具包” 图标**。

1. 展开 AWS Explorer 菜单。

1. 找到与您的关联 AWS 区域 的默认值 AWS 账户。然后，选择它以查看通过 AWS Cloud9 IDE 提供的服务的列表。

1. 打开 **ECR** 选项的上下文（右键单击）菜单，以启动 **Create new repository**（创建新的存储库）过程。然后，选择 **Create Repository**（创建存储库）。

1. 要完成该过程，请按照提示操作。

1. 该过程完成后，您可以从 AWS 资源管理器菜单的 **ECR** 部分访问您的新存储库。

## 4. 推送、提取和删除映像
<a name="push-image"></a>

从 Dockerfile 构建映像并创建存储库后，您可以将映像推送到 Amazon ECR 存储库中。此外，使用带有 Docker 的 AWS Explorer 和 AWS CLI，您可以执行以下操作：
+ 从存储库中提取映像。
+ 删除存储在存储库中的映像。
+ 删除您的存储库。

**使用您的原定设置注册表对 Docker 进行身份验证**

在 Amazon ECR 实例和 Docker 实例之间交换数据要求进行身份验证。使用注册表对 Docker 进行身份验证：

1. 在 AWS Cloud9 IDE 中打开终端。

1. 使用该**get-login-password**方法对您的私有 ECR 注册表进行身份验证，然后输入您的地区和 AWS 账户 ID。

   ```
   aws ecr get-login-password \
       --region <region> \
   | docker login \
       --username AWS \
       --password-stdin <aws_account_id>.dkr.ecr.<region>.amazonaws.com
   ```
**重要**  
在前面的命令中，将 **region** 和 **AWS\$1account\$1id** 替换为特定于您的 AWS 账户的信息。有效的 **region** 值为 *us-east-1*。

**标记映像并将其推送到存储库**

使用您的实例对 Docker 进行身份验证后 AWS，将映像推送到您的存储库。

1. 使用 **docker images** 命令查看您本地存储的映像，并确定要标记的映像。

   ```
   docker images
   ```  
**Example**  

   输出如下所示。

   ```
   REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
   hello-world         latest              e9ffedc8c286        4 minutes ago       241MB
   ```

1. 使用 **Docker tag** 命令标记映像。

   ```
   docker tag hello-world:latest AWS_account_id.dkr.ecr.region.amazonaws.com/hello-world:latest
   ```

1. 使用 **Docker push** 命令将标记的映像推送到您的存储库。
**重要**  
请确保您的本地存储库名称与 AWS Amazon EC2 存储库的名称相同。在此示例中，这两个存储库必须称为 `hello-world`。有关使用 docker 推送映像的更多信息，请参阅[推送 Docker 映像](https://docs.aws.amazon.com/AmazonECR/latest/userguide/docker-push-ecr-image.html)。

   ```
   docker push AWS_account_id.dkr.ecr.region.amazonaws.com/hello-world:latest
   ```  
**Example**  

   输出如下所示。

   ```
   The push refers to a repository [AWS_account_id.dkr.ecr.region.amazonaws.com/hello-world] (len: 1)
   e9ae3c220b23: Pushed
   a6785352b25c: Pushed
   0998bf8fb9e9: Pushed
   0a85502c06c9: Pushed
   latest: digest: sha256:215d7e4121b30157d8839e81c4e0912606fca105775bb0636b95aed25f52c89b size: 6774
   ```

成功将带标签的图像上传到存储库后，从 “资源管理器” 选项卡中选择 “刷**新资源管理器”，刷新 AWS ** Too AWS lkit。然后它就会显示在 AWS Cloud9 IDE 的 “ AWS 资源管理器” 菜单中。

**从 Amazon ECR 提取映像**
+ 您可以将映像提取到您的 **Docker tag** 命令的本地实例。

  ```
  docker pull AWS_account_id.dkr.ecr.region.amazonaws.com/hello-world:latest
  ```  
**Example**  

  输出如下所示。

  ```
  azonaws.com/hello-world:latest
  latest: Pulling from hello-world
  Digest: sha256:e02c521fd65eae4ef1acb746883df48de85d55fc85a4172a09a124b11b339f5e
  Status: Image is up to date for 922327013870.dkr.ecr.us-west-2.amazonaws.com/hello-world.latest
  ```

**从 Amazon ECR 存储库中删除映像**

从 AWS Cloud9 IDE 中删除图像有两种方法。第一种方法是使用 AWS 资源管理器。

1. 在 AWS 资源管理器中，展开 **ECR** 菜单。

1. 展开要从中删除映像的存储库。

1. 打开与要删除的映像关联的映像标签的上下文（右键单击）菜单。

1. 要删除与该标签关联的所有存储的映像，请选择 **Delete Tag...**（删除标签...）。

**使用 AWS CLI 删除镜像**
+ 您也可以使用 **AWS ecr batch-delete-image** 命令从存储库中删除图像。

  ```
  aws ecr batch-delete-image \
        --repository-name hello-world \
        --image-ids imageTag=latest
  ```  
**Example**  

  输出如下所示。

  ```
  {
      "failures": [],
      "imageIds": [
          {
              "imageTag": "latest",
              "imageDigest": "sha256:215d7e4121b30157d8839e81c4e0912606fca105775bb0636b95aed25f52c89b"
          }
      ]
  }
  ```

**从 Amazon ECR 实例中删除存储库**

从 AWS Cloud9 IDE 中删除存储库有两种方法。第一种方法是使用 AWS 资源管理器：

1. 在 AWS 资源管理器中，展开 **ECR** 菜单。

1. 打开要删除的存储库的上下文（右键单击）菜单。

1. 选择 **Delete Repository...**（删除存储库...）。

**从 CLI 中删除 Amazon ECR 存储库 AWS**
+ 您可以使用 **AWS ecr delete-repository** 命令删除存储库。
**注意**  
通常，如果不先删除存储库中包含的映像，则无法删除存储库。但是，如果添加 **--force** 标志，则可以一步删除存储库及其所有映像。

  ```
          aws ecr delete-repository \
        --repository-name hello-world \
        --force
  ```  
**Example**  

  输出如下所示。

  ```
  --repository-name hello-world --force
  {
      "repository": {
          "repositoryUri": "922327013870.dkr.ecr.us-west-2.amazonaws.com/hello-world", 
          "registryId": "922327013870", 
          "imageTagMutability": "MUTABLE", 
          "repositoryArn": "arn:aws:ecr:us-west-2:922327013870:repository/hello-world", 
          "repositoryName": "hello-world", 
          "createdAt": 1664469874.0
      }
  }
  ```

# AWS IoT 在 AWS Cloud9 IDE 中使用
<a name="iot-start"></a>

 AWS IoT 在 AWS Cloud9 IDE 中，您可以与 AWS IoT 服务进行交互，同时最大限度地减少工作流程中 AWS Cloud9断。本指南介绍如何开始使用 AWS Cloud9 IDE 中提供的 AWS IoT 服务功能。有关更多信息，请参阅 *AWS IoT 开发人员指南*中的[什么是 AWS IoT？](https://docs.aws.amazon.com/iot/latest/developerguide/what-is-aws-iot.html)

## AWS IoT 先决条件
<a name="iot-cloud9-prereq"></a>

要开始 AWS IoT 在 AWS Cloud9 IDE 中使用，请确保您的 AWS 账户 和 AWS Cloud9 设置满足所有要求。有关该 AWS IoT 服务的特定 AWS 账户 要求和 AWS 用户权限的信息，请参阅《*AWS IoT 开发人员指南》*中的 [AWS IoT Core 入门](https://docs.aws.amazon.com/iot/latest/developerguide/setting-up.html)。

## AWS IoT 事情
<a name="iot-cloud9-things"></a>

AWS IoT 连接设备 AWS 服务 和 AWS 资源。您可以使用名为 things AWS IoT 的对象将设备连接**到**。事物是特定设备或逻辑实体的表示形式。它可以是物理设备或传感器（例如，灯泡或墙壁上的开关）。有关 AWS IoT 内容的更多信息，请参阅《*AWS IoT 开发者指南》 AWS IoT*中的[使用管理设备](https://docs.aws.amazon.com/iot/latest/developerguide/iot-thing-management.html)。

### 管理 AWS IoT 事物
<a name="iot-cloud9-things-actions"></a>

 AWS Cloud9 IDE 具有多种功能，可让您的事物管理变得高效。要管理您的 AWS IoT 事物，请按照以下步骤操作：
+ [Create a thing](#thing-create)
+ [Attach a certificate to a thing](#thing-certificate-attach)
+ [Detach a certificate from a thing](#thing-certificate-detach)
+ [Delete a thing](#thing-delete)<a name="thing-create"></a>

**创建事物**

1. 在 AWS 资源管理器中，展开**物联网**服务部分。

1. 打开该**事物**的上下文（右键单击）菜单，然后选择 **Create Thing**（创建事物）。

1. 在 **Thing Name**（事物名称）字段中输入**事物**的名称，然后按照提示操作。

1. 此步骤完成后，在**Things**（事物）部分中可以看到**事物图标**后跟您指定的名称。<a name="thing-certificate-attach"></a>

**将证书附加到事物**

1. 在 AWS 资源管理器中，展开**物联网**服务部分。

1. 在 **Things**（事物）子部分中，找到您要附加证书的**事物**。

1. 打开该**事物**的上下文（右键单击）菜单，然后从上下文菜单中选择 **Attach Certificate**（附加证书）以打开输入选择器，其中提供了您的证书列表。

1. 从列表中，选择与您要附加到事物的证书相对应的**证书 ID**。

1. 此步骤完成后，即可在 AWS Explorer 中，将证书作为事物附加到的项目进行访问。<a name="thing-certificate-detach"></a>

**从事物分离证书**

1. 在 AWS 资源管理器中，展开**物联网**服务部分。

1. 在 **Things**（事物）子部分中，找到您要与之分离证书的**事物**。

1. 打开该**事物**的上下文（右键单击）菜单，然后选择 **Attach Certificate**（附加证书）。

1. 完成此步骤后，分离的证书将不再显示在 AWS 资源管理器中的事物下方。但是，仍然可以从 **Certificate**（证书）子部分访问该证书。<a name="thing-delete"></a>

**删除事物**

1. 在 AWS 资源管理器中，展开**物联网**服务部分。

1. 在 **Things**（事物）子部分中，找到您要删除的**事物**。

1. 打开该**事物**的上下文（右键单击）菜单，然后选择 **Delete Thing**（删除事物）。

1. 完成此步骤后，**Things**（事物）子部分中不再提供已删除的**事物**。
**注意**  
您只能删除没有附加证书的事物。

## AWS IoT 证书
<a name="iot-cloud9-cert"></a>

证书是用于在您的 AWS IoT 服务与设备之间创建安全连接的常用方法。X.509 证书是一个数字证书，它使用 X.509 公有密钥基础设施标准将公有密钥与证书中包含的身份相关联。有关 AWS IoT 证书的更多信息，请参阅《*AWS IoT 开发者指南》*中的[身份验证 (IoT)](https://docs.aws.amazon.com/iot/latest/developerguide/authentication.html)。

### 管理证书
<a name="iot-cloud9-cert-actions"></a>

该 AWS 工具包为您提供了多种直接从 AWS Explorer 管理 AWS IoT 证书的方法。以下步骤概述了这些方法：
+ [Create a certificate](#cert-create)
+ [Change a certificate status](#cert-status)
+ [Attach a policy to a certificate](#cert-attach-policy)
+ [Delete a certificate](#cert-delete)<a name="cert-create"></a>

**创建 AWS IoT 证书**

X.509 证书用于连接您的实例。 AWS IoT

1. 在 AWS 资源管理器中，展开 **IoT** 服务部分，然后打开（右键单击）**证书**。

1. 要打开对话框，请从上下文菜单中选择 **Create Certificate**（创建证书）。

1. 要保存 RSA 密钥对和 X.509 证书，请在本地文件系统中选择一个目录。
**注意**  
默认文件名包含证书 ID 作为前缀。
通过该服务，只会将 X.509 证书与您 AWS 账户一起存储。 AWS IoT 
您的 RSA 密钥对只能颁发一次，请在出现提示时将其保存到文件系统中的安全位置。
如果无法将证书或 key pair 保存到您的文件系统，则 AWS Toolkit 会从您的文件系统中删除该证书 AWS 账户。<a name="cert-status"></a>

**修改证书状态**

单个证书的状态显示在 AWS Explorer 中的证书 ID 旁边，可以将其设置为**激活**、**非活动**或**已撤销**。
**注意**  
您的证书需要**处于**有效状态，然后才能使用它来将设备连接到您的 AWS IoT 服务。
无论证书是之前已停用还是默认处于不活动状态，都可以激活 **inactive**（不活动）的证书。
**Revoked**（已撤销）的证书无法重新激活。

1. 在 AWS 资源管理器中，展开**物联网**服务部分。

1. 在 **Certificates**（证书）子部分中，找到要修改的证书。

1. 打开证书的上下文（右键单击）菜单，该菜单显示对该证书可用的状态更改选项。
+ 如果证书的状态为 **inactive**（不活动），选择 **activate**（激活）可将其状态更改为 **active**（活动）。
+ 如果证书的状态为 **active**（活动），选择 **deactivate**（停用）可其状态更改为 **inactive**（不活动）。
+ 如果证书的状态为 **active**（活动）或**inactive**（不活动），选择 **revoke**（撤销）可将其状态更改为 **revoked**（已撤销）。

**注意**  
如果您选择了附加到 **Things**（事物）子部分所显示事物的证书，则所有这些状态更改操作都可用。<a name="cert-attach-policy"></a>

**将 IoT 策略附加到证书**

1. 在 AWS 资源管理器中，展开**物联网**服务部分。

1. 在 **Certificates**（证书）子部分中，找到要修改的证书。

1. 打开证书的上下文（右键单击）菜单，然后选择 **Attach Policy**（附加策略）以打开输入选择器，其中提供了可用策略的列表。

1. 选择要将策略附加到的证书。

1. 完成此步骤后，您选择的策略将作为子菜单项添加到证书中。<a name="cert-detach-policy"></a>

**将 IoT 策略与证书分离**

1. 在 AWS 资源管理器中，展开**物联网**服务部分。

1. 在 **Certificates**（证书）子部分中，找到要修改的证书。

1. 展开证书并找到要分离的策略。

1. 打开策略的上下文（右键单击）菜单，然后从上下文菜单中选择 **Detach**（分离）。

1. 完成此步骤后，将无法再从您的证书访问该策略，该策略可从 **Policy**（策略）子部分获取。<a name="cert-delete"></a>

**删除证书**

1. 在 AWS 资源管理器中，展开**物联网**服务标题。

1. 在 **Certificates**（证书）子部分中，找到要删除的证书。

1. 打开证书的上下文（右键单击）菜单，然后从上下文菜单中选择 **Delete Certificate**（删除证书）。
**注意**  
无法删除已经附加到某个事物或者处于活动状态的证书。您可以删除附加了策略的证书。

## AWS IoT 政策
<a name="iot-vsctoolkit-policy"></a>

AWS IoT 核心策略是通过 JSON 文档定义的。每个文档必须包括至少一个策略语句。策略定义了 AWS IoT AWS、和您的设备如何相互交互。有关如何创建策略文档的更多信息，请参阅《AWS IoT 开发人员指南**》中的 [IoT 策略](https://docs.aws.amazon.com/iot/latest/developerguide/iot-policies.html)。

**注意**  
命名策略采取了版本控制，因此您可以回滚它们。在 AWS 资源管理器中，您的物联网策略列在 AWS IoT 服务的 “**策略**” 子部分下。您可以通过展开策略来查看策略版本。默认版本由星号（\$1）表示。

### 管理策略
<a name="iot-vsctoolkit-policy-actions"></a>

 AWS Cloud9 IDE 提供了多种管理 AWS IoT 服务策略的方法。以下是您可以直接从 VS Code 的 AWS 资源管理器中管理或修改策略的方法：
+ [Create a policy](#policy-create)
+ [Upload a new policy version](#policy-version-upload)
+ [Edit a policy version](#policy-version-edit)
+ [Change the policy version defualt](#policy-version-default)
+ [Change the policy version defualt](#policy-delete)<a name="policy-create"></a>

**创建 AWS IoT 策略**
**注意**  
您可以通过 AWS 资源管理器创建新策略。但是，定义策略的 JSON 文档必须已经存在于您的文件系统中。

1. 在 AWS 资源管理器中，展开**物联网**服务部分。

1. 打开 **Policies**（策略）子部分的上下文（右键单击）菜单，要打开 **Policy Name**（策略名称）输入字段，请选择 **Create Policy from Document**（从文档创建策略）。

1. 输入名称并按照提示打开一个对话框，其中会要求您从文件系统中选择 JSON 文档。

1. 选择包含您的策略定义的 JSON 文件，策略完成后将在 AWS Explorer 中可用。<a name="policy-version-upload"></a>

**上传新的 AWS IoT 政策版本**

您可以通过向策略上传 JSON 文档来创建策略的新版本。
**注意**  
要使用 AWS 资源管理器创建新版本，新的 JSON 文档必须存在于您的文件系统中。

1. 在 AWS 资源管理器中，展开**物联网**服务部分。

1.  展开 **Policies**（策略）子部分以查看您的 AWS IoT 策略。

1. 打开要更新的策略的上下文（右键单击）菜单，然后选择 **Create new version from Document**（从文档创建新版本）。

1. 对话框打开时，选择包含策略定义更新的 JSON 文件。

   新版本可在 AWS Explorer 中从策略进行访问。<a name="policy-version-edit"></a>

**编辑 AWS IoT 策略版本**

您可以使用打开和编辑策略文档 AWS Cloud9。完成文档编辑后，请将其保存到文件系统中。然后，将其从 AWS 资源管理器上传到您的 AWS IoT 服务。

1. 在 AWS 资源管理器中，展开**物联网**服务部分。

1. 展开 **Policies**（策略）子部分并找到要更新的策略。

1. 要打开 **Policy Name**（策略名称），请从 **Document**（文档）选择 **Create Policy**（创建策略）。

1. 展开要更新的策略，然后打开要编辑的策略版本的上下文（右键单击）菜单。

1. 要在中打开策略版本 AWS Cloud9，请从上下文菜单中选择 “**查看**” 以打开策略版本。

1. 打开策略文档后，编辑并保存更改。
**注意**  
此时，您对策略所做的更改仅保存到本地文件系统中。要更新版本并使用 AWS 资源管理器进行跟踪，请重复中的步骤[Upload a new policy version](#policy-version-upload)。<a name="policy-version-default"></a>

**选择新的默认策略版本**

1. 在 AWS 资源管理器中，展开**物联网**服务部分。

1. 展开 **Policies**（策略）子部分并找到要更新的策略。

1. 展开要更新的策略，然后打开要设置的策略版本的上下文（右键单击）菜单并选择 **Set as Default**（设置为默认）。

   完成后，您选择的新默认版本旁边会显示一个星号。<a name="policy-delete"></a>

**删除策略**
**注意**  
在删除策略或策略版本之前，请确保满足以下条件：  
您无法删除已附加到证书的策略。
如果策略有任何非默认版本，则无法删除该策略。
只有选择了新的默认版本或删除了整个策略，您才能删除策略的默认版本。
在删除整个策略之前，必须删除该策略的所有非默认版本。

1. 在 AWS 资源管理器中，展开**物联网**服务部分。

1. 展开 **Policies**（策略）子部分并找到要更新的策略。

1. 展开要更新的策略，然后打开要删除的策略版本的上下文（右键单击）菜单并选择 **Delete**（删除）。

1. 删除某个版本后， AWS 资源管理器中将不再显示该版本。

1. 如果策略只剩下默认版本，请打开父策略的上下文（右键单击）菜单，然后选择 **Delete**（删除）。

# 使用 Amazon Elastic Container Service
<a name="ecs"></a>

 AWS Cloud9 IDE 为[亚马逊弹性容器服务 (Amazon ECS)](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/) 提供了一些支持。您可以使用 AWS Cloud9 IDE 来管理 Amazon ECS 资源。例如，您可以创建任务定义。

**Topics**
+ [Amazon ECS Exec AWS 工具包中的适用于 AWS Cloud9](ecs-cloud9-exec.md)

# Amazon ECS Exec AWS 工具包中的适用于 AWS Cloud9
<a name="ecs-cloud9-exec"></a>

您可以使用工具包在亚马逊弹性容器服务 (Amazon ECS) 容器 AWS 中发出单个命令。 AWS Cloud9您可以使用 Amazon ECS Exec 功能完成此操作。

**重要**  
启用和禁用 Amazon ECS Exec 会更改您的 AWS 账户中 ECS 资源的状态。更改包括停止和重新启动服务。此外，在 Amazon ECS Exec 处于启用状态时更改资源状态可能会导致不可预测的结果。有关 Amazon ECS 的更多信息，请参阅《Amazon ECS 开发人员指南》中的[使用 Amazon ECS Exec 进行调试](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-exec.html#ecs-exec-considerations)。

## Amazon ECS Exec 先决条件
<a name="ecs-exec-prereq"></a>

在使用 Amazon ECS Exec 功能之前，您必须满足某些先决条件。

### Amazon ECS 要求
<a name="ecs-requirements"></a>

取决于您的任务是托管在 Amazon EC2 上还是 AWS Fargate，而且 Amazon ECS Exec 有不同的版本要求。
+ 如果您使用 Amazon EC2，必须使用 2021 年 1 月 20 日之后发布的经 Amazon ECS 优化的 AMI，代理版本为 1.50.2 或更高。有关更多信息，请参阅《[亚马逊 ECS 开发人员指南》 AMIs中经过优化的](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-optimized_AMI.html)*亚马逊 ECS*。
+ 如果使用 AWS Fargate，则必须使用平台版本 1.4.0 或更高版本。有关更多信息，请参阅《Amazon ECS 开发人员指南》中的 [AWS Fargate 平台版本](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/Welcome.html)。

### AWS 账户配置和 IAM 权限
<a name="ecs-configuration"></a>

要使用 Amazon ECS Exec 功能，您必须拥有与您的 AWS 账户关联的现有 Amazon ECS 集群。Amazon ECS Exec 使用 Systems Manager 与集群中的容器建立连接。与 SSM 服务通信的 Amazon ECSrequires 特定任务 IAM 角色权限。

有关特定于 Amazon ECS Exec 的 IAM 角色和策略的信息，请参阅《Amazon ECS 开发人员指南》中的 [ECS Exec 所需的 IAM 权限](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-exec.html#ecs-exec-enabling-and-using)。

## 使用 Amazon ECS Exec
<a name="working-with-ecs-exec"></a>

您可以直接从 AWS 工具包中的资源管理器中启用或禁用 Amazon ECS AWS Exec。 AWS Cloud9启用 Amazon ECS Exec 后，从 Amazon ECS 菜单中选择容器，然后对它们运行命令。

### 启用 Amazon ECS Exec
<a name="enabling-exec"></a>

1. 在 AWS 资源管理器中，找到并展开 Amazon ECS 菜单。

1. 展开包含您要修改的服务的集群。

1. 打开服务的上下文菜单（右键单击），然后选择 **Enable Command Execution**（启用命令执行）。

**重要**  
此步骤将启动服务的新部署，可能需要几分钟。有关更多信息，请参阅本部分开头的注释。

### 禁用 Amazon ECS Exec
<a name="disabling-ecs-exec"></a>

1. 在 AWS 资源管理器中，找到并展开 Amazon ECS 菜单。

1. 展开包含所需服务的集群。

1. 打开服务的上下文菜单（右键单击），然后选择 **Disable Command Execution**（禁用命令执行）。

**重要**  
此步骤将启动服务的新部署，可能需要几分钟。有关更多信息，请参阅本部分开头的注释。

### 对容器运行命令
<a name="run-commands-container"></a>

要使用 AWS 资源管理器对容器运行命令，必须启用 Amazon ECS Exec。如果未启用，请参阅本节中的 [启用 Amazon ECS Exec](#enabling-exec) 步骤。

1. 在 AWS 资源管理器中，找到并展开 Amazon ECS 菜单。

1. 扩展具有所需服务的集群。

1. 扩展此服务以列出关联的容器。

1. 打开容器的上下文菜单（右键单击），然后选择 **Run Command in Container**（在容器中运行命令）。

1. 将打开一个**提示符**，其中包含正在运行的任务列表。选择您想要的**任务 ARN**。
**注意**  
如果只有一个任务在运行，则不会打开提示符，而是自动选择该任务。

1. 出现提示时，输入要运行的命令，然后按 **Enter** 以继续。

# 与亚马逊合作 EventBridge
<a name="eventbridge"></a>

的 AWS 工具包为 [Amazon AWS Cloud9](https://aws.amazon.com/eventbridge/) 提供支持 EventBridge。使用 AWS 工具包 AWS Cloud9，您可以处理的某些方面 EventBridge，例如架构。

**Topics**
+ [使用 Amazon EventBridge 架构](eventbridge-schemas.md)

# 使用 Amazon EventBridge 架构
<a name="eventbridge-schemas"></a>

您可以使用该 AWS 工具包对 [Amazon EventBridge 架构](https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-schemas.html)执行各种操作。 AWS Cloud9 

## 先决条件
<a name="eventbridge-schemas-prereq"></a>

您要使用的 EventBridge 架构必须在您的中可用 AWS 账户。如果不可用，请创建或上传架构。有关更多信息，请参阅《[亚马逊[ EventBridge 用户指南》中的 EventBridge Amazon](https://docs.aws.amazon.com/eventbridge/latest/userguide/) 架构](https://docs.aws.amazon.com/eventbridge/latest/userguide/eventbridge-schemas.html)。

## 查看可用架构
<a name="eventbridge-schemas-view"></a>

1. 在 **AWS Explorer** 中，展开**架构**。

1. 展开包含您希望查看的架构的注册表的名称。例如，提供的许多架构都位于 **aws.event** s 注册表中。 AWS 

1. 要在编辑器中查看架构，请打开该架构的上下文（右键单击）菜单，然后选择 **View Schema**（查看架构）。  
![\[查看架 EventBridge 构。\]](http://docs.aws.amazon.com/zh_cn/cloud9/latest/user-guide/images/schema-eventbridge.png)

## 查找可用架构
<a name="eventbridge-schemas-find"></a>

在 **AWS Explorer** 中，执行以下一项或多项操作：
+ 首先输入要查找的架构的标题。**AWS Explorer** 突出显示包含匹配项的架构标题。（必须扩展注册表，您才能看到突出显示的标题。）
+ 打开 **Schemas**（架构）的上下文（右键单击）菜单，然后选择 **Search Schemas**（搜索架构）。或者展开 **Schemas**（架构），打开包含您希望查找的架构的注册表的上下文（右键单击）菜单，然后选择 **Search Schemas in Registry**（在注册表中搜索架构）。在 “**EventBridge架构搜索**” 对话框中，开始输入要查找的架构的标题。对话框中将显示包含匹配项的架构标题。

  要在对话框中显示架构，请选择架构标题。

## 为可用架构生成代码
<a name="eventbridge-schemas-generate-code"></a>

1. 在 **AWS Explorer** 中，展开**架构**。

1. 展开包含您希望生成代码的架构的注册表的名称。

1. 在架构标题上打开上下文（右键单击）菜单，然后选择 **Download code bindings**（下载代码绑定）。

1. 在显示的向导页面中，选择以下内容：
   + 架构的**版本**
   + 代码绑定语言
   + 本地开发计算机上要将生成的代码存储到的工作区文件夹