View a markdown version of this page

教程:使用 IAM 身份中心在 AWS CLI 中运行 Amazon S3 命令 - AWS Command Line Interface

教程:使用 IAM 身份中心在 AWS CLI 中运行 Amazon S3 命令

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

步骤 1:使用 IAM Identity Center 进行身份验证

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

请按照《AWS IAM Identity Center 用户指南》的入门中的说明操作。此过程激活 IAM Identity Center,创建管理用户并添加适当的最低权限集。

注意

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

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

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

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

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

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

步骤 2:收集 IAM Identity Center 信息

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

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

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

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

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

  2. 或者,从版本 2.22.0 开始,您可以使用新的发布者 URL 来代替启动 URL。发布者 URL 位于 AWS IAM Identity Center 控制台上的下列位置之一:

    • 在控制面板页面上,发布者 URL 位于设置摘要中。

    • 在设置页面上,发布者 URL 位于身份源设置中。

  3. 有关要注册哪些范围值的信息,请参阅《IAM Identity Center 用户指南》中的 OAuth 2.0 访问范围。

步骤 3:创建 Amazon S3 存储桶

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

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

第 4 步:安装 AWS CLI

要安装 AWS CLI,请按照适用操作系统的说明操作。有关更多信息,请参阅 安装或更新最新版本的 AWS CLI。

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

$ aws --version

步骤 5:配置 AWS CLI 配置文件

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

config 文件的 sso-session 部分用于对获取 SSO 访问令牌的配置变量进行分组,然后可以用来获取 AWS 凭证。使用了以下设置:

您可以定义 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

以下示例显示如何使用虚 URL 配置 SSO。如果贵组织提供了重定向到 IAM Identity Center 访问门户的虚 URL(例如 https://aws.mycompany.com),则可以将其作为 SSO 起始 URL 输入。AWS CLI 自动解析重定向并派生区域,因此会跳过 sso_region 提示:

$ aws configure sso SSO session name (Recommended): my-sso SSO start URL [None]: https://aws.mycompany.com SSO registration scopes [None]: sso:account:access

当您使用虚 URL 时,每次运行 aws sso login 时,AWS CLI 都会重新解析重定向。如果组织失效转移到其它区域,则您的下次登录将自动使用新区域。无需更改任何配置。

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

$ aws configure sso --use-device-code

config 文件的 sso-session 部分用于对获取 SSO 访问令牌的配置变量进行分组,然后可以用来获取 AWS 凭证。使用了以下设置:

您定义一个 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

注意

登录过程可能会提示您允许 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 命令

要列出您之前创建的存储桶,请使用 aws s3 ls 命令。以下示例列出您的所有 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

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

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

步骤 9:清理资源

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

问题排查

如果您遇到 AWS CLI 使用问题,请参阅排查 AWS CLI 错误了解故障排除步骤。

其他资源

其他资源如下所示。