

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

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

# AWS 服务 从中的环境中呼叫 AWS Cloud9
<a name="credentials"></a>

您可以 AWS 服务 从 AWS Cloud9 开发环境中调用。例如，您可以执行以下操作：
+ 在 Amazon Simple Storage Service (Amazon S3) 存储桶中上传和下载数据。
+ 通过 Amazon Simple Notification Service (Amazon SNS) 主题发送广播通知。
+ 在 Amazon DynamoDB (DynamoDB) 数据库中读取和写入数据。

您可以通过多种方式 AWS 服务 从您的环境中调用。例如，您可以使用 AWS Command Line Interface (AWS CLI) 或从终端会话中运行命令。 AWS CloudShell 您也可以从您在环境中运行的代码调用 AWS 服务 。您可以通过使用编程语言（例如JavaScript、、、PythonRubyPHPGo、和）来 AWS SDKs 实现此目的C\$1\$1。有关更多信息，请参阅[AWS CLI 和 aws-shell 示例](sample-aws-cli.md)、《[AWS Command Line Interface 用户指南》](https://docs.aws.amazon.com/cli/latest/userguide/)和。[AWS SDKs](https://aws.amazon.com/developer/tools/#sdk)

每次调用 AWS CLI AWS CloudShell、或您的代码时， AWS 服务 AWS CloudShell、或您的代码都必须在调用时提供一组 AWS 访问凭证。 AWS CLI这些凭证确定调用方是否具有相应的权限以进行调用。如果凭证没有包括合适的权限，则调用失败。

可以通过几种方法为您的环境提供凭证。下表介绍了一些方法。


****  

| 环境类型 | 方法 | 
| --- | --- | 
|  EC2  |  使用 AWS 托管临时证书。 我们建议在 EC2 环境中使用这种方法。 AWS 托管临时凭证代表您管理 EC2 环境中的 AWS 访问证书，同时还要遵循 AWS 安全最佳实践。  **如果您使用的是 EC2 环境，可以跳过本主题的其余部分。这是因为环境中已经为您设置了 AWS 托管临时证书。** 有关更多信息，请参阅 [AWS 托管式临时凭证](security-iam.md#auth-and-access-control-temporary-managed-credentials)。  | 
|  EC2  |  将一个 IAM 实例配置文件附加到实例。 仅在出于某种原因无法使用 AWS 托管临时证书时才使用此方法。与 AWS 托管临时证书类似，实例配置文件代表您管理 AWS 访问证书。不过，您必须自行创建和管理实例配置文件，并将其附加到 Amazon EC2 实例。 有关说明，请参阅[创建和使用实例配置文件管理临时凭证](#credentials-temporary)。  | 
|  EC2 或 SSH  |  将您的永久 AWS 访问凭证存储在环境中。 这种方法不如使用临时 AWS 访问凭证安全。不过，这是 SSH 环境支持的唯一方法。 有关说明，请参阅[在环境中创建和存储永久访问凭证](#credentials-permanent-create)。  | 
|  EC2 或 SSH  |  将您的永久 AWS 访问凭证直接插入您的代码中。 我们不鼓励采用这种方法，因为它不遵循 AWS 安全最佳实践。 由于我们不建议使用该方法，因此，在本主题中没有介绍该方法。  | 

## 创建和使用实例配置文件管理临时凭证
<a name="credentials-temporary"></a>

**注意**  
您不能将此过程用于 AWS Cloud9 SSH 开发环境。请向前跳到[在环境中创建和存储永久访问凭证](#credentials-permanent-create)。  
我们建议您使用 AWS 托管临时证书，而不是实例配置文件。仅当由于某种原因您无法使用 AWS 托管临时证书时，请按照以下说明进行操作。有关更多信息，请参阅 [AWS 托管式临时凭证](security-iam.md#auth-and-access-control-temporary-managed-credentials)。

此过程使用 IAM 和 Amazon EC2 创建 IAM 实例配置文件，并将其附加到连接到您环境的 Amazon EC2 实例。该实例配置文件代表您管理临时凭证。此过程假定您已经在 AWS Cloud9中创建了一个环境。要创建一个环境，请参阅[创建环境](create-environment.md)。

您可以使用 [IAM 和 Amazon EC2 控制台](#credentials-temporary-create-console)或 [AWS Command Line Interface (AWS CLI) ](#credentials-temporary-create-cli)完成这些任务。

### 使用 IAM 控制台创建实例配置文件
<a name="credentials-temporary-create-console"></a>

**注意**  
如果您已具有一个包含实例配置文件的 IAM 角色，请向前跳到[使用 Amazon EC2 控制台将实例配置文件附加到实例](#credentials-temporary-attach-console)。

1. 登录 IAM 控制台，网址为 [https://console.aws.amazon.com/iam](https://console.aws.amazon.com/iam)。

   对于该步骤，我们建议您使用您的 AWS 账户中的管理员级别凭证登录。如果您无法执行此操作，请咨询您的 AWS 账户 管理员。

1. 在导航栏中，选择 **Roles（角色）**。
**注意**  
您无法使用 IAM 控制台创建实例配置文件本身。您必须创建一个包含实例配置文件的 IAM 角色。

1. 选择 **Create role（创建角色）**。

1. 在 **Select type of trusted entity**（选择可信实体的类型）页面中，在已选择 **AWS 服务**的情况下，在 **Choose the service that will use this role**（选择将使用此角色的服务）中选择 **EC2**。

1. 在**选择您的使用案例**中选择 **EC2**。

1. 选择 **Next: Permissions（下一步：权限）**。

1. 在**附加权限策略**页面的策略列表中，选中旁边的复选框 **AdministratorAccess**，然后选择**下一步：查看**。
**注意**  
该**AdministratorAccess**政策允许不受限制地访问您的 AWS 账户所有 AWS 操作和资源。只应将它用于实验目的。有关更多信息，请参阅 *IAM 用户指南*中的 [IAM 策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)。

1. 在 **Review**（查看）页面上，为 **Role Name**（角色名称）键入角色的名称（例如 `my-demo-cloud9-instance-profile`）。

1. 选择 **Create role（创建角色）**。

向前跳到[使用 Amazon EC2 控制台将实例配置文件附加到实例](#credentials-temporary-attach-console)。

### 使用创建实例配置文件 AWS CLI
<a name="credentials-temporary-create-cli"></a>

**注意**  
如果您已具有一个包含实例配置文件的 IAM 角色，请向前跳到[使用 AWS CLI将实例配置文件附加到实例](#credentials-temporary-attach-cli)。  
对于本主题，我们建议您在中 AWS CLI 使用管理员级别的凭据进行配置。 AWS 账户如果您无法执行此操作，请咨询您的 AWS 账户 管理员。

**注意**  
如果您使用的是[AWS 托管临时凭证](security-iam.md#auth-and-access-control-temporary-managed-credentials)，则不能在 AWS Cloud9 IDE 中使用终端会话来运行本节中的部分或全部命令。为了解决 AWS 安全最佳实践， AWS 托管临时证书不允许运行某些命令。相反，您可以从单独安装的 AWS Command Line Interface (AWS CLI) 中运行这些命令。

1. 在中 AWS 为实例配置文件所需的 IAM 角色定义信任关系。为此，请创建并保存一个包含以下内容的文件（如 `my-demo-cloud9-instance-profile-role-trust.json`）。

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "",
         "Effect": "Allow",
         "Principal": {
           "Service": "ec2.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

------

1. 通过使用终端或命令提示符，切换到刚在其中保存该文件的目录。

1. 为实例配置文件创建一个 IAM 角色。为此，请运行 IAM `create-role` 命令。执行此操作时，请指定新 IAM 角色的名称（例如 `my-demo-cloud9-instance-profile-role`），以及刚刚保存的文件的名称。

   ```
   aws iam create-role --role-name my-demo-cloud9-instance-profile-role --assume-role-policy-document file://my-demo-cloud9-instance-profile-role-trust.json
   ```

1. 将 AWS 访问权限附加到实例配置文件 IAM 角色。为此，请运行 IAM `attach-role-policy` 命令。指定现有 IAM 角色的名称和命名的 AWS 托管策略的 Amazon 资源名称 (ARN)。`AdministratorAccess`

   ```
   aws iam attach-role-policy --role-name my-demo-cloud9-instance-profile-role --policy-arn arn:aws:iam::aws:policy/AdministratorAccess
   ```
**注意**  
该**AdministratorAccess**政策允许不受限制地访问您的 AWS 账户所有 AWS 操作和资源。只应将它用于实验目的。有关更多信息，请参阅 *IAM 用户指南*中的 [IAM 策略](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html)。

1. 创建实例配置文件。为此，请运行 IAM `create-instance-profile` 命令，并指定新实例配置文件的名称 (如 `my-demo-cloud9-instance-profile`)。

   ```
   aws iam create-instance-profile --instance-profile-name my-demo-cloud9-instance-profile
   ```

1. 将 IAM 角色附加到实例配置文件。为此，请运行 IAM `add-role-to-instance-profile`，并指定现有 IAM 角色和实例配置文件的名称。

   ```
   aws iam add-role-to-instance-profile --role-name my-demo-cloud9-instance-profile-role --instance-profile-name my-demo-cloud9-instance-profile
   ```

向前跳到[使用 AWS CLI创建实例配置文件](#credentials-temporary-create-cli)。

### 使用 Amazon EC2 控制台将实例配置文件附加到实例
<a name="credentials-temporary-attach-console"></a>

1. 登录亚马逊 EC2 控制台，网址为 [https://console.aws.amazon.com/ec2](https://console.aws.amazon.com/ec2)。

   对于该步骤，我们建议您使用您的 AWS 账户中的管理员级别凭证登录。如果您无法执行此操作，请咨询您的 AWS 账户 管理员。

1. 在导航栏中，确保区域选择器显示的 AWS 区域 与您环境的区域匹配。例如，如果您在美国东部（俄亥俄州）区域中创建了环境，请在此处的区域选择器中选择 **US East (Ohio)** [美国东部（俄亥俄州）]。

1. 选择**正在运行的实例**链接，或者在导航窗格中展开**实例**，然后选择**实例**。

1. 在实例列表中，选择 **Name（名称）**包含您的环境名称的实例。例如，如果您的环境名称为`my-demo-environment`，请选择**名称**包含的实例**my-demo-environment**。

1. 依次选择 **Actions**（操作）、**Security**（安全）和 **Modify IAM role**（修改 IAM 角色）。
**注意**  
虽然您将一个角色附加到实例，但该角色包含一个实例配置文件。

1. 在 **Modify IAM role**（修改 IAM 角色）页面中，为 **IAM role**（IAM 角色）选择您确定的角色名称或在上一过程中创建的角色名称，然后选择 **Apply**（应用）。

1. 回到环境中， AWS CLI 使用运行`aws configure`命令或 AWS CloudShell 使用运行`configure`命令。不要为 **AWS 访问密钥 ID** 或 **AWS 秘密访问密钥**指定任何值（在出现每个提示后按 `Enter`）。对于**默认区域名称**，请指定离您 AWS 区域 最近的区域或您的 AWS 资源所在的区域。例如，对于美国东部（俄亥俄）区域，请指定 `us-east-2`。有关区域的列表，请参阅**《Amazon Web Services 一般参考》中的 [AWS 区域 and Endpoints](https://docs.aws.amazon.com/general/latest/gr/rande.html)。（可选）为 **Default output format（默认输出格式）**指定一个值（如 `json`）。

现在，您可以开始 AWS 服务 从您的环境中进行呼叫。要使用 AWS CLI、或两者进行调用 aws-shell AWS 服务，请参阅[AWS CLI 和 aws-shell 示例](sample-aws-cli.md)。要从您的代码中调用 AWS 服务 ，请参阅其他[教程和示例](tutorials.md)。

### 使用实例配置文件将实例配置文件附加到实例 AWS CLI
<a name="credentials-temporary-attach-cli"></a>

**注意**  
如果您使用的是[AWS 托管临时凭证](security-iam.md#auth-and-access-control-temporary-managed-credentials)，则不能在 AWS Cloud9 IDE 中使用终端会话来运行本节中的部分或全部命令。为了解决 AWS 安全最佳实践， AWS 托管临时证书不允许运行某些命令。相反，您可以从单独安装的 AWS Command Line Interface (AWS CLI) 中运行这些命令。

1. 运行 Amazon EC2 `associate-iam-instance-profile` 命令。为环境指定实例配置文件的名称以及 Amazon EC2 实例的 AWS 区域 ID 和 ID。

   ```
   aws ec2 associate-iam-instance-profile --iam-instance-profile Name=my-demo-cloud9-instance-profile --region us-east-2 --instance-id i-12a3b45678cdef9a0
   ```

   在上述命令中，将 `us-east-2` 替换为实例的 AWS 区域 ID，并将 `i-12a3b45678cdef9a0` 替换为实例的 ID。

   例如，要获取实例 ID，您可以运行 Amazon EC2 `describe-instances` 命令，并指定环境的名称和 AWS 区域 ID。

   ```
   aws ec2 describe-instances --region us-east-2 --filters Name=tag:Name,Values=*my-environment* --query "Reservations[*].Instances[*].InstanceId" --output text
   ```

   在上述命令中，将 `us-east-2` 替换为实例的 AWS 区域 ID，并将 `my-environment` 替换为环境名称。

1. 回到环境中， AWS CLI 使用运行`aws configure`命令或aws-shell使用运行`configure`命令。不要为 **AWS 访问密钥 ID** 或 **AWS 秘密访问密钥**指定任何值。在出现每个提示后按 `Enter`。对于**默认区域名称**，请指定离您 AWS 区域 最近的区域或您的 AWS 资源所在的区域。例如，对于美国东部（俄亥俄）区域，请指定 `us-east-2`。有关区域的列表，请参阅**《Amazon Web Services 一般参考》中的 [AWS Regions and Endpoints](https://docs.aws.amazon.com/general/latest/gr/rande.html)。（可选）为 **Default output format（默认输出格式）**指定一个值（如 `json`）。

现在，您可以开始 AWS 服务 从您的环境中进行呼叫。要使用 AWS CLI、或两者进行调用 aws-shell AWS 服务，请参阅[AWS CLI 和 aws-shell 示例](sample-aws-cli.md)。要从您的代码中调用 AWS 服务 ，请参阅其他[教程和示例](tutorials.md)。

## 在环境中创建和存储永久访问凭证
<a name="credentials-permanent-create"></a>

**注意**  
如果您使用的是 AWS Cloud9 EC2 开发环境，我们建议您使用 AWS 托管临时凭证而不是 AWS 永久访问证书。要使用 AWS 托管临时证书，请参阅[AWS 托管的临时证书](security-iam.md#auth-and-access-control-temporary-managed-credentials)。

在本节中，您将使用 AWS Identity and Access Management (IAM) 生成一组永久证书。 AWS CLIaws-shell、或您的代码在调用时可以使用这组证书 AWS 服务。该套装包括 AWS 访问密钥 ID 和私有访问 AWS 密钥，它们是您的用户所独有的 AWS 账户。如果您已经有 AWS 访问密钥 ID 和私有访问 AWS 密钥，请记下这些证书，然后跳到在[环境中存储永久访问证书](#credentials-permanent-create-store)。

您可以使用 [IAM 控制台](#credentials-permanent-create-console)或 [AWS CLI](#credentials-permanent-create-cli) 创建一组永久凭证。

### 授予编程式访问权限
<a name="credentials-permanent-create-console"></a>

如果用户想在 AWS 外部进行交互，则需要编程访问权限 AWS 管理控制台。授予编程访问权限的方式取决于正在访问的用户类型 AWS。

要向用户授予编程式访问权限，请选择以下选项之一。


****  

| 哪个用户需要编程式访问权限？ | 目的 | 方式 | 
| --- | --- | --- | 
| IAM | （推荐）使用控制台凭证作为临时凭证，签署对 AWS CLI AWS SDKs、或的编程请求 AWS APIs。 |  按照您希望使用的界面的说明进行操作。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/cloud9/latest/user-guide/credentials.html)  | 
|  人力身份 （在 IAM Identity Center 中管理的用户）  | 使用临时证书签署向 AWS CLI AWS SDKs、或发出的编程请求 AWS APIs。 |  按照您希望使用的界面的说明进行操作。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/cloud9/latest/user-guide/credentials.html)  | 
| IAM | 使用临时证书签署向 AWS CLI AWS SDKs、或发出的编程请求 AWS APIs。 | 按照 IAM 用户指南中的将[临时证书与 AWS 资源配合使用](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_use-resources.html)中的说明进行操作。 | 
| IAM | （不推荐使用）使用长期凭证签署向 AWS CLI AWS SDKs、或发出的编程请求 AWS APIs。 |  按照您希望使用的界面的说明进行操作。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/cloud9/latest/user-guide/credentials.html)  | 

### 使用创建永久访问证书 AWS CLI
<a name="credentials-permanent-create-cli"></a>

**注意**  
在本节中，我们建议您在中 AWS CLI 使用管理员级别的凭据进行配置。 AWS 账户如果您无法执行此操作，请咨询您的 AWS 账户 管理员。

**注意**  
如果您使用的是[AWS 托管临时凭证](security-iam.md#auth-and-access-control-temporary-managed-credentials)，则不能在 AWS Cloud9 IDE 中使用终端会话来运行本节中的部分或全部命令。为了解决 AWS 安全最佳实践， AWS 托管临时证书不允许运行某些命令。相反，您可以从单独安装的 AWS Command Line Interface (AWS CLI) 中运行这些命令。

运行 IAM `create-access-key` 命令为用户创建新的 AWS 访问 AWS 密钥和相应的私有访问密钥。

```
aws iam create-access-key --user-name MyUser
```

在上述命令中，将 `MyUser` 替换为用户的名称。

在一个安全位置中，保存显示的 `AccessKeyId` 和 `SecretAccessKey` 值。运行 IAM `create-access-key` 命令后，这是您唯一一次可以使用查看用户的 AWS 私有访问密钥。 AWS CLI 要在以后需要为用户生成新的 AWS 私有访问密钥，请参阅 I *AM 用户指南*中的[创建、修改和查看访问密钥 (API、CLI PowerShell)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html#Using_CreateAccessKey_CLIAPI)。

### 在环境中存储永久访问凭证
<a name="credentials-permanent-create-store"></a>

在此过程中，您将使用 AWS Cloud9 IDE 在您的环境中存储您的永久 AWS 访问凭证。此过程假设您已经在中创建了一个环境 AWS Cloud9，打开了该环境，并且正在您的 Web 浏览器中显示 AWS Cloud9 IDE。有关更多信息，请参阅[创建环境](create-environment.md)和[打开环境](open-environment.md)。

**注意**  
以下过程介绍了如何使用环境变量存储您的永久访问凭证。如果您的环境中aws-shell安装了 AWS CLI 或，则可以改为使用 AWS CLI 或的**`configure`**命令aws-shell来存储您的永久访问凭证。**`aws configure`**有关说明，请参阅 *AWS Command Line Interface 用户指南*中的[快速配置](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html#cli-quick-configuration)。

1. 打开环境后，在 AWS Cloud9 IDE 中启动一个新的终端会话（如果尚未启动）。要启动新的终端会话，请在菜单栏上选择 **Window（窗口）**> **New Terminal（新建终端）**。

1. 运行每个以下命令（每次运行一个命令），以设置表示您的永久访问凭证的本地环境变量。在这些命令中，之后`AWS_ACCESS_KEY_ID:`，输入您的 AWS 访问密钥 ID。之后`AWS_SECRET_ACCESS_KEY`，输入您的 AWS 私有访问密钥。之后`AWS_DEFAULT_REGION_ID`，输入与您 AWS 区域 最近的（或您的首选 AWS 区域）关联的 AWS 区域 标识符。有关可用的标识符列表，请参阅**《Amazon Web Services 一般参考》中的 [AWS 区域 and Endpoints](https://docs.aws.amazon.com/general/latest/gr/rande.html)。例如，对于美国东部（俄亥俄州），请使用 `us-east-2`。

   ```
   export AWS_ACCESS_KEY_ID=
   export AWS_SECRET_ACCESS_KEY=
   export AWS_DEFAULT_REGION=
   ```

1. 请注意，上述环境变量仅适用于当前终端会话。要使这些环境变量在终端会话之间可用，您必须将其作为用户环境变量添加到 shell 配置文件中，如下所示。

   1. 在 IDE 的 **Environment（环境）**窗口中，选择齿轮图标，然后选择 **Show Home in Favorites（在收藏夹中显示主页）**。重复该步骤，然后选择 **Show Hidden Files（显示隐藏的文件）**。

   1. 打开 `~/.bashrc` 文件。

   1. 在文件末尾输入或粘贴以下代码。在这些命令中，之后`AWS_ACCESS_KEY_ID:`，输入您的 AWS 访问密钥 ID。之后`AWS_SECRET_ACCESS_KEY`，输入您的 AWS 私有访问密钥。之后`AWS_DEFAULT_REGION_ID`，输入与您 AWS 区域 最近的（或您的首选 AWS 区域）关联的 AWS 区域 标识符。有关可用的标识符列表，请参阅**《Amazon Web Services 一般参考》中的 [AWS 区域 and Endpoints](https://docs.aws.amazon.com/general/latest/gr/rande.html)。例如，对于美国东部（俄亥俄州）区域，请使用 `us-east-2`。

      ```
      export AWS_ACCESS_KEY_ID=
      export AWS_SECRET_ACCESS_KEY=
      export AWS_DEFAULT_REGION=
      ```

   1. 保存该文件。

   1. 获取 `~/.bashrc` 文件以加载这些新环境变量。

      ```
      . ~/.bashrc
      ```

现在，您可以开始 AWS 服务 从您的环境中进行呼叫。要使用 AWS CLI 或调用 AWS 服务，请参阅[AWS CLI 和 aws-shell 示例](sample-aws-cli.md)。aws-shell要从您的代码中调用 AWS 服务 ，请参阅其他[教程和示例](tutorials.md)。