示例:使用 IAM Identity Center 自动刷新令牌进行身份验证以用于 AWS CDK CLI - AWS Cloud Development Kit (AWS CDK) v2

这是 AWS CDK v2 开发者指南。旧版 CDK v1 于 2022 年 6 月 1 日进入维护阶段,并于 2023 年 6 月 1 日终止支持。

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

示例:使用 IAM Identity Center 自动刷新令牌进行身份验证以用于 AWS CDK CLI

在此示例中,我们将 AWS 命令行界面 (AWS CLI) 配置为使用 AWS IAM Identity Center 令牌提供程序配置对用户进行身份验证。SSO 令牌提供程序配置可让 AWS CLI 自动检索刷新的身份验证令牌以生成可与 AWS 云开发工具包 (AWS CDK) 命令行界面 (AWS CDK CLI) 结合使用的短期凭证。

先决条件

此示例假设已完成以下先决条件:

  • 设置 AWS 和安装我们的入门 CLI 工具所需的先决条件。有关更多信息,请参阅先决条件

  • 我们的组织已设置 IAM Identity Center 作为管理用户的方法。

  • IAM Identity Center 中已至少创建一个用户。

步骤 1:配置 AWS CLI

有关此步骤的详细说明,请参阅《AWS 命令行界面用户指南》中的 Configure the AWS CLI to use IAM Identity Center token provider credentials with automatic authentication refresh

我们登录组织提供的 AWS 访问门户,以收集 IAM Identity Center 信息。这包括 SSO 启动 URLSSO 区域

接下来,我们使用 AWS CLI aws configure sso 命令在本地计算机上配置 IAM Identity Center 配置文件和 sso-session

$ 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 [sso:account:access]: <ENTER>

AWS CLI 尝试打开默认浏览器,开始 IAM Identity Center 账户的登录过程。如果 AWS CLI 无法打开浏览器,会提供相关说明来手动开始登录过程。此过程会将 IAM Identity Center 会话与当前 AWS CLI 会话相关联。

建立会话后,AWS CLI 会显示可供我们使用的 AWS 账户:

There are 2 AWS accounts available to you. > DeveloperAccount, developer-account-admin@example.com (<123456789011>) ProductionAccount, production-account-admin@example.com (<123456789022>)

我们使用箭头键来选择 DeveloperAccount

接下来,AWS CLI 显示所选账户中可供我们使用的 IAM 角色:

Using the account ID There are 2 roles available to you. > ReadOnly FullAccess

我们使用箭头键来选择 FullAccess

接下来,AWS CLI 提示我们通过指定配置文件的默认输出格式、默认 AWS 区域和名称来完成配置:

CLI default client Region [None]: <us-west-2> <ENTER> CLI default output format [None]: <json> <ENTER> CLI profile name [123456789011_FullAccess]: <my-dev-profile> <ENTER>

AWS CLI 会显示最终消息,说明如何将命名配置文件与 AWS CLI 结合使用:

To use this profile, specify the profile name using --profile, as shown: aws s3 ls --profile <my-dev-profile>

完成此步骤后,config 文件将如下所示:

[profile <my-dev-profile>] sso_session = <my-sso> sso_account_id = <123456789011> sso_role_name = <fullAccess> region = <us-west-2> output = <json> [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-session 和命名配置文件来请求安全凭证。

步骤 2:使用 AWS CLI 生成安全凭证

有关此步骤的详细说明,请参阅《AWS 命令行界面用户指南》中的使用 IAM Identity Center 命名配置文件

我们使用 AWS CLI aws sso login 命令请求配置文件的安全证书:

$ aws sso login --profile <my-dev-profile>

AWS CLI 尝试打开默认浏览器并验证 IAM 登录。如果我们当前未登录 IAM Identity Center,将提示我们完成登录过程。如果 AWS CLI 无法打开浏览器,会提供相关说明来手动开始授权过程。

成功登录后,AWS CLI 会缓存 IAM Identity Center 会话凭证。这些凭证包含过期时间戳。凭证过期时,AWS CLI 会请求我们重新登录 IAM Identity Center。

使用有效的 IAM Identity Center 凭证,AWS CLI 会检索在配置文件中指定的用于 IAM 角色的 AWS 凭证。从这里,我们可以将 AWS CDK CLI 与凭证结合使用。

步骤 3:使用 CDK CLI

对于任何 CDK CLI 命令,我们都使用 --profile 选项来指定为其生成凭证的命名配置文件。如果凭证有效,CDK CLI 将成功执行该命令。以下是示例:

$ cdk diff --profile <my-dev-profile> Stack CdkAppStack Hold on while we create a read-only change set to get a diff with accurate replacement information (use --no-change-set to use a less accurate but faster template-only diff) Resources [-] AWS::S3::Bucket amzn-s3-demo-bucket amzn-s3-demo-bucket5AF9C99B destroy Outputs [-] Output BucketRegion: {"Value":{"Ref":"AWS::Region"}} ✨ Number of stacks with differences: 1

凭证过期时,将显示如下错误消息:

$ cdk diff --profile <my-dev-profile> Stack CdkAppStack Unable to resolve AWS account to use. It must be either configured when you define your CDK Stack, or through the environment

要刷新凭证,我们使用 AWS CLI aws sso login 命令:

$ aws sso login --profile <my-dev-profile>