

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

# 与 AWS 服务配合使用
<a name="working-with-services"></a>

以下主题介绍如何开始从 AWS Toolkit for Visual Studio with Amazon Q 使用 AWS 服务。

**Topics**
+ [Amazon CodeCatalyst](codecatalyst.md)
+ [CloudWatch Logs 集成](cloudwatch-log.md)
+ [管理 Amazon EC2 实例](tkv-ec2-ami.md)
+ [管理 Amazon ECS 实例](tkv-ecs.md)
+ [从 AWS 各区服务浏览器管理安全组](tkv-sg-create.md)
+ [从 Amazon EC2 实例创建 AMI](tkv-create-ami-from-instance.md)
+ [在 Amazon 系统映像上设置启动许可](tkv-set-ami-launch-perms.md)
+ [Amazon Virtual Private Cloud (VPC)](vpc-tkv.md)
+ [使用适用于 Visual Studio 的 CloudFormation 模板编辑器](tkv-cfn-editor.md)
+ [使用 Exp AWS lorer 中的 Amazon S3](tkv-s3.md)
+ [从 AWS 各区服务浏览器使用 DynamoDB](dynamodb-tkv.md)
+ [将 AWS CodeCommit 与 Visual Studio Team Explorer 配合使用](using-aws-codecommit-with-team-explorer.md)
+ [在 Visual Studio 中使用 CodeArtifact](using-aws-codeartifact.md)
+ [从 AWS 各区服务浏览器使用 Amazon RDS](rds-tkv.md)
+ [从 AWS 各区服务浏览器使用 Amazon SimpleDB](tkv-simpleDB.md)
+ [从 AWS 各区服务浏览器使用 Amazon SQS](tkv-sqs.md)
+ [身份和访问管理](tkv-iam.md)
+ [AWS Lambda](lambda-index.md)

# 亚马逊 CodeCatalyst 为带亚马逊 Q 的 Visual Studio 的 Visual Studio AWS Toolkit
<a name="codecatalyst"></a>

## 什么是亚马逊 CodeCatalyst？
<a name="codecatalyst-intro"></a>

