

# 教程：使用 IAM 身份中心在 AWS CLI 中运行 Amazon S3 命令
<a name="cli-configure-sso-tutorial"></a>

本主题介绍如何配置 AWS CLI，通过使用当前 AWS IAM Identity Center（IAM Identity Center）验证用户身份，来获取针对 Amazon Simple Storage Service（Amazon S3）运行 AWS Command Line Interface（AWS CLI）命令的凭证。

**Topics**
+ [步骤 1：使用 IAM Identity Center 进行身份验证](#cli-configure-sso-tutorial-authentication)
+ [步骤 2：收集 IAM Identity Center 信息](#cli-configure-sso-tutorial-gather)
+ [步骤 3：创建 Amazon S3 存储桶](#cli-configure-sso-tutorial-buckets)
+ [第 4 步：安装 AWS CLI](#cli-configure-sso-tutorial-install)
+ [步骤 5：配置 AWS CLI 配置文件](#cli-configure-sso-tutorial-configure)
+ [步骤 6：登录到 IAM Identity Center](#cli-configure-sso-tutorial-login.title)
+ [步骤 7：运行 Amazon S3 命令](#cli-configure-sso-tutorial-commands)
+ [步骤 8：注销 IAM Identity Center](#cli-configure-sso-tutorial-logout)
+ [步骤 9：清理资源](#cli-configure-sso-tutorial-cleanup)
+ [问题排查](#cli-configure-sso-tutorial-tshoot)
+ [其他资源](#cli-configure-sso-tutorial-resources.title)

## 步骤 1：使用 IAM Identity Center 进行身份验证
<a name="cli-configure-sso-tutorial-authentication"></a>

获取在 IAM Identity Center 中访问 SSO 身份验证的权限。选择下列方法之一来访问您的 AWS 凭证。

### 我尚未通过 IAM Identity Center 确立访问权限
<a name="idc-access"></a>

请按照《AWS IAM Identity Center 用户指南》**的[入门](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html)中的说明操作。此过程激活 IAM Identity Center，创建管理用户并添加适当的最低权限集。

**注意**  
创建应用最低权限的权限集。除非您的雇主已为此目的创建自定义权限集，否则建议使用预定义的 `PowerUserAccess` 权限集。

退出门户并重新登录以查看您的 AWS 账户、编程访问详细信息以及 `Administrator` 和 `PowerUserAccess` 选项。在使用开发工具包时选择 `PowerUserAccess`。

### 我已通过我的雇主管理的联邦身份提供者（例如 Azure AD 或 Okta）获得对 AWS 的访问权限
<a name="federated-access"></a>

通过身份提供者的门户登录 AWS。如果您的云管理员已向您授予 `PowerUserAccess`（开发人员）权限，您将看到您有权访问的 AWS 账户和您的权限集。在您的权限集名称旁边，可以看到有关使用该权限集手动或以编程方式访问账户的选项。

自定义实现可能会产生不同的体验，例如不同的权限集名称。如果您不确定要使用哪个权限集，请联系 IT 团队以寻求帮助。

### 我已通过雇主管理的 AWS 访问门户获得对 AWS 的访问权限
<a name="accessportal-access"></a>

通过您的 AWS 访问门户登录到 AWS。如果您的云管理员已向您授予 `PowerUserAccess`（开发人员）权限，您将看到您有权访问的 AWS 账户和您的权限集。在您的权限集名称旁边，可以看到有关使用该权限集手动或以编程方式访问账户的选项。

### 我已通过我的雇主管理的联合自定义身份提供者获得对 AWS 的访问权限
<a name="customfederated-access"></a>

请联系您的 IT 团队以寻求帮助。

## 步骤 2：收集 IAM Identity Center 信息
<a name="cli-configure-sso-tutorial-gather"></a>

获得对 AWS 访问权限后，通过执行以下操作收集 IAM Identity Center 信息：

1. 收集运行 `aws configure sso` 所需的 `SSO Start URL` 和 `SSO Region` 值

   1. 在 AWS 访问门户中，选择用于开发的权限集，然后选择**访问密钥**链接。

   1. 在**获取凭证**对话框中，选择与您的操作系统匹配的选项卡。

   1. 选择 **IAM Identity Center 凭证**方法以获取 `SSO Start URL` 和 `SSO Region` 值。

1. 或者，从版本 2.22.0 开始，您可以使用新的发布者 URL 来代替启动 URL。发布者 URL 位于 AWS IAM Identity Center 控制台上的下列位置之一：
   + 在**控制面板**页面上，发布者 URL 位于设置摘要中。
   + 在**设置**页面上，发布者 URL 位于**身份源**设置中。

1. 有关要注册哪些范围值的信息，请参阅《IAM Identity Center 用户指南》**中的 [OAuth 2.0 访问范围](https://docs.aws.amazon.com/singlesignon/latest/userguide/customermanagedapps-saml2-oauth2.html#oidc-concept)。

## 步骤 3：创建 Amazon S3 存储桶
<a name="cli-configure-sso-tutorial-buckets"></a>

登录到 AWS 管理控制台，然后通过以下网址打开 Amazon S3 控制台：[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

在本教程中，创建几个存储桶，以便稍后在列表中检索。

## 第 4 步：安装 AWS CLI
<a name="cli-configure-sso-tutorial-install"></a>

要安装 AWS CLI，请按照适用操作系统的说明操作。有关更多信息，请参阅 [安装或更新最新版本的 AWS CLI](getting-started-install.md)。

安装完成后，可以通过打开首选终端并运行以下命令来验证安装情况。这应该会显示您已安装的 AWS CLI 版本。

```
$ aws --version
```

## 步骤 5：配置 AWS CLI 配置文件
<a name="cli-configure-sso-tutorial-configure"></a>

使用以下方法之一配置您的配置文件

### 使用 `aws configure sso` 向导配置您的配置文件
<a name="li-configure-sso-tutorial-configure-wizard"></a>

`config` 文件的 `sso-session` 部分用于对获取 SSO 访问令牌的配置变量进行分组，然后可以用来获取 AWS 凭证。使用了以下设置：
+ **（必需）**`sso\$1start\$1url`
+ **（必需）**`sso\$1region`
+ `sso\$1account\$1id`
+ `sso\$1role\$1name`
+ `sso\$1registration\$1scopes`

您可以定义 `sso-session` 部分并将其与配置文件相关联。必须在 `sso-session` 部分配置 `sso_region` 和 `sso_start_url` 设置。通常，必须在 `profile` 部分配置 `sso_account_id` 和 `sso_role_name` 设置，以便 SDK 可以请求 SSO 凭证。

以下示例将 SDK 配置为请求 SSO 凭证并支持自动令牌刷新：

```
$ aws configure sso
SSO session name (Recommended): my-sso
SSO start URL [None]: https://my-sso-portal.awsapps.com/start
SSO region [None]: us-east-1
SSO registration scopes [None]: sso:account:access
```

要获得双栈支持，您可以使用双栈 SSO 起始 URL 格式：

```
$ aws configure sso
SSO session name (Recommended): my-sso
SSO start URL [None]: https://ssoins-1234567890abcdef.portal.us-east-1.app.aws
SSO region [None]: us-east-1
SSO registration scopes [None]: sso:account:access
```

从版本 2.22.0 开始，代码交换的证明密钥（PKCE）授权默认用于 AWS CLI，并且必须在带浏览器的设备上使用。要继续使用设备授权，请附加 `--use-device-code` 选项。

```
$ aws configure sso --use-device-code
```

### 使用 `config` 文件手动配置
<a name="cli-configure-sso-tutorial-configure-manual"></a>

`config` 文件的 `sso-session` 部分用于对获取 SSO 访问令牌的配置变量进行分组，然后可以用来获取 AWS 凭证。使用了以下设置：
+ **（必需）**`sso\$1start\$1url`
+ **（必需）**`sso\$1region`
+ `sso\$1account\$1id`
+ `sso\$1role\$1name`
+ `sso\$1registration\$1scopes`

您定义一个 `sso-session` 部分并将其关联到配置文件。必须在 `sso-session` 部分内设置 `sso_region` 和 `sso_start_url`。通常，`sso_account_id` 和 `sso_role_name` 必须在 `profile` 部分进行设置，以便 SDK 可以请求 SSO 凭证。

以下示例将 SDK 配置为请求 SSO 凭证并支持自动令牌刷新：

```
[profile my-dev-profile]
sso_session = my-sso
sso_account_id = 111122223333
sso_role_name = SampleRole

[sso-session my-sso]
sso_region = us-east-1
sso_start_url = https://my-sso-portal.awsapps.com/start
sso_registration_scopes = sso:account:access
```

要获得双栈支持，请使用双栈 SSO 起始 URL 格式：

```
[profile my-dev-profile]
sso_session = my-sso
sso_account_id = 111122223333
sso_role_name = SampleRole

[sso-session my-sso]
sso_region = us-east-1
sso_start_url = https://ssoins-1234567890abcdef.portal.us-east-1.app.aws
sso_registration_scopes = sso:account:access
```

身份验证令牌缓存到 `~/.aws/sso/cache` 目录下的磁盘上，文件名基于会话名称。

## 步骤 6：登录到 IAM Identity Center
<a name="cli-configure-sso-tutorial-login.title"></a>

**注意**  
登录过程可能会提示您允许 AWS CLI 访问您的数据。由于 AWS CLI 基于 SDK for Python 而构建，因此权限消息可能包含 `botocore` 名称的变体。

要检索和缓存您的 IAM Identity Center 凭证，请在 AWS CLI 中运行以下命令，打开您的默认浏览器并验证您的 IAM Identity Center 登录信息。

```
$ aws sso login --profile my-dev-profile
```

从版本 2.22.0 开始，默认使用 PKCE 授权。要使用设备授权进行登录，请添加 `--use-device-code` 选项。

```
$ aws sso login --profile my-dev-profile --use-device-code
```

## 步骤 7：运行 Amazon S3 命令
<a name="cli-configure-sso-tutorial-commands"></a>

要列出您之前创建的存储桶，请使用 [https://docs.aws.amazon.com/cli/latest/reference/s3/ls.html](https://docs.aws.amazon.com/cli/latest/reference/s3/ls.html) 命令。以下示例列出您的所有 Amazon S3 存储桶。

```
$ aws s3 ls
2018-12-11 17:08:50 my-bucket
2018-12-14 14:55:44 my-bucket2
```

## 步骤 8：注销 IAM Identity Center
<a name="cli-configure-sso-tutorial-logout"></a>

使用完您的 IAM Identity Center 配置文件后，可运行以下命令删除缓存凭证。

```
$ aws sso logout
Successfully signed out of all SSO profiles.
```

## 步骤 9：清理资源
<a name="cli-configure-sso-tutorial-cleanup"></a>

完成本教程后，请清理在本教程中创建的所有不再需要的资源，包括 Amazon S3 存储桶。

## 问题排查
<a name="cli-configure-sso-tutorial-tshoot"></a>

如果您遇到 AWS CLI 使用问题，请参阅[排查 AWS CLI 错误](cli-chap-troubleshooting.md)了解故障排除步骤。

## 其他资源
<a name="cli-configure-sso-tutorial-resources.title"></a>

其他资源如下所示。
+ [AWS CLI 的 AWS IAM Identity Center 概念](cli-configure-sso-concepts.md)
+ [使用 AWS CLI 配置 IAM Identity Center 身份验证](cli-configure-sso.md)
+ [安装或更新最新版本的 AWS CLI](getting-started-install.md)
+ [AWS CLI 中的配置和凭证文件设置](cli-configure-files.md)
+ 《AWS CLI 版本 2 中参考》中的 [https://docs.aws.amazon.com/cli/latest/reference/configure/sso.html](https://docs.aws.amazon.com/cli/latest/reference/configure/sso.html)**
+ 《AWS CLI 版本 2 中参考》中的 [https://docs.aws.amazon.com/cli/latest/reference/configure/sso-session.html](https://docs.aws.amazon.com/cli/latest/reference/configure/sso-session.html)**
+ 《AWS CLI 版本 2 中参考》中的 [https://docs.aws.amazon.com/cli/latest/reference/sso/login.html](https://docs.aws.amazon.com/cli/latest/reference/sso/login.html)**
+ 《AWS CLI 版本 2 中参考》中的 [https://docs.aws.amazon.com/cli/latest/reference/sso/logout.html](https://docs.aws.amazon.com/cli/latest/reference/sso/logout.html)**
+ 《Amazon CodeCatalyst 用户指南》**中的[设置为将 AWS CLI 与 CodeCatalyst 一起使用](https://docs.aws.amazon.com/codecatalyst/latest/userguide/set-up-cli.html)
+ 《IAM Identity Center 用户指南》**中的 [OAuth 2.0 访问范围](https://docs.aws.amazon.com/singlesignon/latest/userguide/customermanagedapps-saml2-oauth2.html#oidc-concept)
+ 《IAM Identity Center 用户指南》**中的[入门教程](https://docs.aws.amazon.com/singlesignon/latest/userguide/tutorials.html)