Amazon CodeCatalyst 是一个面向软件开发团队的基于云的协作空间。使用带有 Amazon Q 的 Visual Studio AWS 工具包，您可以直接从 Visual Studio 的 Toolkit for Amazon Q 中查看和管理 CodeCatalyst 资源。有关更多信息 CodeCatalyst，请参阅[亚马逊 CodeCatalyst](https://docs.aws.amazon.com/codecatalyst/latest/userguide/welcome.html)用户指南。 AWS 

以下主题介绍如何将 Visual Studio AWS 工具包与 Amazon Q 连接起来， CodeCatalyst 以及如何 CodeCatalyst 通过 Visual Studio AWS 工具包与 Amazon Q 配合使用。

**Topics**
+ [什么是亚马逊 CodeCatalyst？](#codecatalyst-intro)
+ [入门 CodeCatalyst](codecatalyst-setup.md)
+ [与 CodeCatalyst](codecatalyst-overview.md)
+ [问题排查](codecatalyst-troubleshoot.md)

# 亚马逊入门 CodeCatalyst 和 Visual Studio 的 AWS Toolkit for Amazon Q
<a name="codecatalyst-setup"></a>

要开始使用带有 Amazon CodeCatalyst Q 的 Visual Studio AWS 工具包与亚马逊合作，请完成以下操作。

**Topics**
+ [使用 Amazon Q 安装适用于 Visual Studio 的 AWS Toolkit](#codecatalyst-setup-jbgateway)
+ [创建 CodeCatalyst 账号和 AWS 建筑商 ID](#codecatalyst-setup-id)
+ [将 Visual Studio 的 AWS Toolkit 与 Amazon Q 连接起来 CodeCatalyst](#codecatalyst-setup-connect)

## 使用 Amazon Q 安装适用于 Visual Studio 的 AWS Toolkit
<a name="codecatalyst-setup-jbgateway"></a>

在将 Visual Studio AWS 工具包与 Amazon Q 集成到您的 CodeCatalyst账户之前，请确保使用的是最新版本的 Visual Studio AWS 工具包和 Amazon Q。有关如何使用亚马逊 Q 安装和设置最新版本的 Visual Studio AWS 工具包的详细信息，请参阅本用户指南的 “使用 Ama [zon Q 为 Visual Studio 设置 AWS 工具包](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/getting-set-up.html)” 部分。

## 创建 CodeCatalyst 账号和 AWS 建筑商 ID
<a name="codecatalyst-setup-id"></a>

除了使用 Amazon Q 安装最新版本的 Visual Studio Visual Studio AWS 工具包外，您还必须拥有有效的 AWS 生成器 ID 和 CodeCatalyst 账户才能通过 Amazon Q 与 Visual Studio 的 AWS Toolkit for Visual Studio 连接。如果您没有有效的 AWS 生成器 ID 或 CodeCatalyst 账户，请参阅*CodeCatalyst*用户指南中的[设置](https://docs.aws.amazon.com/codecatalyst/latest/userguide/setting-up-topnode.html)方式 CodeCatalyst部分。

**注意**  
 AWS 生成器 ID 与您的 AWS 凭证不同。有关如何使用 AWS 生成器 ID 注册和进行身份验证的说明，请参阅本用户指南中的[身份验证和访问权限： AWS 生成器 ID](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/builder-id.html) 主题。  
有关 AWS Builder 的详细信息 IDs，请参阅《*AWS 通用参考*用户指南》中的 “[AWS 生成器 ID](https://docs.aws.amazon.com/general/latest/gr/aws_builder_id.html)” 主题。

## 将 Visual Studio 的 AWS Toolkit 与 Amazon Q 连接起来 CodeCatalyst
<a name="codecatalyst-setup-connect"></a>

要将 Visual Studio 的 AWS Toolkit for Visual Studio 与 Amazon Q 关联到您的 CodeCatalyst 账户，请完成以下步骤。

1. 在 Visual Studio 的 **Git** 菜单项中，选择**克隆存储库...**。

1. 从 “**浏览存储库**” 部分，选择 **Amazon CodeCatalyst** 作为提供商。

1. 在 “**连接**” 部分中，选择 **Connect w AWS ith Builder ID**，在首选的 Web 浏览器中打开 CodeCatalyst 控制台。

1. 在浏览器中，在提供的字段中输入您的 AWS 生成器 ID，然后按照说明继续操作。

1. 出现提示时，选择 “**允许**” 以确认 Visual Studio 的 AWS Toolkit for Visual Studio 和 Amazon Q 与您的 CodeCatalyst 账户之间的连接。连接过程完成后， CodeCatalyst 会显示一条确认消息，表明可以安全地关闭浏览器。

# 在 Amazon Q 上使用 Visual Studio AWS 工具包中的亚马逊 CodeCatalyst 资源
<a name="codecatalyst-overview"></a>

以下各节概述了带有 Amazon Q 的 Visual Studio 的 AWS Toolkit for Visual Studio 的可用亚马逊 CodeCatalyst 资源管理功能。

**Topics**
+ [克隆存储库](#codecatalyst-overview-clone)

## 克隆存储库
<a name="codecatalyst-overview-clone"></a>

CodeCatalyst 是一项基于云的服务，需要您连接到云端才能处理 CodeCatalyst 项目。要在本地处理项目，您可以将 CodeCatalyst 存储库克隆到本地计算机，并在下次连接到云端时与您的 CodeCatalyst 项目同步。

要将存储库克隆到本地计算机，请完成以下步骤。

1. 在 Visual Studio 的 **Git** 菜单项中，选择**克隆存储库...**。

1. 从 “**浏览存储库**” 部分，选择 **Amazon CodeCatalyst** 作为提供商。
**注意**  
如果 “**连接**” 部分显示一条`Not Connected`消息，请先完成本用户指南的 “[身份验证和访问权限： AWS 生成器 ID](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/builder-id.html)” 部分中的步骤，然后再继续。

1. 选择要从中克隆存储库的**空间**和**项目**。

1. 在**存储库**部分，选择要克隆的存储库。

1. 在**路径**部分，选择要将存储库克隆到的文件夹。
**注意**  
此文件夹最初必须为空才能成功克隆。

1. 选择**克隆**，以开始克隆存储库。

1. 克隆存储库后，Visual Studio 将加载您克隆的解决方案
**注意**  
如果 Visual Studio 未在克隆的存储库中打开解决方案，则可以从**源控制**菜单的 **Git 全局设置**中，通过**打开 Git 存储库时自动加载解决方案**设置调整 Visual Studio 选项。

# 问题排查
<a name="codecatalyst-troubleshoot"></a>

以下是使用亚马逊 Q 的 Visual Studio For Visual Studio AWS 工具包解决与亚马逊 CodeCatalyst 合作时已知问题的疑难解答主题。

**Topics**
+ [凭据](#codecatalyst-troubleshoot-credentials)

## 凭据
<a name="codecatalyst-troubleshoot-credentials"></a>

如果您在尝试从中克隆基于 git 的存储库时遇到要求提供凭据的对话框 CodeCatalyst，则您的**AWS CodeCommit 凭据助手**可能会被全局配置，从而造成干扰。 CodeCatalyst有关 AWS CodeCommit 凭证助手的更多信息，请参阅《*AWS CodeCommit*用户指南》的 “使用 [AWS CLI 凭据帮助器在 Windows 上设置与 Windows AWS CodeCommit 存储库的 HTTPS 连接的步骤](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-https-windows.html)” 部分。

要将**AWS CodeCommit 凭据助手**限制为只能处理 CodeCommit URLs，请完成以下步骤。

1. 打开以下位置的全局 Git 配置文件：`%userprofile%\.gitconfig`

1. 在文件中找到以下部分：

   ```
                           [credential]
                               helper = !aws codecommit credential-helper $@
                               UseHttpPath = true
   ```

1. 将该部分更改为以下内容：

   ```
                           [credential "https://git-codecommit.*.amazonaws.com"]
                               helper = !aws codecommit credential-helper $@
                               UseHttpPath = true
   ```

1. 保存更改，然后完成克隆存储库的步骤。

# Visual Studio 的 Amazon CloudWatch Logs 集成
<a name="cloudwatch-log"></a>

通过 AWS Toolkit for Visual Studio with Amazon Q 中的 Amazon CloudWatch Logs 集成，您无需离开 IDE 即可监控、存储和访问 CloudWatch Logs 资源。要了解有关设置 CloudWatch 服务以及如何使用 CloudWatch Logs 功能的更多信息，请从以下主题中进行选择。

**Topics**
+ [设置 CloudWatch Logs](cloudwatch-log-setup.md)
+ [使用 CloudWatch 日志](cloudwatch-log-overview.md)

# 为 Visual Studio 设置 CloudWatch Logs 集成
<a name="cloudwatch-log-setup"></a>

在使用 Amazon CloudWatch Logs 与 AWS Toolkit with Amazon Q 集成之前，您需要一个 AWS 账户。您可以从 [AWS 登录](https://console.aws.amazon.com/console/home)站点创建一个新 AWS 账户。可以使用有效 AWS 凭证访问 AWS Toolkit with Amazon Q 中提供的大多数 CloudWatch Logs 功能。如果某项功能需要额外配置，则这些要求包含在[使用 CloudWatch Logs](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/cloudwatch-log-overview.html) 指南的相关部分中。

有关设置 CloudWatch Logs 的更多信息和选项，请参阅 Amazon CloudWatch Logs 指南的[开始设置](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/GettingSetup_cwl.html)部分。

# 使用 Visual Studio 中的 CloudWatch 日志
<a name="cloudwatch-log-overview"></a>

Amazon CloudWatch Logs 集成允许您使用 Amazon Q 监控、存储和访问 CloudWatch 来自 Visual Studio 的 AWS Toolkit for Visual Studio 中的 CloudWatch 日志。无需离开 IDE 即可访问日志功能，从而简化 CloudWatch 日志开发过程并减少对工作流程的干扰，从而提高效率。以下主题介绍如何使用 Lo CloudWatch gs 集成的基本特性和功能。

**Topics**
+ [CloudWatch 日志组](#cloudwatch-log-overview-groups)
+ [CloudWatch 日志流](#cloudwatch-log-overview-logstream)
+ [CloudWatch 记录事件](#cloudwatch-log-overview-logevents)
+ [对 CloudWatch 日志的额外访问权限](#cloudwatch-log-overview-additional)

## CloudWatch 日志组
<a name="cloudwatch-log-overview-groups"></a>

`log group` 是一组具有相同保留期、监控和访问控制设置的 `log streams`。对可属于一个日志组的日志流数没有限制。

### 查看日志组
<a name="cloudwatch-log-overview-groups-view"></a>

该`View Log Groups`功能在日志组资源管理器中显示 CloudWatch日志组列表。

要访问查看日志组功能并打开 CloudWatch 日志组资源管理器，请完成以下步骤。

1. 在 AWS 资源管理器中，展开 **Amazon CloudWatch**。

1. 双击 “**日志组**” 或打开快捷菜单（右键单击），然后选择 “**查看**”，打开 “**CloudWatch 日志组浏览器**”。
**注意**  
 CloudWatch 日志组资源管理器将在与解决方案资源管理器相同的窗口位置打开。

### 筛选日志组
<a name="cloudwatch-log-overview-groups-filter"></a>

您的个人账户可以包含成千上万个不同的日志组。要简化对特定组的搜索，请使用下述 `filtering` 功能。

1. 在**CloudWatch 日志组资源管理器**中，将光标置于窗口顶部的搜索栏中。

1. 开始键入与要查找的日志组相关的前缀。

1. **CloudWatch 日志组资源管理器**会自动更新，以显示与您在上一步中指定的搜索词匹配的结果。

### 删除日志组
<a name="cloudwatch-log-overview-groups-delete"></a>

要删除特定日志组，请参阅以下步骤。

1. 在**CloudWatch 日志组资源管理器**中，右键单击要删除的日志组。

1. 在提示时，确认您希望删除当前选中的日志组。

1. 选择 “**是**” 按钮会删除选定的日志组，然后刷新 “**CloudWatch 日志组浏览器”**。

### 刷新日志组
<a name="cloudwatch-log-overview-groups-refresh"></a>

要刷新 “日志组**资源管理器” 中显示的当前CloudWatch 日志组**列表，请选择**工具栏**上的 “**刷新” 图标**按钮。

### 复制日志组 ARN
<a name="cloudwatch-log-overview-groups-copyarn"></a>

要复制特定日志组的 ARN，请完成以下步骤。

1. 在**CloudWatch 日志组资源管理器**中，右键单击要从中复制 ARN 的日志组。

1. 从菜单中选择**复制 ARN** 选项。

1. 现在，ARN 已复制到本地剪贴板并可以粘贴了。

## CloudWatch 日志流
<a name="cloudwatch-log-overview-logstream"></a>

日志流是共享同一来源的一系列日志事件。

**注意**  
查看日志流时，请注意以下属性：  
默认情况下，日志流按事件时间戳由近及远排序。
通过切换列标题中的**尖角**符号，可以按升序或降序对与日志流关联的列进行排序。
经过筛选的条目只能按**日志流名称**排序。

### 查看日志流
<a name="cloudwatch-log-overview-logstream-view"></a>

1. 在**CloudWatch 日志组资源管理器**中，双击日志组，或者右键单击日志组，然后从快捷菜单中选择**查看日志流**。

1. 将在**文档**窗口中打开一个新选项卡，其中包含与日志组关联的日志流列表。

### 筛选日志流
<a name="cloudwatch-log-overview-logstream-filter"></a>

1. 在**文档**窗口的**日志流**选项卡中，将光标置于搜索栏中。

1. 开始键入与要查找的日志流相关的前缀。

1. 随着您键入，当前显示会自动更新，以根据您的输入筛选日志流。

### 刷新日志流
<a name="cloudwatch-log-overview-logstream-refresh"></a>

要刷新**文档**窗口中显示的当前日志流列表，请选择**工具栏**中**搜索栏**旁的**刷新图标**按钮。

### 复制日志流 ARN
<a name="cloudwatch-log-overview-logstream-copyarn"></a>

要复制特定日志流的 ARN，请完成以下步骤。

1. 在**文档**窗口的**日志流**选项卡中，右键单击要从中复制 ARN 的日志流。

1. 从菜单中选择**复制 ARN** 选项。

1. 现在，ARN 已复制到本地剪贴板并可以粘贴了。

### 下载日志流
<a name="cloudwatch-log-overview-logstream-delete"></a>

**导出日志流**功能可将选定的日志流下载并存储在本地，以供自定义工具和软件访问并进行其他处理。

1. 在**文档**窗口的**日志流**选项卡中，右键单击要下载的日志流。

1. 选择**导出日志流**，以打开**导出到文本文件**对话框。

1. 选择用于存储文件的本地位置，并在提供的文本字段中指定名称。

1. 选择**确定**以确认下载。下载状态显示在 **Visual Studio 任务状态中心**中

## CloudWatch 记录事件
<a name="cloudwatch-log-overview-logevents"></a>

日志事件是所监视的应用程序或资源所记录的活动记录 CloudWatch。

### 日志事件操作
<a name="cloudwatch-log-overview-logevents-actions"></a>

日志事件以表格形式显示。默认情况下，事件按从旧到新的顺序排序。

以下操作与 Visual Studio 中的日志事件相关联：
+ 自动换行模式：您可以通过单击事件来切换自动换行。
+ 文本换行按钮：此按钮位于 `document window toolbar` 中，可为所有条目开启和关闭文本换行。
+ 将消息复制到剪贴板：选择要复制的消息，然后右键单击所选内容并选择**复制**（键盘快捷键 `Ctrl + C`）。

### 查看日志事件
<a name="cloudwatch-log-overview-logevents-view"></a>

1. 在**文档**窗口中，选择包含日志流列表的选项卡。

1. 双击日志流，或右键单击日志流并从菜单中选择**查看日志流**。

1. 将在**文档**窗口中打开一个新的**日志事件**选项卡，其中包含与所选日志流关联的日志事件表。

### 筛选日志事件
<a name="cloudwatch-log-overview-logevents-filter"></a>

您可以通过三种方式筛选日志事件：按内容、按时间范围或同时按两者。要同时按内容和时间范围筛选日志事件，请先按内容或时间范围筛选消息，然后使用另一种方法对结果进行筛选。

要按内容筛选日志事件，请执行以下操作：

1. 在**文档**窗口的**日志事件**选项卡中，将光标置于窗口顶部的搜索栏中。

1. 开始键入与要搜索的日志事件相关的字词或短语。

1. 随着您键入，当前显示会自动开始筛选日志事件。
**注意**  
筛选条件模式区分大小写。将确切的字词和短语以及非字母数字字符用双引号括起来（\$1""\$1），可以改善搜索结果。有关筛选模式的更多详细信息，请参阅 Amazon CloudWatch 指南中的[筛选条件和模式语法](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html)主题。

要查看在特定时间范围内生成的日志事件，请执行以下操作：

1. 在**文档**窗口的**日志事件**选项卡中，选择**工具栏**上的**日历图标**按钮。

1. 使用提供的字段，指定要搜索的时间范围。

1. 随着您指定日期和时间限制，筛选结果会自动更新。
**注意**  
“**清除筛选器**” 选项可清除您当前选择的所有 date-and-time筛选条件。

### 刷新日志事件
<a name="cloudwatch-log-overview-logevents-refresh"></a>

要刷新**日志事件**选项卡中显示的当前日志事件列表，请选择**工具栏**上的**刷新图标**按钮。

## 对 CloudWatch 日志的额外访问权限
<a name="cloudwatch-log-overview-additional"></a>

您可以直接从 Visual Studio 中的 AWS 工具包访问与其他 AWS 服务和资源关联的 CloudWatch 日志。

### Lambda
<a name="cloudwatch-log-overview-additional-lambda"></a>

要查看与 Lambda 函数关联的日志流，请执行以下操作：

**注意**  
您的 Lambda 执行角色必须具有相应的权限才能将日志发送到日志。 CloudWatch有关 CloudWatch 日志所需的 Lambda 权限的更多信息，请参阅 [https://docs.aws.amazon.com/lambda/latest/dg/monitoring-cloudwatchlogs.html#monitoring-cloudwatchlogs-prereqs](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-cloudwatchlogs.html#monitoring-cloudwatchlogs-prereqs)

1. 在 AWS 工具包资源管理器中，展开 **Lambda**。

1. 右键单击要查看的函数，然后选择**查看日志**，以在**文档**窗口中打开关联的日志流。

要使用 Lambda 集成 `function view` 查看日志流，请执行以下操作：

1. 在 AWS 工具包资源管理器中，展开 **Lambda**。

1. 右键单击要查看的函数，然后选择**查看函数**，以在**文档**窗口中打开函数视图。

1. 在 `function view` 中，切换到**日志**选项卡，将显示与所选 Lambda 函数关联的日志流。

### ECS
<a name="cloudwatch-log-overview-additional-ecs"></a>

要查看与 ECS 任务容器关联的日志资源，请完成以下步骤。

**注意**  
为了让 Amazon ECS 服务向其发送日志 CloudWatch，给定 Amazon ECS 任务的每个容器都必须满足所需的配置。有关所需设置和配置的更多信息，请参阅[使用 AWS 日志日志驱动程序](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/using_awslogs.html)指南。

1. 在 AWS 工具包资源管理器中，展开 **Amazon ECS**。

1. 选择要查看的 Amazon ECS 集群，以在**文档**窗口中打开新的 **ECS 集群**选项卡。

1. 在 **ECS 集群**选项卡左侧的导航菜单中，选择**任务**以列出与该集群关联的所有任务。

1. 在**任务**显示屏中，选择任务并选择位于左下角的**查看日志**链接。
**注意**  
此显示列出了集群中包含的所有任务，但只有符合所需日志配置的任务显示 `View Logs` 链接。  
如果任务仅与单个容器关联，则**查看日志**链接会打开该容器的日志流。
如果一个任务与多个容器关联，则**查看日志**链接会打开**查看 ECS 任务的 CloudWatch 日志**对话框，使用**容器:**下拉菜单选择要查看其日志的容器，然后选择**确定**。

1. 将在**文档**窗口中打开一个新选项卡，显示与您的容器选择相关的日志流。

# 管理 Amazon EC2 实例
<a name="tkv-ec2-ami"></a>

AWS 各区服务浏览器提供亚马逊机器映像（AMI）以及 Amazon Elastic Compute Cloud（Amazon EC2）实例的详细视图。从这些视图中，您可从 AMI 启动 Amazon EC2 实例，连接到此实例，停止或终止此实例，所有这些操作都是在 Visual Studio 开发环境中执行的。您可使用实例视图从您的实例创建 AMI。有关更多信息，请参阅[从 Amazon EC2 实例创建 AMI](tkv-create-ami-from-instance.md)。

## Amazon 系统映像和 Amazon EC2 实例视图
<a name="tkv-ami-and-instance-views"></a>

从 AWS 各区服务浏览器中，可显示亚马逊机器映像（AMI）和 Amazon EC2 实例的视图。在 AWS 各区服务浏览器中，展开 **Amazon EC2** 节点。

要显示 AMI 视图，请在第一个子节点 **AMI** 上，打开上下文（右键单击）菜单，然后选择 **View (查看)**。

要显示 Amazon EC2 实例视图，请在 **Instances (实例)** 节点上，打开上下文（右键单击）菜单，然后选择 **View (查看)**。

您也可通过双击相应的节点来显示任一视图。
+ 视图的范围限定于 AWS 各区服务浏览器中指定的区域（例如，美国西部（北加利福尼亚）区域）。
+ 您可通过单击并拖动来重新整理列。要对列中的值进行排序，请单击列标题。
+ 可使用 **Viewing (查看)** 中的下拉列表和筛选器框来配置视图。初始视图显示 AWS 各区服务浏览器中指定的账户所拥有的任何平台类型（Windows 或 Linux）的 AMI。

 *显示/隐藏列* 

您还可选择位于视图顶部的 **Show/Hide (显示/隐藏)** 下拉列表来配置显示的列。如果您关闭并重新打开视图，您选择的列将保留。

![\[Interface showing Amazon Images list with AMI details and column configuration options.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/tkv-ami-instance-show-hide-columns.png)


 AMI 和实例视图的 **Show/Hide Columns (显示/隐藏列)** UI

 *为 AMI、实例和卷添加标签* 

您还可使用**显示/隐藏**下拉列表为您拥有的 AMI、Amazon EC2 实例或卷添加标签。标签是可让您将元数据附加到 AMI、实例和卷的名称-值对。标签名称的范围限定于您的账户，也可独立于您的 AMI 和实例。例如，如果您对 AMI 和实例使用相同的标签名称，则不会发生冲突。标签名称不区分大小写。

有关标签的更多信息，请参阅《Amazon EC2 用户指南（适用于 Linux 实例）》**中的[使用标签](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html)。

 *要添加标签，请执行以下操作*：

1. 在 **Add (添加)** 框中，键入标签的名称。选择带加号 (\$1) 的绿色按钮，然后选择 **Apply (应用)**。  
![\[Dialog box for customizing column display with tag keys and image attributes options.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/tkv-ec2-add-tag.png)

   向 AMI 或 Amazon EC2 实例添加标签

   新标签以斜体形式显示，这表示此标签未与任何值关联。

   在列表视图中，标签名称显示为新列。如果标签已与至少一个值关联，则标签将在 [AWS 管理控制台](https://console.aws.amazon.com/ec2/home)中可见。

1. 要为标签添加值，请双击标签对应的列中的单元格，然后键入值。要删除标签值，请双击单元格并删除文本。

   如果在 **Show/Hide (显示/隐藏)** 下拉列表中清除标签，则对应的列将从视图中消失。标签将与 AMI、实例或卷所关联的任何标签值一起保留。
**注意**  
如果在**显示/隐藏**下拉列表中清除没有关联值的标签，则 AWS Toolkit 将彻底删除该标签。它将不再显示在列表视图或 **Show/Hide (显示/隐藏)** 下拉列表中。要再次使用标签，请使用 **Show/Hide (显示/隐藏)** 对话框重新创建它。

## 启动 Amazon EC2 实例
<a name="create-ec2"></a>

AWS 各区服务浏览器提供了启动 Amazon EC2 实例所需的全部功能。在本节中，我们将选择并配置 Amazon 系统映像 (AMI)，然后将它作为 Amazon EC2 实例启动。

 *启动 Windows Server Amazon EC2 实例* 

1. 在 AMI 视图顶部左侧的下拉列表中，选择 **Amazon Images (Amazon 映像)**。在右侧的下拉列表中，选择 **Windows**。在筛选器框中，为 Elastic Block 存储键入 `ebs`。刷新视图可能需要一点时间。

1. 选择列表中的 AMI，打开上下文（右键单击）菜单，然后选择 **Launch Instance (启动实例)**。  
![\[Context menu for an AMI showing options including Launch Instance and Edit Permission.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/ami-launch-list.png)

   AMI 列表

1. 在 **Launch New Amazon EC2 Instance (启动新 Amazon EC2 实例)** 对话框中，为您的应用程序配置 AMI。  
** *实例类型* **  
选择要启动的 EC2 实例的类型。您可以在 [EC2 Pricing (EC2 定价)](https://aws.amazon.com/ec2/pricing/) 页面上找到实例类型和定价信息的列表。  
** *名称* **  
为您的实例键入名称。此名称不能超过 256 个字符。  
** *密钥对* **  
密钥对用于获取您用于通过远程桌面协议 (RDP) 登录到 EC2 实例的 Windows 密码。选择您有权访问私有密钥的密钥对，或选择用于创建密钥对的选项。如果您在 Toolkit 中创建密钥对，则 Toolkit 可为您存储私有密钥。  
存储在工具包中的密钥对将被加密。您可以在 `%LOCALAPPDATA%\AWSToolkit\keypairs`（通常为 `C:\Users\<user>\AppData\Local\AWSToolkit\keypairs`）位置找到它们。您可以将加密密钥对导出到 `.pem` 文件。  

   1. 在 Visual Studio 中，选择**视图**，然后单击 **AWS 各区服务浏览器**。

   1. 单击 **Amazon EC2**，选择 **Key Pairs (密钥对)**。

   1. 此时将列出密钥对，并且由 Toolkit 创建/管理的密钥对将标记为 **Stored in AWSToolkit (存储在 AWSToolkit 中)**。

   1. 右键单击您创建的密钥对，然后选择 **Export Private Key (导出私有密钥)**。私有密钥将取消加密并保存在您指定的位置。  
** *安全组* **  
安全组控制 EC2 实例将接受的网络流量的类型。选择将允许端口 3389（RDP 使用的端口）上的传入流量的安全组，以便能连接到 EC2 实例。有关如何使用 Toolkit 创建安全组的信息，请参阅[从 AWS 各区服务浏览器管理安全组](tkv-sg-create.md)。  
** *实例配置文件* **  
实例配置文件是 IAM 角色的逻辑容器。当您选择实例配置文件时，会将对应的 IAM 角色与 EC2 实例关联。IAM 角色是使用指定对 Amazon Web Services 和账户资源的访问权限的策略配置的。当 EC2 实例与 IAM 角色关联时，在实例上运行的应用程序软件将使用 IAM 角色指定的权限运行。这使得应用程序软件无需指定其自己的任何 AWS 凭证即可运行，从而使软件更安全。有关 IAM 角色的更多信息，请转到 [IAM 用户指南](https://docs.aws.amazon.com/IAM/latest/UserGuide/WorkingWithRoles.html)。  
![\[Launch AMI window for Amazon EC2 instance with Windows Server 2016 and configuration options.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/ami-launch-ui-new.png)

   EC2 **Launch AMI (启动 AMI)** 对话框

1. 选择**启动**。

   在 AWS 各区服务浏览器中 **Amazon EC2** 的 **实例**子节点上，打开上下文（右键单击）菜单，然后选择**查看**。AWS Toolkit 将显示与活动账户关联的 Amazon EC2 实例的列表。您可能需要选择 **Refresh (刷新)** 才能查看您的新实例。当实例第一次显示时，它可能处于挂起状态，但在几分钟后，它将过渡到运行状态。  
![\[AWS Explorer showing running EC2 instances with context menu options for management.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/ami-running-ec2-instancs.png)

## 连接到 Amazon EC2 实例
<a name="connect-ec2"></a>

您可使用 Windows 远程桌面连接到 Windows Server 实例。对于身份验证，AWS Toolkit 可让您检索实例的管理员密码，也可使用与实例关联的已存储密钥对。在以下过程中，我们将使用存储的密钥对。

 *使用 Windows 远程桌面连接到 Windows Server 实例* 

1. 在 EC2 实例列表中，右键单击要连接到的 Windows Server 实例。从上下文菜单中，选择 **Open Remote Desktop (打开远程桌面)**。

   如果您要使用管理员密码进行身份验证，请选择 **Get Windows Passwords (获取 Windows 密码)**。  
![\[Context menu for EC2 instance with options like Open Remote Desktop and Get System Log.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/tkv-ec2-rdp-menu.png)

   EC2 实例上下文菜单

1. 在 **Open Remote Desktop (打开远程桌面)** 对话框中，选择 **Use EC2 keypair to log on (使用 EC2 密钥对进行登录)**，然后选择 **OK (确定)**。

   如果您未使用 AWS Toolkit 存储密钥对，请指定包含私有密钥的 PEM 文件。  
![\[Remote Desktop connection dialog with EC2 keypair login option selected and highlighted.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/tkv-ec2-rdp-open.png)

    **Open Remote Desktop (打开远程桌面)** 对话框

1. **Remote Desktop (远程桌面)** 窗口将打开。由于已使用密钥对进行身份验证，因此您无需登录。您将以管理员身份在 Amazon EC2 实例上运行。

   如果 EC2 实例仅最近启动，您可能因以下两个原因无法连接：
   + 远程桌面服务可能尚未启动并运行。请等待几分钟，然后重试。
   + 密码信息可能尚未传输到实例。在此情况下，您将看到与下面类似的消息框。  
![\[Error dialog indicating password generation and encryption may take over 30 minutes.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/tkv-ec2-rdp-no-joy.png)

   密码尚不可用

   以下屏幕截图显示以管理员身份通过远程桌面连接的用户。  
![\[Remote Desktop session showing Windows interface with Command Prompt and Start menu open.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/tkv-ec2-rdt-desktop.png)

   远程桌面

## 结束 Amazon EC2 实例
<a name="ec2-end"></a>

通过使用 AWS Toolkit，您可通过 Visual Studio 停止或终止正在运行的 Amazon EC2 实例。要停止实例，EC2 实例必须使用 Amazon EBS 卷。如果 EC2 实例未使用 Amazon EBS 卷，您的唯一选择是终止实例。

如果您停止实例，EBS 卷上存储的数据将保留。如果您终止实例，实例的本地存储设备上存储的所有数据将丢失。在停止或终止的情况下，将停止向您收取 EC2 实例的费用。但是，如果您停止实例，将继续向您收取实例停止后保留 EBS 存储的费用。

另一种结束实例的可能方式是，使用远程桌面连接到实例，然后从 Windows **开始**菜单中，使用**关机**。您可将实例配置为在此方案中停止或终止。

 *停止 Amazon EC2 实例* 

1. 在 AWS 各区服务浏览器中，展开 **Amazon EC2** 节点，打开**实例**的上下文（右键单击）菜单，然后选择**查看**。在 **Instances (实例)** 列表中，右键单击要停止的实例，然后从上下文菜单中选择 **Stop (停止)**。选择 **Yes (是)** 确认您要停止实例。  
![\[AWS Explorer interface showing context menu options for an EC2 instance, including Stop and Reboot.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/tkv-ec2-stop-menu.png)

1. 在 **Instances (实例)** 列表的顶部，选择 **Refresh (刷新)** 以查看 Amazon EC2 实例状态的更改。由于我们已停止而不是终止实例，因此与实例关联的 EBS 卷仍处于活动状态。  
![\[EC2 Instances list showing a stopped instance and an attached EBS volume with details.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/tkv-ec2-stopped.png)

 *终止的实例仍可见* 

如果您终止一个实例，此实例将与正在运行的或已停止的实例一起继续显示在 **Instance (实例)** 列表中。最后，AWS 将回收这些实例，而这些实例将从列表中消失。不会向您收取处于已终止状态的实例的费用。

![\[EC2 instance list showing two instances, one running and one terminated, with volume details.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/tkv-ec2-instance-terminated-linger.png)


 *指定 EC2 实例在关闭时的行为* 

利用 AWS Toolkit，您可指定在选择**开始**菜单中的**关闭**时，Amazon EC2 实例是停止还是终止。

1. 在 **Instances (实例)** 列表中，右键单击 Amazon EC2 实例，然后选择 **Change shutdown behavior (更改关机行为)**。  
![\[Context menu showing "变更 Shutdown Behavior" option highlighted among other instance actions.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/tkv-ec2-change-shutdown.png)

    **Change Shutdown Behavior (更改关机行为)** 菜单项

1. 在 **Change Shutdown Behavior (更改关机行为)** 对话框中，从 **Shutdown Behavior (关机行为)** 下拉列表中，选择 **Stop (停止)** 或 **Terminate (终止)**。  
![\[Dialog box for changing instance shutdown behavior with options to stop or terminate.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/tkv-ec2-change-shutdown-dlg.png)

# 管理 Amazon ECS 实例
<a name="tkv-ecs"></a>

AWS Explorer 提供了亚马逊弹性容器服务 (Amazon ECS) 集群和容器存储库的详细视图。您可以在 Visual Studio 开发环境中创建、删除和管理集群和容器详细信息。

## 修改服务属性
<a name="tkv-ecs-clusters-service-props"></a>

您可以在集群视图中查看服务详细信息、服务事件和服务属性。

1. 在 AWS 资源管理器中，打开要管理的群集的上下文（右键单击）菜单，然后选择**查看**。

1. 在 ECS集群视图中，单击左侧的 **Services (服务)**，然后单击详细信息视图中的 **Details (详细信息)** 选项卡。您可以单击 **Events (事件)** 以查看事件消息，也可以单击 **Deployments (部署)** 以查看部署状态。

1. 单击**编辑**。您可以更改所需任务计数以及最小和最大的正常运行状态百分比。

1. 单击 **Save (保存)** 以接受更改，或单击 **Cancel(取消)** 以恢复为现有值。

## 停止任务
<a name="tkv-ecs-clusters-tasks-stop"></a>

您可以查看任务的当前状态并停止集群视图中的一个或多个任务。

 *停止任务* 

1. 在 AWS Explorer 中，打开包含要停止的任务的群集的上下文（右键单击）菜单，然后选择 “**查看**”。

1. 在 ECS 集群视图中，单击左侧的 **Tasks (任务)**。

1. 确保将 **Desired Task Status (所需任务状态)** 设置为 `Running`。选择要停止的各个任务，然后单击 **Stop (停止)** 或单击 **Stop All (全部停止)** 以选择和停止所有正在运行的任务。

1. 在 **Stop Tasks (停止任务)** 对话框中选择**Yes (是)**。

## 删除服务
<a name="tkv-ecs-clusters-service-delete"></a>

您可以从群集视图中删除集群中的服务。

 *删除集群服务* 

1. 在 AWS Explorer 中，打开包含要删除服务的集群的上下文（右键单击）菜单，然后选择 “**查看**”。

1. 在 ECS 集群视图中，单击左侧的 **Services (服务)**，然后单击 **Delete (删除)**。

1. 在 **Delete Cluster (删除集群)** 对话框中，如果您的集群中有负载均衡器和目标组，您可以选择将它们与集群一同删除。删除该服务后，将不会再使用它们。

1. 在 **Delete Cluster (删除集群)** 对话框中，选择 **OK (确定)**。集群被删除后，也将从 AWS 各区服务浏览器中移除。

## 删除集群
<a name="tkv-ecs-cluster-view"></a>

您可以从 E AWS xplorer 中删除 Amazon 弹性容器服务集群。

 *删除集群* 

1. 在 AWS 资源管理器中，在 **Amazon ECS** 的集群节点下打开要删除的**集群**的上下文（右键单击）菜单，然后选择**删除**。

1. 在 **Delete Cluster (删除集群)** 对话框中，选择 **OK (确定)**。集群被删除后，也将从 AWS 各区服务浏览器中移除。

## 创建存储库
<a name="tkv-ecs-repository-create"></a>

您可以通过 E AWS xplorer 创建 Amazon 弹性容器注册表存储库。

 *创建存储库* 

1. 在 AWS 资源管理器中，打开 **Amazon ECS** 下**存储库**节点的上下文（右键单击）菜单，然后选择 “**创建存储库**”。

1. 在 **Create Repository (创建存储库)** 对话框中，为存储库命名，然后选择 **OK (确定)**。

## 删除存储库
<a name="id1"></a>

您可以从 AWS 资源管理器中删除 Amazon 弹性容器注册表存储库。

 *删除存储库* 

1. 在 AWS 资源管理器中，打开 **Amazon ECS** 下**存储库**节点的上下文（右键单击）菜单，然后选择**删除存储库**。

1. 在 **Delete Repository (删除存储库)** 对话框中，您可以选择删除存储库（即使其中包含映像）。否则，它只有为空时才会被删除。单击 **Yes (是)**。

# 从 AWS 各区服务浏览器管理安全组
<a name="tkv-sg-create"></a>

Toolkit for Visual Studio 使您可以创建和配置安全组，以便与 Amazon Elastic Compute Cloud（Amazon EC2）实例和 CloudFormation 配合使用。当您启动 Amazon EC2 实例或将应用程序部署到 CloudFormation 时，可指定要与 Amazon EC2 实例关联的安全组。(在部署到 CloudFormation 时会创建 Amazon EC2 实例。)

安全组的行为类似于传入网络流量的防火墙。安全组指定 Amazon EC2 实例上允许的网络流量的类型。它还指定仅接受来自特定 IP 地址或指定用户或其他安全组的传入流量。

## 正在创建安全组
<a name="tkv-sg-create-security"></a>

在此部分中，我们将创建一个安全组。创建安全组后，安全组将未配置任何权限。权限配置是通过其他操作来处理的。

 *创建安全组* 

1. 在 AWS 各区服务浏览器中的 **Amazon EC2** 节点下，打开**安全组**节点的上下文（右键单击）菜单，然后选择**查看**。

1. 在 **EC2 Security Groups (EC2 安全组)** 选项卡上，选择 **Create Security Group (创建安全组)**。

1. 在 **Create Security Group (创建安全组)** 对话框中，键入该安全组的名称和描述，然后选择 **OK (确定)**。  
![\[Dialog box for creating a security group with fields for name and description.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/tkv-ec2-sg-create.png)

## 向安全组添加权限
<a name="tkv-permission-sg"></a>

在此部分中，我们将向安全组添加权限以通过 HTTP 和 HTTPS 协议允许 Web 流量。我们还将允许其他计算机通过使用 Windows 远程桌面协议 (RDP) 进行连接。

 *向安全组添加权限* 

1. 在 **EC2 Security Groups (EC2 安全组)** 选项卡上，选择安全组，然后选择 **Add Permission (添加权限)** 按钮。

1. 在 **Add IP Permission (添加 IP 权限)** 对话框中，选择 **Protocol, Port and Network (协议、端口和网络)** 单选按钮，然后从 **Protocol (协议)** 下拉列表中，选择 **HTTP**。端口范围将自动调整为端口 80（HTTP 的默认端口）。**Source CIDR (源 CIDR)** 字段默认为 0.0.0.0/0，这指定将接受来自任何外部 IP 地址的 HTTP 网络流量。选择**确定**。  
![\[Add IP Permission dialog box with Protocol, Port and Network options for HTTP configuration.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/tkv-ec2-sg-http.png)

   为此安全组打开端口 80 (HTTP)

1. 对 HTTPS 和 RDP 重复此过程。您的安全组权限现在看起来应与下面内容类似。  
![\[Security group settings showing HTTP, HTTPS, and RDP protocols with their respective ports and source CIDR.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/tkv-ec2-sg-display.png)

您还可通过指定用户 ID 和安全组名称在安全组中设置权限。在此情况下，此安全组中的 Amazon EC2 实例将接受来自指定安全组中的 Amazon EC2 实例的所有传入网络流量。您还必须指定用户 ID 作为区分安全组名称的方法；安全组名称在所有 AWS 中不需要是唯一的。有关安全组的更多信息，请转到 [EC2 文档](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html)。

# 从 Amazon EC2 实例创建 AMI
<a name="tkv-create-ami-from-instance"></a>

您可以使用 AWS Toolkit for Visual Studio创建亚马逊机器映像（AMI）。有关更多详细信息 AMIs，请参阅《适用于 *Windows 的亚马逊弹性计算云用户指南》中的亚马逊*[系统映像 (AMI)](https://docs.aws.amazon.com//AWSEC2/latest/WindowsGuide/AMIs.html) 主题。

 要从现有 Amazon EC2 实例创建 AMI，请完成以下过程。

**从现有 Amazon EC2 实例创建 AMI**

1. 在 AWS Toolkit Explorer 中，展开 **Amazon EC2**，然后选择**实例**以查看现有实例的列表。

1. 右键单击要用作 AMI 基础的实例，然后选择**创建映像（ABS AMI）**以打开**创建映像**对话窗口。

1. 在**创建映像**对话窗口中，将映像的名称和描述添加到提供的字段中，然后选择**确定**按钮继续。

1. 当映像创建完成后，Visual Studio 中会打开**映像已创建**确认窗口，请选择**确定**按钮以继续。

要使用 AWS 工具包查看您的新 AMI，请展开 **Amazon EC2**，然后双击**AMIs**在 Visual Studio 编辑器 payne 中打开一个显示现有 AMIs列表的窗口。如果您未在列表中看到您的新 AMI，请选择位于 AMI 窗口顶部的**刷新**按钮。

# 在 Amazon 系统映像上设置启动许可
<a name="tkv-set-ami-launch-perms"></a>

您可以从 AWS Explorer 中的**AMIs**视图中设置亚马逊系统映像 (AMIs) 的启动权限。您可以使用 “**设置 AMI 权限**” 对话框从中复制权限 AMIs。

 *设置 AMI 上的权限* 

1. 在 AWS 资源管理器的**AMIs**视图中，打开 AMI 的上下文（右键单击）菜单，然后选择**编辑权限**。  
![\[Context menu for an AMI in AWS Explorer with "Edit Permission" option highlighted.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/tkv-ami-edit-permissions-menu.png)

1. **Set AMI Permissions (设置 AMI 权限)** 对话框中有三个选项：
   + 要授予启动权限，请选择 “**添加**”，然后键入要向其授予启动权限的 AWS 用户的账号。
   + 要移除启动权限，请选择要移除启动权限的 AWS 用户的账号，然后选择 “**移除**”。
   + 要将许可从一个 AMI 复制到另一个 AMI，请从列表中选择一个 AMI，然后选择 **Copy from (复制自)**。具有您选择的 AMI 上的启动许可的用户将获得当前 AMI 上的启动许可。您可以使用 **Copy-fro AMIs m 列表中的**其他人重复此过程， AMIs 将多个权限复制到目标 AMI。

     **Copy-f** rom 列表仅包含在 Explorer 中显示**AMIs**视图时处于活动状态的账户所 AMIs 拥有的 AWS 内容。因此， AMIs 如果活跃账户没有其他所有权， AMIs 则**复制自**列表可能不会显示任何内容。  
![\[AMI management interface showing launch permissions and public/private settings for Linux instances.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/tkv-ami-copy-permissions-dlg.png)

    **Copy AMI permissions (复制 AMI 权限)** 对话框

# Amazon Virtual Private Cloud (VPC)
<a name="vpc-tkv"></a>

通过 Amazon Virtual Private Cloud（Amazon VPC），您可以将 Amazon Web Services 资源启动到您定义的虚拟网络中。该虚拟网络类似于您在数据中心中运行的传统网络，并具有使用 AWS的可扩展基础设施的优势。有关更多信息，请转到 [Amazon VPC 用户指南](https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/)。

利用 Toolkit for Visual Studio，开发人员可以访问 VPC 功能，该功能类似于由 [AWS 管理控制台](https://console.aws.amazon.com/console/home)公开的功能，但位于 Visual Studio 开发环境中。 AWS Explorer 的 **Amazon VPC** 节点包括以下区域的子节点。
+  [VPCs](https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Introduction.html) 
+  [子网](https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Subnets.html) 
+  [弹性 IPs](https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-ip-addressing.html) 
+  [互联网网关](https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Internet_Gateway.html) 
+  [Network ACLs](https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_ACLs.html) 
+  [路由表](https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Route_Tables.html) 
+  [安全组](https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_SecurityGroups.html) 

## 创建用于部署的公共 VPC AWS Elastic Beanstalk
<a name="tkv-vpc-pub-pri"></a>

本部分介绍如何创建同时包含公有子网和私有子网的 Amazon VPC。公有子网包含一个 Amazon EC2 实例，该实例执行网络地址转换 (NAT)，使私有子网中的实例能够与公有互联网通信。两个子网必须位于同一可用区 (AZ)。

这是在 VPC 中部署 AWS Elastic Beanstalk 环境所需的最低 VPC 配置。在这种情况下，托管您的应用程序的 Amazon EC2 实例位于私有子网中；将传入流量路由到您的应用程序的 Elastic Load Balancing 负载均衡器位于公有子网中。

有关网络地址转换（NAT）的更多信息，请参阅《[Amazon Virtual Private Cloud 用户指南](https://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_NAT_Instance.html)》中的 *NAT 实例*。有关如何将部署配置为使用 VPC 的示例，请参阅[部署到 Elastic Beanstalk](deployment-beanstalk.md#tkv-deploy-beanstalk)。

 **创建公有-私有子网 VPC** 

1. 在 AWS 资源管理器的 **Amazon VPC** 节点中，打开**VPCs**子节点，然后选择**创建 VPC**。  
![\[AWS Explorer showing Amazon VPC node expanded with VPCs subnode highlighted.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/vpc-vpcs-aws-explorer.png)

1. 按下面所示配置 VPC：
   + 键入 VPC 的名称。
   + 选中 **With Public Subnet (使用公有子网)** 和 **With Private Subnet (使用私有子网)** 复选框。
   + 从每个子网的 **Availability Zone (可用区)** 下拉列表框中，选择一个可用区。确保对两个子网使用相同的 AZ。
   + 对于 **NAT Key Pair Name (NAT 密钥对名称)** 中的私有子网，提供一个键前缀。此 key pair 用于执行从私有子网到公有互联网的网络地址转换的 Amazon EC2 实例。
   + 选中 **Configure default security group to allow traffic to NAT (配置默认安全组以允许到 NAT 的流量)** 复选框。

   键入 VPC 的名称。选中 **With Public Subnet (使用公有子网)** 和 **With Private Subnet (使用私有子网)** 复选框。从每个子网的 **Availability Zone (可用区)** 下拉列表框中，选择一个可用区。确保对两个子网使用相同的 AZ。对于 **NAT Key Pair Name (NAT 密钥对名称)** 中的私有子网，提供一个键前缀。此 key pair 用于执行从私有子网到公有互联网的网络地址转换的 Amazon EC2 实例。选中 **Configure default security group to allow traffic to NAT (配置默认安全组以允许到 NAT 的流量)** 复选框。

   选择**确定**。  
![\[VPC creation form with public and private subnet options, CIDR blocks, and NAT settings.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/vpc-create.png)

您可以在 AWS 资源管理器的**VPCs**选项卡中查看新的 VPC。

![\[VPC list showing a single VPC named myDeploymentVPC with its ID and other details.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/vpc-created-display.png)


启动 NAT 实例可能需要几分钟。当它可用时，您可以通过在 AWS Explorer 中展开 **Amazon EC2** 节点，然后打开**实例**子节点来查看它。

系统会自动为 NAT 实例创建一个 Amazon Elastic Block Store（Amazon EBS）卷。有关亚马逊 EBS 的更多信息，请参阅[亚马逊 Linux 实例* EC2 用户*指南中的亚马逊弹性区块存储 (EBS) 主题](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/AmazonEBS.html)。

![\[EC2 instance details showing a running NAT instance with an attached EBS volume.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/vpc-nat-instance.png)


如果您将[应用程序部署到 AWS Elastic Beanstalk 环境](deployment-beanstalk.md#tkv-deploy-beanstalk)并选择在 VPC 中启动该环境，则工具包将使用您的 VPC 的配置信息填充**发布到 Amazon Web Services**对话框。

Toolkit 仅使用在 Toolkit 中创建 VPCs 的信息填充对话框，而不是使用工具包 VPCs 创建的信息。 AWS 管理控制台这是因为，当 Toolkit 创建 VPC 时，它将对 VPC 的组件进行标记，以便能够访问这些组件的信息。

来自部署向导的以下屏幕截图显示了一个对话框的示例，该对话框是使用来自在 Toolkit 中创建的 VPC 的值填充的。

![\[AWS Options dialog for EC2 deployment with container type, instance, VPC, and networking settings.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/deploy-pb-aeb-vpc-from-tkv.png)


 **删除 VPC** 

要删除 VPC，您必须先终止该 VPC 中的所有 Amazon EC2 实例。

1. 如果您已将应用程序部署到 VPC 中的某个 AWS Elastic Beanstalk 环境，请删除该环境。这将终止所有托管您的应用程序以及 Elastic Load Balancing 负载均衡器的亚马逊 EC2 实例。

   如果您尝试直接终止托管您的应用程序的实例而不删除该环境，Auto Scaling 服务将自动创建新实例来替换删除的实例。有关更多信息，请访问 [Auto Scaling 开发人员指南](https://docs.aws.amazon.com/autoscaling/latest/userguide/WhatIsAutoScaling.html)。

1. 删除 VPC 的 NAT 实例。

   您无需删除与 NAT 实例关联的 Amazon EBS 卷即可删除 VPC。但是，如果您不删除卷，则会继续为其付费，即使您删除了 NAT 实例和 VPC 也是如此。

1. 在 **VPC** 选项卡上，选择 **Delete (删除)** 链接以删除 VPC。  
![\[VPC management interface showing Delete option highlighted for a selected VPC.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/vpc-delete-link.png)

1. 在 **Delete VPC (删除 VPC)** 对话框中，选择 **OK (确定)**。  
![\[Confirmation dialog for deleting a VPC, listing associated resources to be deleted.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/vpc-delete.png)

# 使用适用于 Visual Studio 的 CloudFormation 模板编辑器
<a name="tkv-cfn-editor"></a>

Toolkit for Visual Studio 包含适用于 Visual Studio 的 CloudFormation 模板编辑器和 CloudFormation 模板项目。支持的功能包括：
+ 使用随附的 CloudFormation 模板项目类型创建新模板（空模板或从现有堆栈或示例模板复制的模板）。
+ 利用自动 JSON 验证、自动完成、代码折叠和语法突出显示来编辑模板。
+ 模板中字段值的内部函数和资源参考参数的自动建议。
+ 用于从 Visual Studio 中对您的模板执行常见操作的菜单项。

**Topics**
+ [在 Visual Studio 中创建 CloudFormation 模板项目](tkv-cfn-editor-new-project.md)
+ [在 Visual Studio 中部署 CloudFormation 模板](tkv-cfn-editor-deploy-template.md)
+ [在 Visual Studio 中设置 CloudFormation 模板的格式](tkv-cfn-editor-format.md)

# 在 Visual Studio 中创建 CloudFormation 模板项目
<a name="tkv-cfn-editor-new-project"></a>

 **创建模板项目** 

1. 在 Visual Studio 中，依次选择 **File (文件)**、**New (新建)** 和 **Project (项目)**。

1. **对于 Visual Studio 2017**：

   在**新建项目**对话框中，展开**已安装**，然后选择 **AWS**。  
![\[New Project dialog box showing CloudFormation and Lambda Function project options.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/CreateNewProject-04-CloudFormation-VS2017.png)

   **对于 Visual Studio 2019**：

   在**新建项目**对话框中，确保将**语言**、**平台**和**项目类型**下拉框都设置为“全部...”，然后在**搜索**字段中键入 **aws**。  
![\[Project template options for AWS 服务, including Lambda, CloudFormation, and Serverless applications.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/CreateNewProject-04-CloudFormation-VS2019.png)

1. 选择**AWS CloudFormation 项目**模板。

1. **对于 Visual Studio 2017**：

   为您的模板项目输入所需的**名称**、**位置**等，然后单击**确定**。

   **对于 Visual Studio 2019**：

   单击**下一步**。在下一个对话框中，为您的模板项目输入所需的**名称**、**位置**等，然后单击**创建**。

1. 在 **Select Project Source (选择项目源)** 页面上，选择您将创建的模板的源：
   +  **Create with empty template (使用空模板创建)** 生成新的空 CloudFormation 模板。
   +  **从现有 AWS \$1CFN\$1 堆栈创建**从您账户中的现有堆栈生成一个模板。 AWS （该堆栈不需要具有状态 `CREATE_COMPLETE`。）
   +  **Select sample template (选择示例模板)** 从 CloudFormation 示例模板之一生成模板。  
![\[CloudFormation project creation window with options for template source selection.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/vs-editor-new-template-empty-2.png)

1. 要完成 CloudFormation 模板项目的创建，请选择 “**完成**”。

# 在 Visual Studio 中部署 CloudFormation 模板
<a name="tkv-cfn-editor-deploy-template"></a>

 **部署 CFN 模板** 

1. 在解决方案浏览器中，打开要部署的模板的上下文（右键单击）菜单，然后选择**部署到 AWS CloudFormation**。  
![\[Solution Explorer showing CloudFormation template with context menu options for deployment.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/vs-editor-solution-explorer-deploy.png)

   或者，要部署您当前正在编辑的模板，请从**模板**菜单中，选择**部署到 AWS CloudFormation**。  
![\[Template menu options including Deploy to CloudFormation and Estimate Cost.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/vs-editor-template-menu-deploy.png)

1. 在**部署模板**页面上，选择要用于启动堆栈的 AWS 账户和区域。  
![\[Deploy Template interface showing options to create or update a stack with account and region selection.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/vs-editor-cfn-deploy.png)

1. 选择 **Create New Stack (创建新堆栈)** 并为您的堆栈键入名称。

1. 选择以下任一选项（或不选择任何选项）：
   + 要接收有关堆栈的进度的通知，请从 **SNS Topic (SNS 主题)** 下拉列表中，选择 SNS 主题。您还可以通过选择 **Create New Topic (创建新主题)** 并在框中键入电子邮件地址来创建 SNS 主题。
   + 使用 **Creation Timeout** 指定在堆栈被声明失败 (并回滚，除非已清除 CloudFormationRollback on failure** 选项) 之前 ** 应留出的创建堆栈的时间量。
   + 如果您希望堆栈在失败时回滚（即，自行删除），请使用 **Rollback on failure (失败时回滚)**。如果您出于调试目的希望堆栈保持活动状态，请将此选项保持清除状态，即使堆栈未能完成启动。

1. 选择 **Finish (完成)** 以启动堆栈。

# 在 Visual Studio 中设置 CloudFormation 模板的格式
<a name="tkv-cfn-editor-format"></a>
+ 在解决方案资源管理器中，打开模板的上下文（右键单击）菜单，然后选择 **Format Template (格式模板)**。

  或者，要对您当前编辑的模板进行格式设置，请从 **Template (模板)** 菜单中，选择 **Format Template (格式模板)**。  
![\[Dropdown menu showing options to deploy to CloudFormation, estimate cost, and format template.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/vs-editor-template-menu-format.png)

  您的 JSON 代码将进行格式设置，以便清晰地呈现其结构。  
![\[JSON code structure for CloudFormation template with UserData and Properties sections.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/vs-editor-cfn-formatting.png)

# 使用 Exp AWS lorer 中的 Amazon S3
<a name="tkv-s3"></a>

利用 Amazon Simple Storage Service（Amazon S3），您可以通过连接到 Internet 来存储和检索数据。您在 Amazon S3 上存储的所有数据与您的账户关联，而且默认情况下，只能由您访问。利用 Toolkit for Visual Studio，您可以将数据存储在 Amazon S3 上并查看、管理、检索和分布数据。

Amazon S3 使用了桶的概念，您可以将此视为类似于文件系统或逻辑驱动器。存储桶可包含文件夹（类似于目录）和对象（类似于文件）。在此部分中，我们将在介绍由 Toolkit for Visual Studio 公开的 Amazon S3 功能时使用这些概念。

**注意**  
要使用此工具，您的 IAM policy 必须为 `s3:GetBucketAcl`、`s3:GetBucket` 和 `s3:ListBucket` 操作授予权限。有关更多信息，请参阅 [AWS IAM 策略概述](https://docs.aws.amazon.com/IAM/latest/UserGuide/PoliciesOverview.html)。

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

桶是 Amazon S3 中最基本的存储单位。

 **创建 S3 存储桶** 

1. 在 AWS 资源管理器中，打开 **Amazon S3** 节点的上下文（右键单击）菜单，然后选择**创建存储桶**。

1. 在 **Create Bucket (创建存储桶)** 对话框中，为存储桶键入名称。桶名称在 AWS中必须是唯一的。有关其他约束的信息，请转到 [Amazon S3 文档](https://docs.aws.amazon.com/AmazonS3/latest/dev/BucketRestrictions.html)。

1. 选择**确定**。

## 通过资源管理器管理 Amazon S3 存储桶 AWS
<a name="managing-s3-buckets"></a>

在 AWS Explorer 中，当您打开 Amazon S3 存储桶的上下文（右键单击）菜单时，可以使用以下操作。

 *浏览* 

显示包含在存储桶中的对象的视图。从此处，您可以创建文件夹或者从您的本地计算机上传文件或整个目录和文件夹。下方窗格将显示有关上传过程的状态消息。要清除这些消息，请选择 **Clear (清除)** 图标。您也可以通过在 AWS Explorer 中双击存储桶名称来访问该存储桶的此视图。

![\[Empty S3 bucket interface with options to upload files, create folders, and view status.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/tkv-s3-bucket-browse-empty.png)


 *属性* 

显示您可在其中执行以下操作的对话框：
+ 将 Amazon S3 权限范围设置为：
  + 作为存储桶拥有者的您。
  + 已在 AWS上进行身份验证的所有用户。
  + 具有 Internet 访问权限的每个人。
+ 开启对存储桶的日志记录。
+ 使用 Amazon Simple Notiﬁcation Service（Amazon SNS）设置通知，这样，在您使用低冗余存储（RRS）时，如果发生数据丢失，您将会接到通知。RRS 是一个 Amazon S3 存储选项，与标准存储相比，它提供的持久性较差，但成本较低。有关更多信息，请参阅 [S3 FAQs](https://aws.amazon.com/s3/faqs/#What_is_RRS)。
+ 使用存储桶中的数据创建静态网站。

 *Policy* 

使您能够为存储桶设置 AWS Identity and Access Management (IAM) 策略。有关更多信息，请转到 [IAM 文档](https://docs.aws.amazon.com/IAM/latest/UserGuide/IAM_Overview.html)及 [IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/IAM_UseCases.html) 和 [S3](https://docs.aws.amazon.com/AmazonS3/latest/dev/AccessPolicyLanguage_UseCases_s3_a.html) 的使用案例。

 *创建预签名 URL* 

使您能够生成一个限时的 URL，您可分配该 URL 以提供对存储桶内容的访问权限。有关更多信息，请参阅[如何创建预签名 URL](#s3-pre-sign-create)。

 *查看分段上传* 

使您可以查看分段上传。Amazon S3 支持将大型对象上传分解为多个部分以使上传过程更高效。有关更多信息，请转到 [S3 文档中的分段上传](https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html)的讨论。

 *删除* 

使您能够删除存储桶。您只能删除空桶。

## 将文件和文件夹上传到 Amazon S3
<a name="upload-s3-files"></a>

您可以使用 AWS Explorer 将文件或整个文件夹从本地计算机传输到任何存储桶。

**注意**  
如果您上传的文件或文件夹与已存在于 Amazon S3 桶中的文件或文件夹具有相同的名称，则您上传的文件将覆盖现有文件而不进行提示。

 **将文件上传到 S3** 

1. 在 AWS 资源管理器中，展开 **Amazon S3** 节点，双击存储桶或打开存储桶的上下文（右键单击）菜单，然后选择 “**浏览**”。

1. 在您的存储桶的 **Browse (浏览)** 视图中，选择 **Upload File (上传文件)** 或 **Upload Folder (上传文件夹)**。

1. 在 **File-Open (文件-打开)** 对话框中，导航到要上传的文件，选择这些文件，然后选择 **Open (打开)**。如果您要上传文件夹，请导航到并选择该文件夹，然后选择 **Open (打开)**。

   利用 **Upload Settings (上传设置)** 对话框，您能够在要上传的文件或文件夹上设置元数据和权限。选中 **Make everything public (将所有项公开化)** 复选框等同于将 **Open/Download (打开/下载)** 权限设置为 **Everyone (所有人)**。您可以为上传的文件选择使用 [Reduced Redundancy Storage (减小冗余存储)](https://aws.amazon.com/s3/faqs/#What_is_RRS) 的选项。  
![\[Upload Settings dialog with options for storage, visibility, and permissions configuration.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/tkv-s3-file-upload.png)  
![\[S3 bucket interface showing a single uploaded file with details and upload progress.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/tkv-s3-file-upload-complete.png)

## Visual Studio AWS 工具包中的亚马逊 S3 文件操作
<a name="tkv-s3-file-ops"></a>

如果您选择 Amazon S3 视图中的一个文件并打开相应的上下文（右键单击）菜单，则可对该文件执行各种操作。

![\[Context menu for a file in Amazon S3 view, showing options like Upload, Download, and Delete.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/tkv-s3-file-ops-menu.png)


 *Create Folder* 

使您能够在当前存储桶中创建文件夹。（等同于选择 **Create Folder (创建文件夹)** 链接。）

 *上传* 

使您能够上传文件或文件夹。（等同于选择 **Upload File (上传文件)** 或 **Upload Folder (上传文件夹)** 链接。）

 *Open* 

尝试在您的默认浏览器中打开所选文件。根据文件的类型和您的默认浏览器的功能，可能不会显示该文件。您的浏览器可能只是下载该文件。

 *下载* 

打开 **Folder-Tree (文件夹-树)** 对话框以使您能够下载所选文件。

 *公开化* 

将所选文件的权限设置为 **Open/Download (打开/下载)** 和 **Everyone (所有人)**。（等同于在**上传设置**对话框中选中**公开所有内容**复选框。）

 *删除* 

删除所选文件或文件夹。您也可以通过选择文件或文件夹并按 `Delete` 来删除它们。

 *更改存储类* 

将存储类设置为“标准”或“低冗余存储 (RRS)”。要查看当前存储类设置，请选择 **Properties (属性)**。

 *更改加密* 

使您能够对文件设置服务器端加密。要查看当前加密设置，请选择 **Properties (属性)**。

 *重命名* 

使您能够重命名文件。您无法重命名文件夹。

 *剪切 \$1 复制 \$1 粘贴* 

使您能够在文件夹或存储桶之间剪切、复制和粘贴文件或文件夹。

 *属性* 

显示一个对话框，使您可以在其中设置该文件的元数据和权限，以及在“低冗余存储 (RRS)”和“标准”之间切换文件的存储并为该文件设置服务器端加密。此对话框还显示一个指向该文件的 https 链接。如果选择此链接，Toolkit for Visual Studio 将在您的默认浏览器中打开该文件。如果您将该文件的权限设置为 **Open/Download (打开/下载)** 和 **Everyone (所有人)**，则其他人员均将能够通过此链接访问该文件。我们建议您创建和分发预签名 URLs链接，而不是分发此链接。

![\[Properties dialog for an S3 object showing metadata, permissions, and encryption options.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/tkv-s3-properties-file.png)


 *创建预签名 URL* 

使您能够创建一个限时的预签名 URL，您可分发该 URL 以使其他人员能够访问已存储在 Amazon S3 上的内容。

### 如何创建预签名 URL
<a name="s3-pre-sign-create"></a>

您可以为存储桶或存储桶中的文件创建预签名 URL。然后，其他人员可以使用此 URL 访问存储桶或文件。当您在创建此 URL 时指定的时间段过后，此 URL 将会过期。

 **创建预签名 URL** 

1. 在 **Create Pre-Signed URL (创建预签名 URL)** 对话框中，设置此 URL 的到期日期和时间。默认设置为从当前时间开始的一个小时。

1. 选择 **Generate（生成）**按钮。

1. 要将此 URL 复制到剪贴板，请选择 **Copy（复制）**。  
![\[Dialog box for creating a pre-signed URL with options for expiration, S3 bucket, object key, and action.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/tkv-s3-presigned-url.png)

# 从 AWS 各区服务浏览器使用 DynamoDB
<a name="dynamodb-tkv"></a>

Amazon DynamoDB 是一项快速、高度可扩展、高度可用且经济实惠的非关系数据库服务。DynamoDB 消除了传统上对数据存储可扩展性的限制，同时保留了低延迟性和可预测的性能。Toolkit for Visual Studio 提供了在开发上下文中使用 DynamoDB 的功能。有关 DynamoDB 的更多信息，请参阅 Amazon Web Services 网站上的 [DynamoDB](https://aws.amazon.com/dynamodb/)。

在 Toolkit for Visual Studio 中，AWS 各区服务浏览器会显示与活动 AWS 账户关联的所有 DynamoDB 表。

![\[AWS Explorer window showing DynamoDB tables under the selected US East (Virginia) region.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/dynamodb-aws-explorer.png)


## 创建 DynamoDB 表
<a name="tkv-dynamodb-create-table"></a>

您可以使用 Toolkit for Visual Studio 创建 DynamoDB 表。

 **在 AWS 各区服务浏览器中创建表** 

1. 在 AWS 各区服务浏览器中，打开 **Amazon DynamoDB** 的上下文（右键单击）菜单，然后选择**创建表**。

1. 在 **Create Table (创建表)** 向导的 **Table Name (表名称)** 中，键入表的名称。

1. 在**哈希键名称**字段中，键入主哈希键属性，然后从**哈希键类型**按钮中选择哈希键类型。DynamoDB 使用主键属性构建无序哈希索引，并使用范围主键属性构建可选的有序范围索引。有关主哈希键属性的更多信息，请参阅《Amazon DynamoDB 开发人员指南》**中的[主键](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.CoreComponents.html#HowItWorks.CoreComponents.PrimaryKey)部分。

1. （可选）选择 **Enable Range Key (启用范围键)**。在 **Range Key Name (范围键名称)** 字段中，键入范围键属性，然后从 **Range Key Type (范围键类型)** 按钮中，选择范围键类型。

1. 在 **Read Capacity (读取容量)** 字段中，键入读取容量单位的数量。在 **Write Capacity (写入容量)** 字段中，键入写入容量单位的数量。您必须至少指定 3 个读取容量单位和 5 个写入容量单位。有关读取和写入容量单位的更多信息，请转到 [DynamoDB 中预配置的吞吐量](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ProvisionedThroughput.html)。

1. （可选）选择 **Enable Basic Alarm (启用基本警报)** 以在表的请求速率过快时提醒您。选择每 60 分钟的预配置吞吐量的百分比，必须超过此百分比才会发送提醒。在 **Send Notifications To (将通知发送到)** 中，键入电子邮件地址。

1. 单击 **OK (确定)** 以创建表。

![\[Create Table dialog with fields for table name, key types, capacities, and alarm settings.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/dynamodb-create-table.png)


有关 DynamoDB 表的更多信息，请参阅[数据模型概念 – 表、项目和属性](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.CoreComponents.html#HowItWorks.CoreComponents.TablesItemsAttributes)。

## 以网格形式查看 DynamoDB 表
<a name="tkv-dynamodb-grid-view"></a>

要打开 DynamoDB 表的网格视图，请在 AWS 各区服务浏览器中双击与表对应的子节点。从网格视图中，您可以查看存储在表中的项目、属性和值。每个行对应于表中的一个项目。表列与属性对应。表的每个单元格保存与该项目的该属性关联的值。

属性可以包含字符串或数字形式的值。某些属性包含由*一系列* 字符串或数字组成的值。系列值显示为用方括号括起的逗号分隔列表。

![\[AWS Explorer interface showing DynamoDB table with product catalog entries and attributes.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/dynamodb-product-catalog.png)


## 编辑和添加属性和值
<a name="tkv-dynamodb-editing"></a>

通过双击单元格，您可以编辑项目对应属性的值。对于系列值属性，您还可以在该系列中添加或删除单个值。

![\[Table showing brand names with associated colors and editing options.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/dynamodb-single-value-cell-edit.png)


除了更改属性的值之外，您还可以更改属性的值的格式（存在一些限制）。例如，任何数字值均可转换为字符串值。如果您有一个字符串值，内容为数字（如 125），那么单元格编辑器可让您将值的格式从字符串转换为数字。您还可以将单一值转换为系列值。但是，您通常无法将系列值转换为单一值；有一个例外情况，即当系列值实际上只包含一个元素时。

![\[Spreadsheet interface showing Brand, Color, 说明, Dimensions, and Gender columns with editable cells.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/dynamodb-set-value-attribute.png)


在编辑属性值后，请选择绿色的勾号以确认更改。如果要放弃更改，请选中红色 X。

在您确认更改后，属性值将以红色显示。这表示属性已更新，但新值尚未写回到 DynamoDB 数据库。要将更改写回到 DynamoDB，请选择**提交更改**。要放弃更改，请选择 **Scan Table (扫描表)**，当 Toolkit 询问您是否要在扫描之前提交更改时，选择 **No (否)**。

 *添加属性* 

从网格视图中，您还可以将属性添加到表。要添加新属性，请选择 **Add Attribute (添加属性)**。

![\[Three buttons labeled Scan Table, Commit Changes, and Add Attribute.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/dynamodb-add-attribute-button.png)


在 **Add Attribute (添加属性)** 对话框中，键入属性的名称，然后选择 **OK (确定)**。

![\[Add Attribute dialog box with input field for Attribute Name and explanatory text.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/dynamodb-add-attribute.png)


要使新属性成为表的一部分，您必须至少为一个项目向新属性添加值，然后选择 **Commit Changes (提交更改)** 按钮。要放弃新属性，只需关闭表的网格视图，同时不选择 **Commit Changes (提交更改)** 即可。

![\[Database table view showing ProductCatalog with columns like ISBN, Price, and Genre.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/dynamodb-commit-new-attribute-value.png)


## 扫描 DynamoDB 表
<a name="tkv-dynamodb-scan"></a>

![\[Three buttons: Scan Table, Commit Changes, and Add Attribute.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/dynamodb-scan.png)


您可以从 Toolkit 对 DynamoDB 表执行扫描。在一次扫描中，您将定义一组条件，扫描将返回表中符合您的条件的所有项目。扫描是代价高昂的操作，应谨慎使用以避免干扰表中优先级更高的生产流量。有关使用扫描操作的更多信息，请参阅《Amazon DynamoDB 开发人员指南》**。

 **从 AWS 各区服务浏览器对 DynamoDB 表执行扫描** 

1. 在网格视图中，选择 **scan conditions: add (扫描条件: 添加)** 按钮。

1. 在扫描子句编辑器中，选择要与之匹配的属性，应如何解释属性的值（字符串、数字、系列值）、应如何匹配属性（例如“开头为”或“包含”）以及属性应匹配的文本值。

1. 根据需要为您的搜索添加更多扫描子句。扫描只会返回符合所有扫描子句中的条件的项目。当与字符串值匹配时，扫描将执行区分大小写的比较。

1. 在网格视图顶部的按钮栏上，选择 **Scan Table (扫描表)**。

要删除扫描子句，请选择每个子句右侧带白线的红色按钮。

![\[Product catalog table with scan conditions interface showing bicycle data entries.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/dynamodb-scan-results.png)


要返回到包含所有项目的表的视图，请删除所有扫描子句并再次选择 **Scan Table (扫描表)**。

 *为扫描结果分页* 

视图底部有三个按钮。

![\[Three buttons at the bottom: rewind, fast forward, and a green play button.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/tkv-simpleDB-paginate-export.png)


前两个蓝色按钮为扫描结果提供分页。第一个按钮将显示另外一页的结果。第二个按钮将显示另外十页的结果。在此上下文中，一个页面等于 1 MB 的内容。

 *将扫描结果导出到 CSV* 

第三个按钮将结果从当前扫描导出到 CSV 文件。

# 将 AWS CodeCommit 与 Visual Studio Team Explorer 配合使用
<a name="using-aws-codecommit-with-team-explorer"></a>

您可以使用 AWS Identity and Access Management（IAM）用户账户创建 Git 凭证，并使用该凭证在 Team Explorer 中创建和克隆存储库。

## AWS CodeCommit 的凭证类型
<a name="credential-types-for-acclong"></a>

大多数 AWS Toolkit for Visual Studio 用户了解如何设置包含自己的访问密钥和秘密密钥的 AWS 凭证配置文件。这些凭证配置文件用于在 Toolkit for Visual Studio 中实现对服务 API 的调用，例如，在 AWS 各区服务浏览器中列出 Amazon S3 桶或者启动 Amazon EC2 实例。AWS CodeCommit 与 Team Explorer 的集成也使用这些凭证配置文件。但是，要使用 Git 本身，您需要额外的凭证，特别是用于 HTTPS 连接的 Git 凭证。有关这些凭证（用户名和密码）的信息，请参阅《AWS CodeCommit User Guide》**中的 [Setup for HTTPS Users Using Git Credentials](https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-gc.html)。

您只能为 IAM 用户账户创建用于 AWS CodeCommit 的 Git 凭证。您不能为根账户创建这些凭证。您最多可以为服务创建两组这样的凭证，虽然您可以将一组凭证标记为不活动，但仍会计入您的两组凭证的限制中。请注意，您可以随时删除和重新创建凭证。当您在 Visual Studio 中使用 AWS CodeCommit 时，您的传统 AWS 凭证用于处理服务本身，例如，在您创建和列出存储库时。使用托管在 AWS CodeCommit 中的实际 Git 存储库时，您使用 Git 凭证。

作为对 AWS CodeCommit 支持的一部分，Toolkit for Visual Studio 会自动为您创建和管理这些 Git 凭证并将其关联到您的 AWS 凭证配置文件。您无需担心手头必须有一组合适的凭证在 Team Explorer 中执行 Git 操作。一旦您使用 AWS 凭证配置文件连接到 Team Explorer，关联的 Git 凭证将在您使用 Git remote 时自动使用。

## 将 连接到 AWS CodeCommit
<a name="connecting-to-acclong"></a>

当您在 Visual Studio 2015 或更高版本中打开 Team Explorer 窗口时，您将在“Manage Connections”的“Hosted Service Providers”中看到 AWS CodeCommit 条目。

![\[“管理连接”中的 AWS CodeCommit 条目\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/codecommit_invite-300x106.png)


选择**注册**将在浏览器窗口中打开 Amazon Web Services 主页。选择**连接**时将发生的情况，取决于 Toolkit for Visual Studio 是否能够找到含有 AWS 访问密钥和秘密密钥的凭证配置文件以使其可以代表您调用 AWS。您可能使用在 IDE 中显示的新“开始使用”页面设置了凭证配置文件，这会使 Toolkit for Visual Studio 找不到任何存储在本地的凭证。或者，您可能已使用过 Toolkit for Visual Studio、AWS Tools for Windows PowerShell 或 AWS CLI，在这种情况下，您已经有了可供 Toolkit for Visual Studio 使用的 AWS 凭证配置文件。

在您选择**连接**时，Toolkit for Visual Studio 启动流程来查找在连接中使用的凭证配置文件。如果 Toolkit for Visual Studio 找不到凭证配置文件，将打开一个对话框，邀请您输入您的 AWS 账户的访问密钥和秘密密钥。强烈建议您使用 IAM 用户账户而非使用您的根凭证。此外，如前文所述，只能为 IAM 用户创建您最终需要的 Git 凭证。提供访问密钥和秘密密钥并创建凭证配置文件之后，Team Explorer 和 AWS CodeCommit 之间的连接已可供使用。

如果 Toolkit for Visual Studio 找到多个 AWS 凭证配置文件，系统将提示您选择要在 Team Explorer 中使用的账户。

![\[选择 AWS 凭证配置文件\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/codecommit_profileselect-300x173.png)


如果您只有一个凭证配置文件，Toolkit for Visual Studio 将绕过配置文件选择对话框，您将立即连接：

在 Team Explorer 与 AWS CodeCommit 之间通过凭证配置文件建立连接时，将关闭邀请对话框并显示连接面板。

![\[AWS CodeCommit 连接面板\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/codecommit_connectpanel-300x61.png)


由于您没有本地克隆的存储库，面板只显示您可以执行的操作：**Clone (克隆)**、**Create (创建)** 和 **Sign out (注销)**。与其他提供程序一样，Team Explorer 中的 AWS CodeCommit 在任意时间只能绑定到一个 AWS 凭证配置文件。要切换账户，您可以使用 **Sign out (注销)** 删除连接，以便您使用不同账户启动新的连接。

现在，您已建立了连接，您可以通过单击 **Create (创建)** 链接创建存储库。

## 创建存储库
<a name="creating-a-repository"></a>

当您单击**创建**链接时，将打开**创建新 AWS CodeCommit 存储库**对话框。

![\[创建新 AWS CodeCommit 存储库\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/codecommit_create-300x211.png)


AWS CodeCommit 存储库按区域排列，因此您可以在 **Region (区域)** 中选择在哪个区域中托管存储库。列表中有 AWS CodeCommit 支持的所有区域。您为新存储库提供名称 (必需) 和说明 (可选)。

对话框的默认行为是使用存储库名称 (您输入的名称，同时更新文件夹位置) 作为新存储库文件夹位置的后缀。要使用不同的文件夹名称，请在完成输入存储库名称后编辑 **Clone into (克隆到)** 文件夹路径。

您还可以选择自动为存储库创建初始 `.gitignore` 文件。AWS Toolkit for Visual Studio 为 Visual Studio 文件类型提供了内置的默认值。您还可以选择没有文件，或者使用您希望在各个存储库中重用的自定义现有文件。只需在列表中选择 **Use custom (使用自定义)** 并导航到要使用的自定义文件。

在您有了存储库的名称和位置之后，您可以单击 **OK (确定)** 并开始创建存储库。Toolkit for Visual Studio 请求服务创建存储库，然后本地克隆新的存储库，添加 .gitignore 文件的初始提交（如果您使用该文件）。此时您开始使用 Git remote，因此 Toolkit for Visual Studio 现在需要访问之前所述的 Git 凭证。

## 设置 Git 凭证
<a name="setting-up-git-credentials"></a>

到目前为止，您已使用 AWS 访问密钥和秘密密钥请求服务创建您的存储库。现在，您需要使用 Git 本身执行实际克隆操作，而 Git 无法使用 AWS 访问密钥和秘密密钥。因此您需要向 Git 提供用户名和密码凭证以在 HTTPS 连接上使用 remote。

如[设置 Git 凭证](#setting-up-git-credentials)中所述，您将使用的 Git 凭证必须与 IAM 用户关联。您不能为根凭证生成它们。设置 AWS 凭证配置文件时，务必在其中包含 IAM 用户访问密钥和秘密密钥，而不是根密钥。Toolkit for Visual Studio 可以尝试为您设置用于 AWS CodeCommit 的 Git 凭证，并将该凭证与您之前用来在 Team Explorer 中进行连接的 AWS 凭证配置文件关联起来。

当您在**创建新 AWS CodeCommit 存储库**对话框中选择**确定**并成功创建了存储库时，Toolkit for Visual Studio 会检查在 Team Explorer 中连接的 AWS 凭证配置文件，以确定用于 AWS CodeCommit 的 Git 凭证是否存在并与配置文件本地关联。如果两个条件均满足，则 Toolkit for Visual Studio 指示 Team Explorer 开始在新存储库上的克隆操作。如果 Git 凭证在本地不可用，则 Toolkit for Visual Studio 会检查在 Team Explorer 的连接中使用的账户凭证的类型。如果该凭证用于 IAM 用户 (就像我们建议的那样)，则将显示以下消息。

![\[创建 Git 凭证\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/codecommit_iamuser_createcreds-300x156.png)


如果凭证是根凭证，将会改为显示以下消息。

![\[创建使用 AWS CodeCommit 凭证的 IAM 用户\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/codecommit_rootuser-300x168.png)


在这两种情况下，Toolkit for Visual Studio 都会提出尝试完成操作来为您创建必需的 Git 凭证。在第一种情况下，所有需要创建的是 IAM 用户的一组 Git 凭证。在使用根账户的情况下，Toolkit for Visual Studio 首先尝试创建一个 IAM 用户，然后继续为该新用户创建 Git 凭证。如果 Toolkit for Visual Studio 需要创建新用户，则会将 AWS CodeCommit 高级用户托管策略应用到该新用户账户。此策略只允许访问 AWS CodeCommit 并允许使用 AWS CodeCommit 执行除了存储库删除之外的所有操作。

在您创建凭证时，您只能查看一次凭证。因此，Toolkit for Visual Studio 提示您将新创建的凭证另存为 `.csv` 文件，然后再继续。

![\[保存 AWS CodeCommit 凭证\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/codecommit_savecreds-300x156.png)


这是我们强烈建议的操作，并确保将它们保存到安全位置！

在有些情况下，Toolkit for Visual Studio 可能无法自动创建凭证。例如，您创建的用于 AWS CodeCommit 的 Git 凭证组数量已达上限（两个），或者您可能没有足够的编程权限让 Toolkit for Visual Studio 为您完成工作（如果您以 IAM 用户身份登录）。在这些情况下，您可以登录 AWS 管理控制台管理凭证或从管理员处获取这些凭证。然后，您可以在 Toolkit for Visual Studio 显示的**用于 AWS CodeCommit 的 Git 凭证**对话框中输入它们。

![\[用于 AWS CodeCommit 的 Git 凭证\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/codecommit_manualentry-300x267.png)


现在 Git 的凭证已可用，新存储库的克隆操作将继续 (请查看 Team Explorer 中操作的进度指示)。如果您选择应用默认 `.gitignore` 文件，则会使用注释“Initial Commit”将其提交到存储库。

这是在 Team Explorer 中设置凭证和创建存储库所需的全部操作。一旦准备好所需的凭证，以后您在创建新存储库时就只会看到**创建新 AWS CodeCommit 存储库**对话框本身。

## 克隆存储库
<a name="cloning-a-repository"></a>

要克隆现有存储库，请返回到 Team Explorer 中 AWS CodeCommit 的连接面板。单击**克隆**链接以打开**克隆 AWS CodeCommit 存储库**对话框，然后选择要克隆的存储库以及您要在磁盘上放置该存储库的位置。

![\[克隆 AWS CodeCommit 存储库\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/codecommit_clone-300x279.png)


选择区域后，Toolkit for Visual Studio 将查询服务以发现该区域中可用的存储库，并将其显示在对话框的中央列表部分。还将显示每个存储库的名称和可选说明。您可以重新排序列表，将其按存储库名称或上次修改日期，以升序或降序排序。

在您选择存储库之后，您可以选择要克隆到的位置。这会默认为在 Team Explorer 中其他插件使用的相同存储库位置，不过您可以浏览或输入任何其他位置。默认情况下，存储库名称作为后缀添加到选定的路径。但是，如果您希望使用特定路径，只需在选择文件夹之后编辑文本框。单击 **OK (确定)** 时文本框中的任何文本将成为文件夹，您可在其中查找克隆的存储库。

选择了存储库和文件夹位置之后，您可以单击 **OK (确定)** 以继续克隆操作。就像创建存储库一样，您可以在 Team Explorer 中查看报告的克隆操作进度。

## 使用存储库
<a name="working-with-repositories"></a>

当您克隆或创建存储库时，请注意在 Team Explorer 中连接面板的操作链接下列出的本地存储库的连接。这些条目为您提供了一种简便的方法访问存储库以浏览内容。只需右键单击存储库并选择 **Browse in Console (在控制台中浏览)**。

![\[在控制台中浏览\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/codecommit_browseinconsole-300x115.png)


您也可以使用 **Update Git Credentials (更新 Git 凭证)** 更新与凭证配置文件关联的已存储 Git 凭证。如果您已轮换凭证，这非常有用。该命令将打开**用于 AWS CodeCommit 的 Git 凭证**对话框，您可以在其中输入或导入新凭证。

存储库上的 Git 操作均按您的预期工作。您可以发出本地提交，并在准备好共享时，使用 Team Explorer 中的“Sync”选项。由于 Git 凭证已存储在本地并与我们的已连接 AWS 凭证配置文件关联，系统不会提示我们再次为 AWS CodeCommit remote 操作提供凭证。

# 在 Visual Studio 中使用 CodeArtifact
<a name="using-aws-codeartifact"></a>

AWS CodeArtifact 是一项完全托管的构件存储库服务，可让组织轻松安全地存储和共享用于应用程序开发的软件包。您可以将 CodeArtifact 与常用的构建工具和程序包管理器配合使用，例如 NuGet 和.NET Core CLI 以及 Visual Studio。您还可以将 CodeArtifact 配置为从外部公共存储库（例如 [NuGet.org](https://www.nuget.org/)）提取程序包。

在 CodeArtifact 中，您的程序包存储在存储库中，而后者存储在域中。AWS Toolkit for Visual Studio 简化了 Visual Studio 使用 CodeArtifact 存储库时的配置，从而可以轻松地在 Visual Studio 中直接使用 CodeArtifact 和 Nuget.org 中的程序包。

## 将您的 CodeArtifact 存储库添加为 NuGet 程序包来源
<a name="add-repo-as-nuget-package-source"></a>

要使用来自 CodeArtifact 的程序包，您需要在 Visual Studio 的 **NuGet Package Manager** 中将存储库作为可打包来源添加

 **将您的存储库添加为程序包来源** 

1. 在 AWS 各区服务浏览器中，导航到 **AWS CodeArtifact** 节点中的存储库。

1. 打开要添加的存储库的上下文（右键单击）菜单，然后选择**复制 NuGet 来源端点**。

1. 在**工具 > 选项**菜单中，导航到 **NuGet Package Manager** 节点下的**程序包来源**。

1. 在**程序包来源**中，选择加号（**\$1**），编辑名称，然后将之前复制的 NuGet 来源端点 URL 粘贴到**来源**字段中。

1. 选中新添加的程序包来源旁的复选框以启用该来源。
**注意**  
我们建议在 CodeArtifact 中添加指向 **NuGet.org** 的外部连接，并在 Visual Studio 中禁用 **nuget.org** 程序包来源。使用外部连接时，从 **NuGet.org** 提取的所有依赖项都存储在 CodeArtifact 中。如果 **NuGet.org** 因任何原因出现故障，您需要的程序包仍然可用。有关外部连接的更多信息，请参阅《AWS CodeArtifact User Guide》**中的 [Add an external connection](https://docs.aws.amazon.com/codeartifact/latest/ug/external-connection.html)。

1. 选择**确定**以关闭菜单。

有关将 CodeArtifact 与 Visual Studio 配合使用的更多信息，请参阅《AWS CodeArtifact User Guide》**中的 [Use CodeArtifact with Visual Studio](https://docs.aws.amazon.com/codeartifact/latest/ug/nuget-visual-studio.html)。

# 从 AWS 各区服务浏览器使用 Amazon RDS
<a name="rds-tkv"></a>

Amazon Relational Database Service（Amazon RDS）服务使您可以在云中预置和管理 SQL 关系数据库系统。Amazon RDS 支持以下三种类型的数据库系统：
+ MySQL Community Edition
+ Oracle Database Enterprise Edition
+ Microsoft SQL Server（Express、Standard 或 Web 版本）

有关更多信息，请参阅 [Amazon RDS 用户指南](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/)。

此处讨论的很多功能也可通过适用于 Amazon RDS 的 [AWS 管理控制台](https://console.aws.amazon.com/rds/home)获得。

**Topics**
+ [启动 Amazon RDS 数据库实例](rds-launch-instance.md)
+ [在 RDS 实例中创建 Microsoft SQL Server 数据库](rds-launch-instance-sql.md)
+ [Amazon RDS 安全组](rds-security-groups.md)

# 启动 Amazon RDS 数据库实例
<a name="rds-launch-instance"></a>

利用 AWS 各区服务浏览器，您可以启动 Amazon RDS 支持的任何数据库引擎的实例。以下演练显示启动 Microsoft SQL Server Standard Edition 的实例的用户体验，但此用户体验对于所有支持的引擎均类似。

 **启动 Amazon RDS 实例** 

1. 在 AWS 各区服务浏览器中，打开 **Amazon RDS** 节点的上下文（右键单击）菜单，然后选择**启动数据库实例**。  
![\[AWS Explorer window showing Amazon RDS with context menu option to Launch DB Instance.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/rds-db-launch-menu.png)

   或者，在 **DB Instances (数据库实例)** 选项卡上，选择 **Launch DB Instance (启动数据库实例)**。  
![\[Database instances list showing multiple DB instances with their status and details.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/rds-db-launch-dashboard.png)

1. 在 **DB Engine Selection (数据库引擎选择)** 对话框中，选择要启动的数据库引擎的类型。在此演练中，选择 Microsoft SQL Server Standard Edition (sqlserver-se)，然后选择 **Next (下一步)**。  
![\[DB Engine Selection dialog showing options for Oracle and Microsoft SQL Server databases.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/rds-db-instance-db-engine.png)

1. 在 **DB Engine Instance Options (数据库引擎实例选项)** 对话框中，选择配置选项。

   在 **DB Engine Instance Options and Class (数据库引擎实例选项和类)** 部分中，您可以指定以下设置。

    *许可模式*   
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/rds-launch-instance.html)

   许可证模型因数据库引擎的类型而异。引擎类型许可证 Microsoft SQL Server 附带许可 MySql general-public-license Oracle bring-your-own-license  
** *DB Instance Version (数据库实例版本* **  
选择您要使用的数据库引擎的版本。如果仅支持一个版本，则将为您选择该版本。  
** *数据库实例类*: **  
选择数据库引擎的实例类。实例类的定价有所差异。有关更多信息，请参阅 [Amazon RDS 定价](https://aws.amazon.com/rds/pricing)。  
** *Perform a multi AZ deployment (执行多可用区部署* **  
选择此选项可创建多可用区部署，以增强数据持久性和可用性。Amazon RDS 可在不同的可用区中预置和维护数据库的备用副本，以确保发生计划内或计划外停机时自动执行失效转移。有关多可用区部署的定价信息，请参阅 [Amazon RDS](https://aws.amazon.com/rds) 详细信息页面的定价部分。Microsoft SQL Server 不支持此选项。  
** *Upgrade minor versions automatically (自动升级次要版本* **  
选择此选项可让 AWS 为您在 RDS 实例上自动执行次要版本更新。

在 **RDS Database Instance (RDS 数据库实例)** 部分中，您可以指定以下设置。

** *分配的存储空间* **    
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/rds-launch-instance.html)
最小和最大的分配存储取决于数据库引擎的类型。引擎最小值 (GB) 最大值 (GB) MySQL 5 1024 Oracle Enterprise Edition 10 1024 Microsoft SQL Server Express Edition 30 1024 Microsoft SQL Server Standard Edition 250 1024 Microsoft SQL Server Web Edition 30 1024

** *DB Instance Identifier* **  
为数据库实例指定名称。此名称不区分大小写。它将在 AWS 各区服务浏览器中以小写形式显示。

** *Master User Name (主用户名* **  
键入数据库实例的管理员的姓名。

** *主用户密码* **  
键入数据库实例的管理员的密码。

** *确认密码* **  
再次键入密码以验证其是否正确。

![\[DB Engine Instance Options window for configuring SQL Server database settings in AWS RDS.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/rds-db-instance-engine-options.png)


1. 在 **Additional Options (其他选项)** 对话框中，您可以指定以下设置。  
** *Database Port* **  
这是实例将用于在网络上进行通信的 TCP 端口。如果您的计算机通过防火墙访问 Internet，请将此值设置为您的防火墙允许流量通过的端口。  
** *可用区* **  
如果您希望在您区域的某个特定可用区中启动实例，请使用此选项。您指定的数据库实例可能不会在某个给定区域的所有可用区中可用。  
** *RDS Security Group (RDS 安全组* **  
选择要与您的实例关联的 RDS 安全组。RDS 安全组指定允许访问您的实例的 IP 地址、Amazon EC2 实例和 AWS 账户。有关 RDS 安全组的更多信息，请参阅 [Amazon RDS 安全组](rds-security-groups.md#tkv-amazon-rds-security-groups)。Toolkit for Visual Studio 尝试确定您的当前 IP 地址并提供用于将此地址添加到与实例关联的安全组的选项。但是，如果您的计算机通过防火墙访问 Internet，则 Toolkit 为您的计算机生成的 IP 地址可能不准确。若要确定要使用的 IP 地址，请咨询您的系统管理员。  
** *数据库参数组* **  
（可选）从此下拉列表中，选择要与您的实例关联的数据库参数组。利用数据库参数组，您可以更改实例的默认配置。有关更多信息，请转到 [Amazon Relational Database Service 用户指南](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithParamGroups.html)和[本文章](https://aws.amazon.com/articles/2935)。

   您在此对话框上指定设置之后，选择 **Next (下一步)**。  
![\[Launch DB Instance dialog showing database port, availability zone, and security group options.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/rds-db-instance-add-options.png)

1. 利用**备份和维护**对话框，您可以指定 Amazon RDS 是否应对实例进行备份，如果备份，还可指定备份应保留多长时间。您还可以指定备份应发生的时间范围。

   此对话框还使您能够指定是否希望 Amazon RDS 在实例上执行系统维护。维护包括常规补丁和次要版本升级。

   您为系统维护指定的时间范围不得与为备份指定的时间范围重叠。

   选择**下一步**。  
![\[Backup and maintenance options interface for DB instance with automatic backup settings.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/rds-db-instance-back-up-maintenance.png)

1. 利用向导中的最后一个对话框，您可以检查实例的设置。如果需要修改设置，请使用 **Back (返回)** 按钮。如果所有设置均正确，请选择 **Launch (启动)**。

# 在 RDS 实例中创建 Microsoft SQL Server 数据库
<a name="rds-launch-instance-sql"></a>

Microsoft SQL Server 的设计方式是，在启动 Amazon RDS 实例后，您需要在 RDS 实例中创建 SQL Server 数据库。

有关如何创建 Amazon RDS 实例的信息，请参阅[启动 Amazon RDS 数据库实例](rds-launch-instance.md#tkv-launch-rds-instance)。

 **创建 Microsoft SQL Server 数据库** 

1. 在 AWS 各区服务浏览器中，为对应于 Microsoft SQL Server RDS 实例的节点打开上下文（右键单击）菜单，然后选择**创建 SQL Server 数据库**。  
![\[AWS Explorer context menu for RDS instance showing options to create or modify database.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/rds-ms-sql-create-db.png)

1. 在 **Create SQL Server Database (创建 SQL Server 数据库)** 对话框中，键入您在创建 RDS 实例时指定的密码，键入 Microsoft SQL Server 数据库的名称，然后选择 **OK (确定)**。  
![\[Dialog box for creating SQL Server database with fields for DB instance, username, password, and database name.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/rds-spec-ms-sql-db.png)

1. Toolkit for Visual Studio 创建 Microsoft SQL Server 数据库并将其添加到 Visual Studio 服务器浏览器。  
![\[Server Explorer window showing database structure with tables, views, and other components.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/rds-sql-svr-explorer.png)

# Amazon RDS 安全组
<a name="rds-security-groups"></a>

Amazon RDS 安全组使您能够管理对 Amazon RDS 实例的网络访问。利用安全组，您可以使用 CIDR 表示法指定一系列 IP 地址，只有来自这些地址的网络流量才能被您的 Amazon RDS 实例接受。

尽管 Amazon RDS 安全组与 Amazon EC2 安全组的工作方式相似，但仍有一些差别。您可将 EC2 安全组添加到 RDS 安全组。作为 EC2 安全组成员的任何 EC2 实例随后都能访问作为 RDS 安全组成员的 RDS 实例。

有关 Amazon RDS 安全组的更多信息，请参阅 [RDS 安全组](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.RDSSecurityGroups.html)。有关 Amazon EC2 安全组的更多信息，请参阅 [EC2 用户指南](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html)。

## 创建 Amazon RDS 安全组
<a name="tkv-create-an-amazon-rds-security-group"></a>

您可以使用 Toolkit for Visual Studio 创建 RDS 安全组。如果您使用 AWS Toolkit 启动 RDS 实例，该向导将允许您指定要用于您的实例的 RDS 安全组。您可在启动该向导前使用以下步骤创建该安全组。

**创建 Amazon RDS 安全组**

1. 在 AWS 各区服务浏览器中，展开 **Amazon RDS** 节点，打开**数据库安全组**子节点的上下文（右键单击）菜单，然后选择**创建**。  
![\[AWS Explorer window showing Amazon RDS expanded with DB Security Groups context menu options.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/rds-sg-create-menu.png)

   或者，在 **Security Groups (安全组)** 选项卡上，选择 **Create Security Group (创建安全组)**。如果此选项卡未显示，则打开 **DB Security Groups (数据库安全组)** 子节点的上下文（右键单击）菜单，然后选择 **View (查看)**。  
![\[Database security groups interface showing options to create, delete, and refresh groups.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/rds-sg-create-dashboard.png)

1. 在 **Create Security Group (创建安全组)** 对话框中，键入该安全组的名称和描述，然后选择 **OK (确定)**。  
![\[Dialog box for creating a security group with fields for name and description.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/rds-sg-create.png)

## 设置 Amazon RDS 安全组的访问权限
<a name="tkv-set-access-permissions-for-rds-security-group"></a>

默认情况下，新的 Amazon RDS 安全组不提供网络访问权限。要启用对使用该安全组的 Amazon RDS 实例的访问，请使用以下步骤设置其访问权限。

**设置 Amazon RDS 安全组的访问权限**

1. 在 **Security Groups (安全组)** 选项卡上，从列表视图中选择该安全组。如果您的安全组未显示在列表中，请选择 **Refresh (刷新)**。如果您的安全组仍未显示在列表中，请验证您正在查看的列表是否位于正确的 AWS 区域中。AWS Toolkit 中的**安全组**选项卡是特定于区域的。

   如果未显示任何**安全组**选项卡，请在 AWS 各区服务浏览器中，打开**数据库安全组**子节点的上下文（右键单击）菜单，然后选择**查看**。

1. 选择 **Add Permission**。  
![\[Security groups interface showing default and RDS groups with options to add or delete permissions.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/rds-sg-add-permission.png)

    **安全组**选项卡上的**添加权限**按钮

1. 在 **Add Permission (添加权限)** 对话框中，您可以使用 CIDR 表示法指定可访问您的 RDS 实例的 IP 地址，或者指定可访问您的 RDS 实例的 EC2 安全组。当选择了 **EC2 安全组**时，您可指定与具有访问权限的 AWS 账户关联的所有 EC2 实例的访问权限，也可从下拉列表中选择 EC2 安全组。  
![\[Add Permission dialog with options for CIDR/IP or EC2 Security Group access to RDS instance.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/rds-sg-cidr-ec2.png)

   AWS Toolkit 将尝试确定您的 IP 地址并使用相应的 CIDR 规范自动填充对话框。但是，如果您的计算机是通过防火墙访问 Internet 的，则由 Toolkit 确定的 CIDR 可能不准确。

# 从 AWS 各区服务浏览器使用 Amazon SimpleDB
<a name="tkv-simpleDB"></a>

AWS 各区服务浏览器显示了与活动 AWS 账户关联的所有 Amazon SimpleDB 域。在 AWS 各区服务浏览器中，您可以创建或删除 Amazon SimpleDB 域。

![\[AWS Explorer showing Amazon SimpleDB domains with options to create, refresh, or delete.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/tkv-simpleDB-explorer.png)


 *执行查询并编辑结果* 

AWS 各区服务浏览器还可以显示 Amazon SimpleDB 域的网格视图，您可以从中查看该域中的项目、属性和值。您可以执行查询，以便仅显示该域的一部分项目。通过双击单元格，您可以编辑该项目对应属性的值。您还可以向域添加新属性。

此处显示的域来自于 适用于 .NET 的 AWS SDK 包含的 Amazon SimpleDB 示例。

![\[Database table showing sample items with attributes like name, category, color, and size.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/tkv-simpleDB-grid-view.png)


要执行查询，请在网格视图顶部的文本框中编辑查询，然后选择 **Execute (执行)**。将筛选此视图以仅显示与查询匹配的项目。

![\[SQL query execution interface with filtered results showing item details.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/tkv-simpleDB-query.png)


要编辑与某个属性关联的值，请双击对应的单元格，编辑值，然后选择 **Commit Changes (提交更改)**。

 *添加属性* 

要添加属性，请在视图顶部选择 **Add Attribute (添加属性)**。

![\[Dialog box for adding an attribute named "Discount" with a note about data commitment.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/tkv-simpleDB-new-attr-dlg.png)


要使属性成为域的一部分，您必须将属性的一个值添加到至少一个项目，然后选择 **Commit Changes (提交更改)**。

![\[Database query result showing one item with "Siamese" color and "Cathair Sweater" name.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/tkv-simpleDB-new-attr-commit.png)


 *为查询结果分页* 

视图底部有三个按钮。

![\[Three buttons showing rewind, fast forward, and refresh icons.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/tkv-simpleDB-paginate-export.png)


前两个按钮为查询结果提供分页。要额外显示一页结果，请选择第一个按钮。要额外显示十页结果，请选择第二个按钮。在此上下文中，一个页面等于 100 行或等于 LIMIT 值指定的结果数（如果该值包含在查询中）。

 *导出到 CSV* 

最后一个按钮将当前结果导出到 CSV 文件。

# 从 AWS 各区服务浏览器使用 Amazon SQS
<a name="tkv-sqs"></a>

Amazon Simple Queue Service（Amazon SQS）是一项灵活的队列服务，用于实现软件应用程序中的不同执行进程之间的消息传递。Amazon SQS 队列位于 AWS 基础设施中，但传递消息的进程可能位于本地、Amazon EC2 实例上或这些实例的某种组合上。Amazon SQS 非常适合用于协调跨多台计算机的工作分配。

利用 Toolkit for Visual Studio，您可以查看与活动账户关联的 Amazon SQS 队列、创建并删除队列以及通过队列发送消息。（“活动账户”是指 AWS 各区服务浏览器中的选定账户。）

有关 Amazon SQS 的更多信息，请参阅 AWS 文档中的 [SQS 简介](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/IntroductionArticle.html)。

## 创建队列
<a name="tkv-sqs-create-queue"></a>

您可从 AWS 各区服务浏览器创建 Amazon SQS 队列。队列的 ARN 和 URL 将基于活动账户的账号和您在创建队列时指定的队列名称。

 *创建队列* 

1. 在 AWS 各区服务浏览器中，打开 **Amazon SQS** 节点的上下文（右键单击）菜单，然后选择**创建队列**。

1. 在 **Create Queue (创建队列)** 对话框中，指定队列名称、默认可见性超时和默认传递延迟。默认可见性超时和默认传递延迟以秒为单位指定。默认可见性超时是在某个给定进程已获得消息后该消息将对潜在接收进程不可见的时间量。默认传递延迟是从发送消息到消息首次对潜在接收进程可见的时间量。

1. 选择**确定**。新队列将显示为 **Amazon SQS** 节点下的一个子节点。

## 删除队列
<a name="tkv-sqs-delete-queue"></a>

您可以从 AWS 各区服务浏览器删除现有队列。如果删除了某个队列，与该队列关联的所有消息都不再可用。

 *删除队列* 

1. 在 AWS 各区服务浏览器中，打开要删除的队列的上下文（右键单击）菜单，然后选择**删除**。

## 管理队列属性
<a name="tkv-sqs-manage-queue"></a>

您可以查看和编辑 AWS 各区服务浏览器中显示的任何队列的属性，还可以从此属性视图向队列发送消息。

 *管理队列属性* 
+ 在 AWS 各区服务浏览器中，打开要管理其属性的队列的上下文（右键单击）菜单，然后选择**查看队列**。

  在队列属性视图中，您可以编辑可见性超时、最大消息大小、消息保留期和默认传递延迟。可在发送消息时覆盖默认传递延迟。在以下屏幕截图中，模糊化的文字是队列 ARN 和 URL 的账号组成部分。

![\[AWS SQS queue details showing configuration settings and message sampling table.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/tkv-sqs-queue-properties.png)


## 向队列发送消息
<a name="tkv-sqs-message-send"></a>

在队列属性视图中，您可以向队列发送消息。

 *发送邮件* 

1. 在队列属性视图的顶部，选择 **Send (发送)** 按钮。

1. 键入消息。（可选）输入将覆盖队列的默认传递延迟的传递延迟。在以下示例中，我们已使用值 240 秒覆盖默认延迟。选择**确定**。  
![\[Send Message dialog box with message body input and delivery delay option.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/tkv-sqs-send-message.png)

1. 等待约 240 秒（4 分钟）。消息将显示在队列属性视图的 **Message Sampling (消息采样)** 部分中。  
![\[Queue properties view showing message details, including timestamp and sampling information.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/tkv-sqs-message-sent.png)

   队列属性视图中的时间戳是您选择 **Send (发送)** 按钮的时间。此时间不包含延迟。因此，消息显示在队列中并对接收方可用的时间可能晚于此时间戳。此时间戳以计算机的本地时间显示。

# 身份和访问管理
<a name="tkv-iam"></a>

AWS Identity and Access Management (IAM) 使您能够更安全地管理对 AWS 账户 和资源的访问权限。使用 IAM，您可以在主用户（*根*）中创建多个用户 AWS 账户。这些用户可以有自己的凭证：密码、访问密钥 ID 和秘密密钥。但是，所有 IAM 用户都共享单个账号。

您可以通过将 IAM policy 附加到用户来管理每个 IAM 用户的资源访问级别。例如，您可以将策略附加到一个 IAM 用户，该用户提供了对您的账户中的 Amazon S3 服务和相关资源的访问权限，但未提供对任何其他服务或资源的访问权限。

如要实现更有效的访问管理，您可以创建 IAM 组，即若干用户的集合。当您将一个策略附加到组时，它将影响作为该组成员的所有用户。

除了在用户和组级别管理权限之外，IAM 还支持 IAM 角色的概念。与用户和组相似，您可以将策略附加到 IAM 角色。然后，您可以将 IAM 角色与 Amazon EC2 实例关联。在 EC2 实例上运行的应用程序可以 AWS 使用 IAM 角色提供的权限进行访问。有关将 IAM 角色与 Toolkit 一起使用的更多信息，请参阅[创建 IAM 角色](#create-an-iam-role-tkv)。有关 IAM 的更多信息，请参阅《[IAM 用户指南](https://docs.aws.amazon.com/IAM/latest/UserGuide/Welcome.html)》。

## 创建和配置 IAM 用户
<a name="tkv-create-an-iam-user"></a>

IAM 用户允许您向其他人授予访问您的权限 AWS 账户。由于您能够将策略附加到 IAM 用户，因此您可以精确地限制 IAM 用户可访问的资源以及他们可对这些资源执行的操作。

作为最佳实践，所有访问的用户都 AWS 账户 应以 IAM 用户身份进行访问，即使是账户的所有者也是如此。这确保了在一个 IAM 用户的凭证泄露时只需停用该用户的凭证。不需要停用或更改账户的根凭证。

在 Toolkit for Visual Studio 中，您可以将 IAM policy 附加到用户或将用户分配到组，由此向 IAM 用户分配权限。分配到某个组的 IAM 用户将从附加到该组的策略派生其权限。有关更多信息，请参阅[创建 IAM 组](#create-an-iam-group-tkv)和[将 IAM 用户添加到 IAM 组](#add-an-iam-user-to-an-iam-group-tkv)。

您还可以从 Visual Studio 的 Toolkit for Visual Studio 中为 IAM 用户生成 AWS 证书（访问密钥 ID 和密钥）。有关更多信息，请参阅[为 IAM 用户生成凭证](#generate-credentials-for-an-iam-user-tkv) 

![\[Dialog box for generating AWS credentials with options to create access key and download.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/inline-refresh-button.png)


适用于 Visual Studio 的 Toolkit 支持指定用于通过 AWS Explorer 访问服务的 IAM 用户证书。由于 IAM 用户通常无法完全访问所有 Amazon Web Services，因此 AWS Explorer 中的某些功能可能不可用。如果您在活跃账户是 IAM 用户时使用 AWS Explorer 更改资源，然后将活跃账户切换到根账户，则在您刷新 AWS Explorer 中的视图之前，更改可能不可见。要刷新该视图，请选择刷新 () 按钮。

有关如何从中配置 IAM 用户的信息 AWS 管理控制台，请转到 IAM [用户指南中的使用用户和群组](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_WorkingWithGroupsAndUsers.html)。

 *创建 IAM 用户* 

1. 在 AWS 资源管理器中，展开**AWS Identity and Access Management**节点，打开 “**用户**” 的上下文（右键单击）菜单，然后选择 “**创建用户**”。

1. 在**创建用户**对话框中，为 IAM 用户键入名称并选择**确定**。这是 IAM [友好名称](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_Identifiers.html)。有关 IAM 用户的名称限制信息，请参阅《[IAM 用户指南](https://docs.aws.amazon.com/IAM/latest/UserGuide/LimitationsOnEntities.html)》。  
![\[Create User dialog box with Name field and OK/Cancel buttons.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/iam-user-create-dlg.png)

新用户将作为子节点显示在 **AWS Identity and Access Management** 节点的**用户**下。

有关如何创建策略并将其附加到用户的信息，请参阅[创建 IAM 策略](#tkv-create-an-iam-policy)。

## 创建 IAM 组
<a name="create-an-iam-group-tkv"></a>

组提供了一个将 IAM policy 应用于用户集合的方法。有关如何管理 IAM 用户和组的信息，请参阅《IAM 用户指南》中的[使用用户和组](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_WorkingWithGroupsAndUsers.html)。

 *创建 IAM 组* 

1. 在 AWS Explorer 中，在 “**身份和访问管理**” 下，打开**群**组的上下文（右键单击）菜单，然后选择 “**创建群组**”。

1. 在**创建组**对话框中，为 IAM 组键入名称并选择**确定**。  
![\[Dialog box for creating a group with a name field and OK and Cancel buttons.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/iam-group-create-dlg.png)

新 IAM 组将显示在**身份和访问管理**的**组**子节点下。

有关创建策略并将其附加到 IAM 组的信息，请参阅[创建 IAM policy](#tkv-create-an-iam-policy)。

## 将 IAM 用户添加到 IAM 组
<a name="add-an-iam-user-to-an-iam-group-tkv"></a>

作为 IAM 组成员的 IAM 用户将从附加到该组的策略派生访问权限。IAM 组的用途是简化对一系列 IAM 用户的权限的管理。

有关附加到某个 IAM 组的策略如何与附加到作为该 IAM 组成员的 IAM 用户的策略交互的信息，请参阅[《IAM 用户指南》中的“管理 IAM policy”](https://docs.aws.amazon.com/IAM/latest/UserGuide/ManagingPolicies.html)。

在 AWS Explorer 中，您可以从 “用户” 子节点（而不是群组）子节点将 IAM **用户**添加到 IAM **群组**。

 *将 IAM 用户添加到 IAM 组* 

1. 在 AWS Explorer 中，在 “**身份和访问管理**” 下，打开 “**用户**” 的上下文（右键单击）菜单，然后选择 **“编辑”**。  
![\[User interface for managing IAM groups, showing available and assigned groups for myIAMUser.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/iam-group-assign.png)

1. **组**选项卡的左侧窗格显示了可用 IAM 组。右侧窗格显示了已包含指定 IAM 用户的组。

   要将 IAM 用户添加到某个组，请在左侧窗格中，选择该 IAM 组，然后选择 **>** 按钮。

   要从某个组中移除 IAM 用户，请在右侧窗格中，选择该 IAM 组，然后选择 **<** 按钮。

   要将 IAM 用户添加到所有 IAM 组，请选择 **>>** 按钮。同样，要从所有组中移除 IAM 用户，请选择 **<<** 按钮。

   要选择多个组，请按顺序选择它们。您不需要按住 Ctrl 键。要从您的选项中清除某个组，只需再次选择它。

1. 完成向 IAM 组分配 IAM 用户后，选择**保存**。

## 为 IAM 用户生成凭证
<a name="generate-credentials-for-an-iam-user-tkv"></a>

利用 Toolkit for Visual Studio，您可以生成用于对 AWS进行 API 调用的访问密钥 ID 和秘密密钥。这些密钥也可指定用于通过 Toolkit 访问 Amazon Web Services。有关如何指定与 Toolkit 配合使用的凭证的更多信息，请参阅凭证。有关如何安全处理凭证的更多信息，请参阅[管理 AWS 访问密钥的最佳实践](https://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html)。

Toolkit 无法用于为 IAM 用户生成密码。

 *为 IAM 用户生成凭证* 

1. 在 AWS 资源管理器中，打开 IAM 用户的上下文（右键单击）菜单，然后选择**编辑**。  
![\[IAM 用户 details window showing Access Keys tab with two active keys and their creation dates.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/iam-user-creds-list.png)

1. 要生成凭证，请在 **Access Keys (访问密钥)** 选项卡上，选择 **Create (创建)**。

   您只能为每个 IAM 用户生成两组凭证。如果您已经有两组凭证并需要再创建一组凭证，则必须删除现有的凭证组之一。  
![\[Access Keys dialog showing Access Key ID and Secret Access Key fields with an option to save locally.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/iam-user-creds-create.png)

   如果您希望 Toolkit 将私有访问密钥的加密副本保存到本地驱动器，请选择 “**将私有访问密钥保存在本地”。 AWS 仅在创建时返回私有访问密钥**。您还可以从该对话框中复制秘密访问密钥并将其保存在安全的位置。

1. 选择**确定**。

生成凭证后，您可以从 **Access Keys (访问密钥)** 选项卡查看它们。如果您选择了让 Toolkit 本地保存私有密钥的选项，该密钥将显示在此处。

![\[Access Keys tab showing an active key with ID, status, creation date, and secret key options.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/iam-user-show-creds.png)


如果您自行保存了私有密钥并且希望 Toolkit 保存它，请在 **Secret Access Key (秘密访问密钥)** 框中，键入秘密访问密钥，然后选择 **Save the secret access key locally (在本地保存秘密访问密钥)**。

要停用凭证，请选择 **Make Inactive (转为非活动)**。（如果您怀疑凭证已泄露，则可以这样做。如果您得到凭证安全的保证，则可以重新激活凭证。）

## 创建 IAM 角色
<a name="create-an-iam-role-tkv"></a>

Toolkit for Visual Studio 支持创建和配置 IAM 角色。和使用用户和组一样，您可以将策略附加到 IAM 角色。然后，您可以将 IAM 角色与 Amazon EC2 实例关联。与实例的关联通过 EC2 实例配置文件进行处理，*实例配置文件*是角色的逻辑容器。在 EC2 实例上运行的应用程序将自动获得与 IAM 角色关联的策略所指定的访问权限级别。即使应用程序未指定其他 AWS 凭据，也是如此。

例如，您可以创建角色并将仅限于访问 Amazon S3 的策略附加到该角色。将此角色与 EC2 实例关联后，您可以在该实例上运行应用程序，该应用程序将有权访问 Amazon S3，但不能访问任何其他服务或资源。这种方法的优点是，您无需担心在 EC2 实例上安全地传输和存储 AWS 证书。

有关 IAM 角色的更多信息，请参阅[《IAM 用户指南》中的“使用 IAM 角色”](https://docs.aws.amazon.com/IAM/latest/UserGuide/WorkingWithRoles.html)。有关 AWS 使用与亚马逊 EC2 实例关联的 IAM 角色进行访问的程序的示例，请参阅 [Java](https://docs.aws.amazon.com//sdk-for-java/latest/developer-guide/ec2-iam-roles.html)、[.NET](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-hosm.html)、[PHP](https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/guide_credentials_assume_role.html) 和 Ruby 的 AWS 开发者指南（[使用 IAM 设置证书](https://docs.aws.amazon.com/sdk-for-ruby/latest/developer-guide/setup-config.html#aws-ruby-sdk-credentials-iam)、[创建 IAM 角色](https://docs.aws.amazon.com/sdk-for-ruby/latest/developer-guide/iam-example-create-role.html)和[使用 IAM 策略](https://docs.aws.amazon.com/sdk-for-ruby/latest/developer-guide/iam-example-working-with-policies.html)）。

 *创建 IAM 角色* 

1. 在 AWS Explorer 中，在 “**身份和访问管理**” 下，打开 “**角色**” 的上下文（右键单击）菜单，然后选择 “**创建角色**”。

1. 在**创建角色**对话框中，为 IAM 角色键入名称并选择**确定**。  
![\[Dialog box for creating a role with a name field and OK/Cancel buttons.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/iam-role-create-dlg.png)

新 IAM 角色将显示在**身份和访问管理**中的**角色**下方。

有关如何创建策略并将其附加到角色的信息，请参阅[创建 IAM 策略](#tkv-create-an-iam-policy)。

## 创建 IAM 策略
<a name="tkv-create-an-iam-policy"></a>

策略是 IAM 的基础。策略可与 IAM *实体*（如用户、组或角色）关联。策略指定为用户、组或角色启用的访问级别。

 *创建 IAM 策略* 

在 AWS Explorer 中，展开节**AWS Identity and Access Management**点，然后展开要将策略附加到的实体类型（**群组**、**角色**或**用户**）的节点。例如，打开某个 IAM 角色的上下文菜单并选择**编辑**。

与该角色关联的选项卡将出现在 AWS 资源管理器中。选择 **Add Policy (添加策略)** 链接。

在 **New Policy Name (新策略名称)** 对话框中，键入策略的名称（例如，s3-access）。

![\[Dialog box for entering a new policy name, with "s3-access" typed in the input field.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/iam-policy-create-dlg.png)


在策略编辑器中，添加策略语句以指定向角色提供的访问权限级别（在本示例中为 winapp-instance-role -2）。在本示例中，策略提供了对 Amazon S3 的完全访问权限，但未提供对任何其他资源的访问权限。

![\[Policy editor interface showing allowed actions for Amazon S3 in the winapp-instance-role-2 role.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/iam-policy-specify.png)


若要获得更精确的访问控制，您可以在策略编辑器中展开子节点以允许或拒绝与 Amazon Web Services 关联的操作。

当您编辑完策略时，请选择 **Save (保存)** 链接。

# AWS Lambda
<a name="lambda-index"></a>

使用开发和部署基于.NET 内核的 C\$1 Lambda 函数。 AWS Toolkit for Visual Studio AWS Lambda 是一项计算服务，允许您在不预置或管理服务器的情况下运行代码。Visual Studio 工具包包括 Visual Studio 的 AWS Lambda .NET 核心项目模板。

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

有关 .NET Core 的更多信息，请参阅 Microsoft [.NET Core](https://docs.microsoft.com/en-us/dotnet/articles/core/) 指南。有关适用于 Windows、macOS 和 Linux 平台的 .NET Core 先决条件和安装说明，请参阅 [.NET Core 下载](https://www.microsoft.com/net/download/core)。

以下主题介绍如何 AWS Lambda 使用适用于 Visual Studio 的 Toolkit。

**Topics**
+ [基础 AWS Lambda 项目](lambda-creating-project-in-visual-studio.md)
+ [创建 Docker 镜像的基本 AWS Lambda 项目](lambda-creating-project-docker-image.md)
+ [教程：使用以下方法构建和测试无服务器应用程序 AWS Lambda](lambda-build-test-severless-app.md)
+ [教程：创建 Amazon Rekognition Lambda 应用程序](lambda-rekognition-example.md)
+ [教程：使用 Amazon 日志框架和 AWS Lambda 创建应用程序日志](cw-log-frameworks.md)

# 基础 AWS Lambda 项目
<a name="lambda-creating-project-in-visual-studio"></a>

您可以使用 AWS Toolkit for Visual Studio中提供的 Microsoft .NET Core 项目模板来创建 Lambda 函数。

## 创建 Visual Studio .NET Core Lambda 项目
<a name="create-a-visual-studio-net-core-lam-project"></a>

您可以使用 Lambda Visual Studio 模板和蓝图来帮助加速项目初始化。Lambda 蓝图包含预先编写好的函数，它们简化了创建灵活项目基础的过程。

**注意**  
Lambda 服务对不同程序包类型有数据限制。有关数据限制的详细信息，请参阅《AWS Lambda 用户指南》**中的 [Lambda 配额](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html)主题。

**在 Visual Studio 中创建 Lambda 项目**

1. 在 Visual Studio 中，展开**文件**菜单，展开**新建**，然后选择**项目**。

1. 在**新建项目**对话框中，将**语言**、**平台**和**项目类型**下拉框都设置为“全部”，然后在**搜索**字段中键入 **aws lambda**。选择 **AWS Lambda 项目（.NET Core - C＃）**模板。

1. 在**名称**字段中输入 **AWSLambdaSample**，指定所需的文件**位置**，然后选择**创建**以继续。

1. 在**选择蓝图**页面上，选择**空函数**蓝图，然后选择**完成**以创建 Visual Studio 项目。

## 复查项目文件
<a name="review-the-project-files"></a>

有两个项目文件需要复查：`aws-lambda-tools-defaults.json` 和 `Function.cs`。

以下示例显示 `aws-lambda-tools-defaults.json` 文件，该文件作为项目的一部分自动创建。您可以使用该文件中的字段设置构建选项。

**注意**  
 Visual Studio 中的项目模板包含多个不同的字段，请注意以下几点：  
**function-handler**：指定运行 Lambda 函数时运行的方法
在 **function-handler** 字段中指定一个值会在发布向导中预先填充该值。
如果您重命名了函数、类或程序集，则也需要更新 `aws-lambda-tools-defaults.json` 文件中的相应字段。

```
{
  "Information": [
    "This file provides default values for the deployment wizard inside Visual Studio and the AWS Lambda commands added to the .NET Core CLI.",
    "To learn more about the Lambda commands with the .NET Core CLI execute the following command at the command line in the project root directory.",
    "dotnet lambda help",
    "All the command line options for the Lambda command can be specified in this file."
  ],
  "profile": "default",
  "region": "us-west-2",
  "configuration": "Release",
  "function-architecture": "x86_64",
  "function-runtime": "dotnet8",
  "function-memory-size": 512,
  "function-timeout": 30,
  "function-handler": "AWSLambdaSample::AWSLambdaSample.Function::FunctionHandler"
}
```

检查 `Function.cs` 文件。`Function.cs` 定义了要作为 Lambda 函数公开的 c\$1 函数。这里的 `FunctionHandler` 是在运行 Lambda 函数时运行的 Lambda 功能。在此项目中，定义了一个函数：`FunctionHandler`，它在输入文本上调用 `ToUpper()`。

您的项目现在可发布到 Lambda。

## 发布到 Lambda
<a name="publish-to-lam"></a>

以下过程和图像演示了如何使用 AWS Toolkit for Visual Studio将您的函数上传到 Lambda。

![\[调用测试函数页\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/uploadnet8.png)


**将函数发布到 Lambda**

1. 展开 “**视图**” 并选择 “ AWS 资源管理器”，即可导航到**AWS 资源管理器**。

1. 在**解决方案资源管理器**中，打开（右键单击）要发布的项目的快捷菜单，然后选择**发布到 AWS Lambda 以打开上传 Lambd** **a 函数窗口**。

1. 在**上传 Lambda 函数**窗口中，填写以下字段：

   1. **程序包类型**：选择 **Zip**。作为构建过程的结果，将创建一个 ZIP 文件并将其上传到 Lambda。或者，也可以选择**程序包类型** **Image**。[教程：创建 Docker 映像的基本 Lambda 项目](lambda-creating-project-docker-image.md)描述了如何使用**程序包类型** **Image** 进行发布。

   1. **Lambda 运行时**：从下拉菜单中选择 Lambda 运行时。

   1. **架构**：通过单选按钮选择您偏好的架构。

   1. **函数名称**：通过单选按钮选择**创建新函数**，然后输入 Lambda 实例的显示名称。 AWS 浏览器和 AWS 管理控制台 显示器都会引用此名称。

   1. **处理程序**：使用此字段指定函数处理程序。例如：**AWSLambdaSample::AWSLambdaSample.Function::FunctionHandler**。

   1. *（可选）***描述**：输入描述性文本，该文本将在 AWS 管理控制台中与您的实例一同显示。

   1. **配置**：从下拉菜单中选择所需的配置。

   1. **框架**：从下拉菜单中选择所需的框架。

   1. **保存设置**：选中此框将您当前的设置保存到 `aws-lambda-tools-defaults.json` 中，作为未来部署的默认值。

   1. 选择**下一步**进入**高级函数详细信息**窗口。

1. 在**高级函数详细信息**窗口中，填写以下字段：

   1. **角色名称**：选择与您的账户关联的角色。该角色为函数中的代码发出的任何 AWS 服务调用提供临时证书。如果您没有角色，请在下拉选择器中滚动找到 “**基于 AWS 托管策略的新角色**”，然后选择**AWSLambdaBasicExecutionRole**。此角色拥有最小访问权限。
**注意**  
您的账户必须拥有运行 IAM ListPolicies 操作的权限，否则**角色名称**列表将为空，您将无法继续。

   1. *（可选）*如果您的 Lambda 函数访问 Amazon VPC 上的资源，请选择子网和安全组。

   1. *（可选）*设置您的 Lambda 函数所需的任何环境变量。这些密钥会被默认服务密钥自动加密，此项服务是免费的。或者，您可以指定需要付费的 AWS KMS 密钥。[KMS](https://aws.amazon.com/kms/) 是一项托管服务，可使用它创建和控制用于对数据进行加密的加密密钥。如果您有 AWS KMS 密钥，则可以从列表中将其选中。

1. 选择**上传**以打开**上传函数**窗口并开始上传过程。
**注意**  
**函数上传**到时，将显示 “上传函数” 页面 AWS。要使向导在上传后保持打开状态以便查看报告，请在上传完成之前取消选中表单底部的**在成功完成时自动关闭向导**。  
函数上传后，您的 Lambda 函数就会上线。**函数：**视图页面将打开并显示您的新 Lambda 函数的配置。

1. 在**测试函数**选项卡上，在文本输入字段输入 `hello lambda!`，然后选择**调用**以手动调用您的 Lambda 函数。您的文本会出现在**响应**选项卡中，并已转换为大写字母。
**注意**  
您可以随时通过双击 **AWS Explorer** 内 **AWS Lambda** 节点下已部署的实例来重新打开**函数：**视图。  
![\[调用测试函数页\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/invokeBasic.PNG)

1. *（可选）*要确认您已成功发布您的 Lambda 函数，请登录 AWS 管理控制台 并选择 Lambda。控制台会显示您发布的所有 Lambda 函数，包括您刚刚创建的函数。

## 清理
<a name="cleanup-lam"></a>

如果您不打算继续使用此示例进行开发，请删除您部署的函数，这样就不会为账户中未使用的资源付费。

**注意**  
Lambda 会自动为您监控 Lambda 函数，并通过亚马逊报告指标。 CloudWatch要监控您的函数并对其进行故障排除，请参阅 AWS Lambda 开发者指南中的使用 [Amazon 进行故障排除和监控 AWS Lambda 函数 CloudWatch](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-functions.html)的主题。

**删除函数**

1. 在 **AWS Explorer** 中，展开 **AWS Lambda** 节点。

1. 右键单击已部署的实例，然后选择**删除**。

# 创建 Docker 镜像的基本 AWS Lambda 项目
<a name="lambda-creating-project-docker-image"></a>

你可以使用 Visual Studio 的 Toolkit for Visual Studio 将你的 AWS Lambda 函数部署为 Docker 镜像。使用 Docker 可以更好地控制运行时。例如，您可以选择诸如 .NET 8.0 这样的自定义运行时。您可以像部署任何其他容器映像一样部署 Docker 映像。本教程与[教程：基本 Lambda 项目](lambda-creating-project-in-visual-studio.md)非常相似，但有两个区别：
+ 项目中包含一个 Dockerfile。
+ 选择了备用发布配置。

有关 Lambda 容器映像的信息，请参阅《AWS Lambda 开发人员指南》**中的 [Lambda 部署包](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-package.html)。

有关使用 Lambda 的更多信息 AWS Toolkit for Visual Studio，请参阅本用户指南 AWS Toolkit for Visual Studio主题[中的使用 AWS Lambda 模板](lambda-index.md)。

## 创建 Visual Studio .NET Core Lambda 项目
<a name="create-a-visual-studio-net-core-lam-project"></a>

您可以使用 Lambda Visual Studio 模板和蓝图来帮助加快项目初始化的速度。Lambda 蓝图包含预先编写好的函数，它们简化了创建灵活项目基础的过程。

**创建 Visual Studio .NET Core Lambda 项目**

1. 在 Visual Studio 中，展开**文件**菜单，展开**新建**，然后选择**项目**。

1. 在**新建项目**对话框中，将**语言**、**平台**和**项目类型**下拉框都设置为“全部”，然后在**搜索**字段中键入 **aws lambda**。选择 **AWS Lambda 项目（.NET Core - C＃）**模板。

1. 在**项目名称**字段中输入 **AWSLambdaDocker**，指定您的文件**位置**，然后选择**创建**。

1. 在 **“选择蓝图”** 页面上，选择 **.NET 8（容器映像）**蓝图，然后选择 “**完成**” 创建 Visual Studio 项目。您可以现在复查项目的结构和代码。

## 审查项目文件
<a name="review-the-project-files"></a>

以下各节分析了 **.NET 8（容器映像）**蓝图创建的三个项目文件：

1. `Dockerfile`

1. `aws-lambda-tools-defaults.json`

1. `Function.cs`

### 1. Dockerfile
<a name="dockerfile"></a>

一个 `Dockerfile` 执行三个主要操作：
+ `FROM`：确定构建此映像所依据的基础映像。此基础映像包含 .NET 运行时系统、Lambda 运行时系统以及为 Lambda .NET 进程提供入口点的 shell 脚本。
+ `WORKDIR`：将映像的内部工作目录确定为 `/var/task`。
+ `COPY`：将构建过程生成的文件从其本地位置复制到映像的工作目录中。

您可以指定以下可选 `Dockerfile` 操作：
+ `ENTRYPOINT`：基础映像已经包含一个 `ENTRYPOINT`，即启动映像时执行的启动过程。如要指定自己的入口点，可以覆盖该基本入口点。
+ `CMD`: 指示您要执行 AWS 哪个自定义代码。这要求自定义方法有一个完全限定名称。此行可以直接包含在 Dockerfile 中，也可以在发布过程中指定。

  ```
  # Example of alternative way to specify the Lambda target method rather than during the publish process.
  CMD [ "AWSLambdaDocker::AWSLambdaDocker.Function::FunctionHandler"]
  ```

以下是 .NET 8（容器映像）蓝图创建的 Dockerfile 的示例。

```
FROM public.ecr.aws/lambda/dotnet:8

WORKDIR /var/task

# This COPY command copies the .NET Lambda project's build artifacts from the host machine into the image. 
# The source of the COPY should match where the .NET Lambda project publishes its build artifacts. If the Lambda function is being built 
# with the AWS .NET Lambda Tooling, the `--docker-host-build-output-dir` switch controls where the .NET Lambda project
# will be built. The .NET Lambda project templates default to having `--docker-host-build-output-dir`
# set in the aws-lambda-tools-defaults.json file to "bin/Release/lambda-publish".
#
# Alternatively Docker multi-stage build could be used to build the .NET Lambda project inside the image.
# For more information on this approach checkout the project's README.md file.
COPY "bin/Release/lambda-publish"  .
```

### 2。 aws-lambda-tools-defaults.json
<a name="aws-lambda-tools-defaults"></a>

`aws-lambda-tools-defaults.json` 文件用于为 Toolkit for Visual Studio 部署向导和 .NET Core CLI 指定默认值。以下列表描述了可在 `aws-lambda-tools-defaults.json` 文件中设置的字段。
+ `profile`: 设置您的 AWS 个人资料。
+ `region`：设置您的资源存储 AWS 区域。
+ `configuration`：设置用于发布函数的配置。
+ `package-type`：将部署包类型设置为容器映像或 .zip 文件存档。
+ `function-memory-size`：设置函数的内存分配大小（以 MB 为单位）。
+ `function-timeout`：超时是指一个 Lambda 函数可以运行的最长时间（以秒为单位）。您能够以 1 秒为增量来调整此值，最大值为 15 分钟。
+ `docker-host-build-output-dir`：设置构建过程的输出目录，该目录与 `Dockerfile` 中的指令相关。
+ `image-command`：您的方法的完全限定名称，即您希望 Lambda 函数运行的代码。语法如下：`{Assembly}::{Namespace}.{ClassName}::{MethodName}`。有关更多信息，请参阅[处理程序签名](https://docs.aws.amazon.com/lambda/latest/dg/csharp-handler.html#csharp-handler-signatures)。在此处设置 `image-command` 后，稍后会在 Visual Studio 的“发布”向导中预填充此值。

以下是 aws-lambda-tools-defaults .NET 8（容器镜像）蓝图创建的.json 示例。

```
{
  "Information": [
    "This file provides default values for the deployment wizard inside Visual Studio and the AWS Lambda commands added to the .NET Core CLI.",
    "To learn more about the Lambda commands with the .NET Core CLI execute the following command at the command line in the project root directory.",
    "dotnet lambda help",
    "All the command line options for the Lambda command can be specified in this file."
  ],
  "profile": "default",
  "region": "us-west-2",
  "configuration": "Release",
  "package-type": "image",
  "function-memory-size": 512,
  "function-timeout": 30,
  "image-command": "AWSLambdaDocker::AWSLambdaDocker.Function::FunctionHandler",
  "docker-host-build-output-dir": "./bin/Release/lambda-publish"
}
```

### 3. Function.cs
<a name="w2aac15c45c16c17c21"></a>

`Function.cs` 文件定义要作为 Lambda 函数公开的 c\$1 函数。`FunctionHandler` 是在运行 Lambda 函数时运行的 Lambda 功能。在这个项目中，`FunctionHandler` 对输入的文本调用 `ToUpper()`。

## 发布到 Lambda
<a name="publish-to-lam"></a>

构建过程中生成的 Docker 映像上传到 Amazon Elastic Container Registry（Amazon ECR）。Amazon ECR 一个完全托管式 Docker 容器映像库，您可以使用该映像库存储、管理和部署 Docker 容器映像。Amazon ECR 托管映像，然后 Lambda 会引用该映像，以便在调用时提供编程的 Lambda 功能。

**将函数发布到 Lambda**

1. 在**解决方案浏览器**中，（右键单击）打开项目的上下文菜单，然后选择**发布到 AWS Lambda** 以打开**上传 Lambda 函数**窗口。

1. 在**上传 Lambda 函数**页面上，执行以下操作：  
![\[用于将基于图像的 Lambda 函数发布到的上传屏幕 AWS\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/lambda-upload-docker-03192024.png)

   1.  对于**包类型**，**Image** 已被自动选为**包类型**，因为发布向导在项目中检测到了 `Dockerfile`。

   1. 对于**函数名称**，为 Lambda 实例输入显示名称。此名称是在 Visual Studio 的 AWS 各区服务浏览器中和 AWS 管理控制台中显示的引用名称。

   1.  对于**描述**，输入要在 AWS 管理控制台中与您的实例一起显示的文本。

   1. 对于**映像命令**，输入希望 Lambda 函数运行的方法的完全限定路径：**AWSLambdaDocker::AWSLambdaDocker.Function::FunctionHandler**
**注意**  
此处输入的任何方法名称都将覆盖 Dockerfile 中的任何 CMD 指令。只有在 `Dockerfile` 包含用于指示如何启动 Lambda 函数的 `CMD` 时，输入**映像命令**才是可选的。

   1. 对于**映像存储库**，输入新的或现有 Amazon Elastic Container Registry 的名称。构建过程创建的 Docker 映像将上传到此映像库。要发布的 Lambda 定义将引用该 Amazon ECR 映像。

   1.  对于**映像标签**，输入一个 Docker 标签以与存储库中的映像相关联。

   1. 选择**下一步**。

1. 在**高级函数详细信息**页面的**角色名称**中，选择与您的账户关联的角色。该角色用于为函数中的代码所发起的任何 Amazon Web Services 调用提供临时凭证。如果您没有角色，请选择 “**基于 AWS 托管策略新建角色**”，然后选择**AWSLambdaBasicExecutionRole**。
**注意**  
您的账户必须拥有运行 IAM ListPolicies 操作的权限，否则**角色名称**列表将为空。

1. 选择**上传**以启动上传和发布过程。
**注意**  
上传函数时，将显示**正在上传函数**页面。然后，发布过程根据配置参数构建映像，必要时创建 Amazon ECR 存储库，将映像上传到存储库，然后创建引用包含该映像的存储库的 Lambda。  
上传函数后，**函数**页面将打开并显示新 Lambda 函数的配置。

1. 要手动调用 Lambda 函数，请在**测试函数**选项卡上，在请求的自由文本输入字段输入 `hello image based lambda`，然后选择**调用**。您的文本将转换为大写并显示在**响应**中。  
![\[已发布函数视图页面的“测试函数”选项卡上有用于手动调用 Lambda 方法的按钮。\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/lambda-invoke-docker-03192024.png)

1. 要查看存储库，请在 **AWS 各区服务浏览器**中的 **Amazon Elastic Container Service** 下选择**存储库**。

   您可以随时通过双击 **AWS Explorer** 内 **AWS Lambda** 节点下已部署的实例来重新打开**函数：**视图。
**注意**  
如果你的 AWS 资源管理器窗口未打开，你可以通过 “**视图**”-> “**AWS 资源管理器”** 将其停靠

1. 请注意**配置**选项卡上其他特定于映像的配置选项。此选项卡提供了一种覆盖可能已在 Dockerfile 中指定的 `ENTRYPOINT`、`CMD`、和 `WORKDIR` 的方法。**描述**是您在上传/发布期间输入的描述（如果有）。

## 清理
<a name="cleanup-lam"></a>

如果您不打算继续使用此示例进行开发，请记得删除已部署的函数和 ECR 映像，这样就不会为账户中未使用的资源付费。
+ 右键单击位于 **AWS 各区服务浏览器**中 **AWS Lambda** 节点下的已部署实例，即可删除函数。
+ 可以在 **AWS 各区服务浏览器**中的 **Amazon Elastic Container Service** -> **存储库**下删除存储库。

## 后续步骤
<a name="next-steps-lam"></a>

有关创建和测试 Lambda 映像的信息，请参阅[使用 Lambda 容器映像](https://docs.aws.amazon.com/lambda/latest/dg/lambda-images.html)。

有关容器映像部署、权限和覆盖配置设置的信息，请参阅[配置函数](https://docs.aws.amazon.com/lambda/latest/dg/configuration-images.html)。

# 教程：使用以下方法构建和测试无服务器应用程序 AWS Lambda
<a name="lambda-build-test-severless-app"></a>

您可以使用模板构建无服务器 Lambda 应用程序。 AWS Toolkit for Visual Studio Lambda 项目模板包括一个用于**AWS 无服务器应用程序**的模板，即[AWS 无服务器应用程序模型 (S](https://github.com/awslabs/serverless-application-model) AM) 的 AWS Toolkit for Visual Studio 实现。AWS 使用此项目类型，您可以开发一组 AWS Lambda 函数，并使用任何必要的 AWS 资源将它们作为整个应用程序进行部署， AWS CloudFormation 用于协调部署。

有关设置的先决条件和信息 AWS Toolkit for Visual Studio，请参阅[使用 Visual Stu AWS dio AWS 工具包中的 Lambda 模板](lambda-index.md)。

**Topics**
+ [创建新的 AWS 无服务器应用程序项目](#create-a-new-aws-serverless-application-project)
+ [查看无服务器应用程序文件](#examine-the-files-in-the-serverless-application)
+ [部署无服务器应用程序](#deploy-the-serverless-application)
+ [测试无服务器应用程序](#test-the-serverless-application)

## 创建新的 AWS 无服务器应用程序项目
<a name="create-a-new-aws-serverless-application-project"></a>

AWS 无服务器应用程序项目使用无服务器模板创建 Lambda 函数。 CloudFormation CloudFormation 模板使您能够定义其他资源，例如数据库、添加 IAM 角色和一次部署多个函数。这与 AWS Lambda 项目不同，后者侧重于开发和部署单个 Lambda 函数。

以下过程介绍了如何创建新的 AWS 无服务器应用程序项目。

1. 在 Visual Studio 中，展开**文件**菜单，展开**新建**，然后选择**项目**。

1. 在**新建项目**对话框中，确保将**语言**、**平台**和**项目类型**下拉框都设置为“全部...”，然后在**搜索**字段中键入 **aws lambda**。

1. 选择**带测试的AWS 无服务器应用程序（.NET Core - C\$1）**模板。
**注意**  
**带测试的AWS 无服务器应用程序（.NET Core - C＃）**模板可能不会填充到结果的顶部。

1. 单击**下一步**打开**配置您的新项目**对话框。

1. 在**配置您的新项目**对话框中，为**名称**输入 **ServerlessPowertools**，然后根据您的偏好填写其余字段。选择**创建**按钮进入**选择蓝图**对话框。

1. 在**选择蓝图**对话框中，选择 **Powertools for AWS Lambda** 蓝图，然后选择**完成**以创建 Visual Studio 项目。

## 查看无服务器应用程序文件
<a name="examine-the-files-in-the-serverless-application"></a>

以下各节详细介绍为您的项目创建的三个无服务器应用程序文件：

1. serverless.template 

1. Functions.cs

1. aws-lambda-tools-defaults.json

### 1. serverless.template
<a name="blogcs"></a>

`serverless.template`文件是用于声明您的无服务器函数和其他 AWS 资源的 AWS CloudFormation 模板。此项目附带的该文件中包含单个 Lambda 函数的声明，该函数将作为一项 `HTTP *Get*` 操作通过 Amazon API Gateway 公开。您可以编辑此模板以自定义现有函数或添加应用程序所需的更多函数和其他资源。

以下是 `serverless.template` 文件的示例：

```
{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Transform": "AWS::Serverless-2016-10-31",
  "Description": "An AWS Serverless Application.",
  "Resources": {
    "Get": {
      "Type": "AWS::Serverless::Function",
      "Properties": {
         "Architectures": [
            "x86_64"
            ],
         "Handler": "ServerlessPowertools::ServerlessPowertools.Functions::Get",
         "Runtime": "dotnet8",
         "CodeUri": "",
         "MemorySize": 512,
         "Timeout": 30,
         "Role": null,
         "Policies": [
            "AWSLambdaBasicExecutionRole"
            ],
         "Environment": {
            "Variables": {
               "POWERTOOLS_SERVICE_NAME": "ServerlessGreeting",
               "POWERTOOLS_LOG_LEVEL": "Info",
               "POWERTOOLS_LOGGER_CASE": "PascalCase",
               "POWERTOOLS_TRACER_CAPTURE_RESPONSE": true,
               "POWERTOOLS_TRACER_CAPTURE_ERROR": true,
               "POWERTOOLS_METRICS_NAMESPACE": "ServerlessGreeting"
               }
            },
         "Events": {
            "RootGet": {
               "Type": "Api",
               "Properties": {
                  "Path": "/",
                  "Method": "GET"
                  }
               }
            }
         }
      }
   },
  "Outputs": {
    "ApiURL": {
      "Description": "API endpoint URL for Prod environment",
      "Value": {
        "Fn::Sub": "https://${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com/Prod/"
      }
    }
  }
}
```

请注意，许多 `...AWS:: Serverless::Function...` 声明字段都与 Lambda 项目部署的字段类似。Powertools 日志、指标和跟踪是通过以下环境变量配置的：
+ POWERTOOLS 服务名称= ServerlessGreeting
+ POWERTOOLS\$1LOG\$1LEVEL=Info
+ POWERTOOLS\$1LOGGER\$1C PascalCase
+ POWERTOOLS\$1TRACER\$1CAPTURE\$1RESPONSE=true
+ POWERTOOLS\$1TRACER\$1CAPTURE\$1ERROR=true
+ POWERTOOLS\$1METRICS\$1NAMESPAC ServerlessGreeting

有关环境变量的定义和其他详细信息，请参阅 [Powertools 供 AWS Lambda 参考](https://awslabs.github.io/aws-lambda-powertools-dotnet/references/)网站。

### 2. Functions.cs
<a name="functionscs"></a>

`Functions.cs` 是一个包含 C\$1 方法的类文件，该方法映射到模板文件中声明的单个函数。该 Lambda 函数响应来自 API Gateway 的 `HTTP Get` 方法。以下是 `Functions.cs` 文件的示例：

```
public class Functions
{
    [Logging(LogEvent = true, CorrelationIdPath = CorrelationIdPaths.ApiGatewayRest)]
    [Metrics(CaptureColdStart = true)]
    [Tracing(CaptureMode = TracingCaptureMode.ResponseAndError)]
    public APIGatewayProxyResponse Get(APIGatewayProxyRequest request, ILambdaContext context)
    {
        Logger.LogInformation("Get Request");

        var greeting = GetGreeting();

        var response = new APIGatewayProxyResponse
        {
            StatusCode = (int)HttpStatusCode.OK,
            Body = greeting,
            Headers = new Dictionary (string, string) { { "Content-Type", "text/plain" } }
        };

        return response;
    }

    [Tracing(SegmentName = "GetGreeting Method")]
    private static string GetGreeting()
    {
        Metrics.AddMetric("GetGreeting_Invocations", 1, MetricUnit.Count);

        return "Hello Powertools for AWS Lambda (.NET)";
    }
}
```

### 3。 aws-lambda-tools-defaults.json
<a name="functionscs"></a>

`aws-lambda-tools-defaults.json`提供了 Visual Studio 内部 AWS 部署向导的默认值以及添加到.NET Core CLI 中的 AWS Lambda 命令。以下是本项目附带的 `aws-lambda-tools-defaults.json` 文件的示例：

```
{
  "profile": "Default",
  "region": "us-east-1",
  "configuration": "Release",
  "s3-prefix": "ServerlessPowertools/",
  "template": "serverless.template",
  "template-parameters": ""
}
```

## 部署无服务器应用程序
<a name="deploy-the-serverless-application"></a>

要部署无服务器应用程序，请完成以下步骤：

1. 在**解决方案资源管理器**中，打开项目的快捷菜单（右键单击），然后选择 “**发布到 AWS Lambda” 以**打开 “**发布 AWS 无服务器**应用程序” 对话框。

1. 在 “**发布 AWS 无服务器应用程序**” 对话框中，在 CloudFormation 堆栈名称字段中输入堆**栈容器的名称**。

1. 在 **S3 存储桶**字段中，选择您的应用程序捆绑包将上传到的 Amazon S3 存储桶，或者选择**新建...**按钮，输入新 Amazon S3 存储桶的名称。然后选择**发布**以进行发布，来部署您的应用程序。
**注意**  
您的 CloudFormation 堆栈和 Amazon S3 存储桶必须位于同一 AWS 区域。您的项目的其余设置在 `serverless.template` 文件中定义。  
![\[“发布 AWS 无服务器应用程序” 对话框的图像。\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/lambda-upload-serverless-03192024.png)

1. 在发布过程中，**堆栈**视图窗口会打开，当部署完成后，**状态**字段将显示：`CREATE_COMPLETE`。  
![\[Visual Studio 中部署堆栈视图窗口的图像。\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/lambda-upload-stackview-03192024.png)

## 测试无服务器应用程序
<a name="test-the-serverless-application"></a>

堆栈创建完成后，您可以使用 **AWS 无服务器 URL** 查看您的应用程序。如果您在完成本教程时未添加任何其他函数或参数，则访问您的 AWS 无服务器 URL 会在您的网络浏览器中显示以下短语：`Hello Powertools for AWS Lambda (.NET)`。

# 教程：创建 Amazon Rekognition Lambda 应用程序
<a name="lambda-rekognition-example"></a>

本教程向您说明如何创建 Lambda 应用程序，该应用程序使用 Amazon Rekognition 标记包含检测到的标签的 Amazon S3 对象。

有关设置的先决条件和信息 AWS Toolkit for Visual Studio，请参阅[使用 Visual Stu AWS dio AWS 工具包中的 Lambda 模板](lambda-index.md)。

## 创建 Visual Studio .NET Core Lambda Image Rekognition 项目
<a name="create-a-visual-studio-net-core-lam-image-rekognition-project"></a>

以下过程描述如何从 AWS Toolkit for Visual Studio创建 Amazon Rekognition Lambda 应用程序。

**注意**  
创建完成后，您的应用程序会生成一个包含两个项目的解决方案：一个是包含要部署到 Lambda 的 Lambda 函数代码的源项目，另一个是使用 xUnit 来本地测试函数的测试项目。  
有时 Visual Studio 无法找到你的项目的所有 NuGet 参考资料。这是因为蓝图需要必须从中 NuGet检索的依赖关系。创建新项目时，Visual Studio 仅从中提取本地引用，而不会从 NuGet中提取远程引用。要修复 NuGet 错误，请右键单击您的参考文献，然后选择 “**还原包**”。

1. 在 Visual Studio 中，展开**文件**菜单，展开**新建**，然后选择**项目**。

1. 在**新建项目**对话框中，确保将**语言**、**平台**和**项目类型**下拉框都设置为“全部...”，然后在**搜索**字段中键入 **aws lambda**。

1. 选择**带测试的AWS Lambda （.NET Core – C＃）**模板。

1. 单击**下一步**打开**配置您的新项目**对话框。

1. 在 “**配置您的新项目**” 对话框中，在 “**名称 ImageRekognition**” 中输入 “”，然后根据自己的喜好填写其余字段。选择**创建**按钮进入**选择蓝图**对话框。

1. 在**选择蓝图**对话框上，选择**删除映像标签**蓝图，然后选择**完成**以创建 Visual Studio 项目。
**注意**  
此蓝图提供了用于侦听 Amazon S3 事件的代码，并使用 Amazon Rekognition 检测标签并将其作为标记添加到 S3 对象。

## 审查项目文件
<a name="examine-the-files"></a>

以下各节分析这些项目文件：

1. `Function.cs`

1. `aws-lambda-tools-defaults.json`

### 1. Function.cs
<a name="functioncs"></a>

在 `Function.cs` 文件中，第一段代码是位于文件顶部的程序集属性。默认情况下，Lambda 只接受 `System.IO.Stream` 类型的输入参数和返回类型。您必须注册一个序列化程序才能使用类型化类作为输入参数和返回类型。该程序集属性注册了 Lambda JSON 序列化程序，它使用 `Newtonsoft.Json` 将流转换为类型化类。您可以在程序集或方法级别设置串行器。

以下是程序集属性的一个示例：

```
// Assembly attribute to enable the Lambda function's JSON input to be converted into a .NET class.
[assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.SystemTextJson.DefaultLambdaJsonSerializer))]
```

该类有两个构造函数。第一个是 Lambda 调用您的函数时使用的默认构造函数。此构造函数创建 Amazon S3 和 Amazon Rekognition 服务客户端。构造函数还会从您在部署函数时分配给该函数的 IAM 角色中检索这些客户端的 AWS 证书。客户端的 AWS 区域设置为运行您的 Lambda 函数的区域。在此蓝图中，您只想在 Amazon Rekognition 服务对标签具有最低置信度时，才将标签添加到 Amazon S3 对象。此构造函数将检查环境变量 `MinConfidence` 以确定可接受的置信度级别。您可以在部署 Lambda 函数时设置该环境变量。

以下是 `Function.cs` 中第一个类构造函数的示例：

```
public Function()
{
    this.S3Client = new AmazonS3Client();
    this.RekognitionClient = new AmazonRekognitionClient();

    var environmentMinConfidence = System.Environment.GetEnvironmentVariable(MIN_CONFIDENCE_ENVIRONMENT_VARIABLE_NAME);
    if(!string.IsNullOrWhiteSpace(environmentMinConfidence))
    {
        float value;
        if(float.TryParse(environmentMinConfidence, out value))
        {
            this.MinConfidence = value;
            Console.WriteLine($"Setting minimum confidence to {this.MinConfidence}");
        }
        else
        {
            Console.WriteLine($"Failed to parse value {environmentMinConfidence} for minimum confidence. Reverting back to default of {this.MinConfidence}");
        }
    }
    else
    {
        Console.WriteLine($"Using default minimum confidence of {this.MinConfidence}");
    }
}
```

以下示例演示如何利用第二个构造函数进行测试。测试项目会配置它自己的 S3 和 Rekognition 客户端并将其传入：

```
public Function(IAmazonS3 s3Client, IAmazonRekognition rekognitionClient, float minConfidence)
{
    this.S3Client = s3Client;
    this.RekognitionClient = rekognitionClient;
    this.MinConfidence = minConfidence;
}
```

以下是 `Function.cs` 文件内的 `FunctionHandler` 方法示例。

```
public async Task FunctionHandler(S3Event input, ILambdaContext context)
{
    foreach(var record in input.Records)
    {
        if(!SupportedImageTypes.Contains(Path.GetExtension(record.S3.Object.Key)))
        {
            Console.WriteLine($"Object {record.S3.Bucket.Name}:{record.S3.Object.Key} is not a supported image type");
            continue;
        }

        Console.WriteLine($"Looking for labels in image {record.S3.Bucket.Name}:{record.S3.Object.Key}");
        var detectResponses = await this.RekognitionClient.DetectLabelsAsync(new DetectLabelsRequest
        {
            MinConfidence = MinConfidence,
            Image = new Image
            {
                S3Object = new Amazon.Rekognition.Model.S3Object
                {
                    Bucket = record.S3.Bucket.Name,
                    Name = record.S3.Object.Key
                }
            }
        });

        var tags = new List();
        foreach(var label in detectResponses.Labels)
        {
            if(tags.Count < 10)
            {
                Console.WriteLine($"\tFound Label {label.Name} with confidence {label.Confidence}");
                tags.Add(new Tag { Key = label.Name, Value = label.Confidence.ToString() });
            }
            else
            {
                Console.WriteLine($"\tSkipped label {label.Name} with confidence {label.Confidence} because maximum number of tags reached");
            }
        }

        await this.S3Client.PutObjectTaggingAsync(new PutObjectTaggingRequest
        {
            BucketName = record.S3.Bucket.Name,
            Key = record.S3.Object.Key,
            Tagging = new Tagging
            {
                TagSet = tags
            }
        });
    }
    return;
}
```

 `FunctionHandler` 是 Lambda 构建实例后调用的方法。请注意，输入参数的类型是 `S3Event`，而不是 `Stream`。您可以执行此操作，因为您已注册 Lambda JSON 串行器。`S3Event` 包含在 Amazon S3 中触发的事件的所有信息。该函数将遍历组成事件的所有 S3 对象并让 Rekognition 检测标签。在检测标签后，标签将作为标记添加到 S3 对象。

**注意**  
代码中包含对 `Console.WriteLine()` 的调用。当该函数在 Lambda 中运行时，所有调用都`Console.WriteLine()`将重定向到 Ama CloudWatch zon 日志。

### 2。 aws-lambda-tools-defaults.json
<a name="toolsdefaults"></a>

`aws-lambda-tools-defaults.json` 文件包含由蓝图设置的默认值，用于预填充部署向导中的某些字段。它也有助于设置与 .NET Core CLI 集成的命令行选项。

要访问 .NET Core CLI 集成，请导航到该函数的项目目录并键入 **dotnet lambda help**。

**注意**  
函数处理程序指明了 Lambda 在响应函数调用时要调用的方法。此字段的格式为：`<assembly-name>::<full-type-name>::<method-name>`。类型名称必须包含命名空间。

## 部署函数
<a name="deploy-the-function"></a>

以下过程介绍如何部署您的 Lambda 函数。

1. **在**解决方案资源管理器**中，右键单击 Lambda 项目，然后选择 “**发布到 Lambda” 以打开 “ AWS 上传**到” 窗口。 AWS Lambda**
**注意**  
预设值是从 `aws-lambda-tools-defaults.json` 文件中检索的。

1. 从**上传到 AWS Lambda** 窗口中，在**函数名称**字段中输入名称，然后选择**下一步**按钮进入**高级函数详细信息**窗口。
**注意**  
该示例使用**函数名称** **ImageRekognition**。  
![\[AWS Lambda function upload interface with package type, runtime, and configuration options.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/lambda-upload-imgrek-03192024.png)

1. 从**高级函数详细信息**窗口，选择一个 IAM 角色，该角色授予您的代码访问 Amazon S3 和 Amazon Rekognition 资源的权限。
**注意**  
如果您正在按照此示例进行操作，请选择 `AWSLambda_FullAccess` 角色。

1. 将环境变量 `MinConfidence` 设置为 60，然后选择**上传**以启动部署过程。当**函数**视图显示在 **AWS Explorer** 中时，发布过程完成。  
![\[AWS Lambda function configuration interface showing permissions, execution, and environment settings.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/lambda-upload-imgrek-advanced-03192024.png)

1. 成功部署后，通过导航到**事件源**选项卡，配置 Amazon S3 将其事件发送到您的新函数。

1. 在**事件源**选项卡中，选择**添加**按钮，然后选择要连接您的 Lambda 函数的 Amazon S3 存储桶。
**注意**  
存储桶必须与您的 Lambda 函数位于同一 AWS 区域。

## 测试函数。
<a name="test-the-function"></a>

现在已部署该函数，并将 S3 桶配置为函数的事件源，请从 **AWS 各区服务浏览器**中为您选定的桶打开 S3 桶浏览器。然后上传一些图像。

上传完成后，您可以通过在函数视图中查看日志来确认您的函数已运行。或者，右键单击存储桶浏览器中的图像，然后选择 **Properties (属性)**。在 **Tags (标签)** 选项卡上，您可以查看应用到您的对象的标签。

![\[Properties window showing metadata tags for an image file in a cloud storage bucket.\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-visual-studio/latest/user-guide/images/lambda-object-properties.png)


# 教程：使用 Amazon 日志框架和 AWS Lambda 创建应用程序日志
<a name="cw-log-frameworks"></a>

您可以使用 Amazon CloudWatch Logs 来监控、存储和访问应用程序的日志。要将日志数据导入 CloudWatch 日志，请使用 S AWS DK 或安装 Log CloudWatch s 代理来监控某些日志文件夹。 CloudWatch 日志与几个流行的.NET 日志框架集成，从而简化了工作流程。

要开始使用 CloudWatch 日志和.NET 日志框架，请将相应的 NuGet 包和 CloudWatch 日志输出源添加到您的应用程序中，然后像往常一样使用您的日志库。这使您的应用程序能够使用.NET 框架记录消息，将其发送到 Lo CloudWatch gs，在日志控制台中显示应用程序的 CloudWatch 日志消息。您还可以根据应用程序的日志消息，在 CloudWatch 日志控制台中设置指标和警报。

受支持的 .NET 日志记录框架包括：
+ **NLog**: 要查看，请参阅 [nuget.org 软件包。 NLog ](https://www.nuget.org/packages/AWS.Logger.NLog)
+ **Log4net**：若要查看，请访问 [nuget.org Log4net 包](https://www.nuget.org/packages/AWS.Logger.NLog)。
+ **ASP.NET Core logging Framework**：若要查看，请访问 [nuget.org ASP.NET Core 日志记录框架包](https://www.nuget.org/packages/AWS.Logger.AspNetCore/)。

以下是一个文件示例，该`NLog.config`文件通过将`AWS.Logger.NLog` NuGet 软件包和 AWS 目标添加到中来启用日志和控制台作为日志消息的输出`NLog.config`。 CloudWatch 

```
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      throwExceptions="true">
  <targets>
    <target name="aws" type="AWSTarget" logGroup="NLog.ConfigExample" region="us-east-1"/>
    <target name="logfile" xsi:type="Console" layout="${callsite} ${message}" />
  </targets>
  <rules>
    <logger name="*" minlevel="Info" writeTo="logfile,aws" />
  </rules>
</nlog>
```



日志插件都建立在之上，通过类似于 SDK 的流程对您的 AWS 凭据进行身份验证。 适用于 .NET 的 AWS SDK 以下示例详细说明了日志插件凭据访问 CloudWatch 日志所需的权限：

**注意**  
. AWS NET 日志插件是一个开源项目。有关更多信息、示例和说明，请参阅 Lo [AWS gging .NET GitHub 存储库中的[示例](https://github.com/aws/aws-logging-dotnet/tree/master/samples)](https://github.com/aws/aws-logging-dotnet)和[说明](https://github.com/aws/aws-logging-dotnet/blob/master/README.md)主题。

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents",
        "logs:DescribeLogGroups"
      ],
      "Resource": [
        "arn:aws:logs:*:*:*"
      ]
    }
  ]
}
```

------