

AWS Tools for PowerShell V4 已进入维护模式。

我们建议您迁移到 [AWS Tools for PowerShell V5](https://docs.aws.amazon.com/powershell/v5/userguide/)。有关如何迁移的更多详细信息和信息，请参阅我们的[维护模式公告](https://aws.amazon.com/blogs/developer/aws-tools-for-powershell-v4-maintenance-mode-announcement/)。

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

# 使用 AWS CLI 进行门户登录
<a name="creds-idc-cli"></a>

从 Tools for PowerShell 的 4.1.538 版本开始，配置 SSO 凭证并启动 AWS 访问门户会话的推荐方法是使用 [https://docs.aws.amazon.com/powershell/v4/reference/index.html?page=Initialize-AWSSSOConfiguration.html&tocid=Initialize-AWSSSOConfiguration](https://docs.aws.amazon.com/powershell/v4/reference/index.html?page=Initialize-AWSSSOConfiguration.html&tocid=Initialize-AWSSSOConfiguration) 和 [https://docs.aws.amazon.com/powershell/v4/reference/index.html?page=Invoke-AWSSSOLogin.html&tocid=Invoke-AWSSSOLogin](https://docs.aws.amazon.com/powershell/v4/reference/index.html?page=Invoke-AWSSSOLogin.html&tocid=Invoke-AWSSSOLogin) cmdlet，如 [使用 AWS 配置工具身份验证](creds-idc.md) 中所述。如果您无法访问该版本（或更高版本）的 Tools for PowerShell 或无法使用这些 cmdlet，您仍然可以通过使用 AWS CLI 来执行这些任务。

## 通过 AWS CLI 配置 Tools for PowerShell 以使用 IAM Identity Center。
<a name="idc-config-sdk-cli"></a>

如果尚未完成，请确保在继续操作之前[启用并配置 IAM Identity Center](creds-idc.md#idc-config-sso)。

关于如何通过 AWS CLI 配置 Tools for PowerShell 以使用 IAM Identity Center 的信息位于*《AWS SDK 和工具参考指南》*中 [IAM Identity Center 身份验证](https://docs.aws.amazon.com/sdkref/latest/guide/access-sso.html)主题的**步骤 2** 中。完成此配置后，您的系统应包含以下元素：
+ AWS CLI，您可用于在运行应用程序之前启动 AWS 访问门户会话。
+ 该共享 AWS `config` 文件包含一个 [`[default]` 配置文件](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html#file-format-profile)，在该配置文件中包含一组配置值，可以从适用于 PowerShell 的工具中引用这些配置值。要查找此文件的位置，请参阅《AWS 开发工具包和工具参考指南》**中的[共享文件的位置](https://docs.aws.amazon.com/sdkref/latest/guide/file-location.html)。适用于 PowerShell 的工具在向 AWS 发送请求之前，使用配置文件的 SSO 令牌提供程序获取凭证。`sso_role_name` 值是与 IAM Identity Center 权限集关联的 IAM 角色，应允许访问您的应用程序中使用的 AWS 服务。

  以下示例 `config` 文件显示了使用 SSO 令牌提供程序设置的 `[default]` 配置文件。配置文件的 `sso_session` 设置是指所指定的 `sso-session` 节。`sso-session` 节包含启动 AWS 访问门户会话的设置。

  ```
  [default]
  sso_session = my-sso
  sso_account_id = 111122223333
  sso_role_name = SampleRole
  region = us-east-1
  output = json
  
  [sso-session my-sso]
  sso_region = us-east-1
  sso_start_url = https://provided-domain.awsapps.com/start
  sso_registration_scopes = sso:account:access
  ```

**重要**  
您的 PowerShell 会话必须安装并导入以下模块，这样 SSO 解析才能生效：  
`AWS.Tools.SSO`
`AWS.Tools.SSOOIDC`
如果您使用的是旧版本的 Tools for PowerShell 且没有这些模块，您将收到类似于以下的错误：“找不到程序集 AWSSDK.SSOOIDC...”。

## 开始 AWS 访问门户会话
<a name="idc-start-portal-cli"></a>

在运行访问 AWS 服务 的命令之前，您需要有一个活动的 AWS 访问门户会话，以便 Windows PowerShell 工具可以使用 IAM Identity Center 身份验证来解析凭证。根据您配置的会话时长，您的访问权限最终将过期，并且适用于 Windows PowerShell 的工具将遇到身份验证错误。要登录 AWS 访问门户，请在 AWS CLI 中运行以下命令。

```
aws sso login
```

由于您正在使用 `[default]` 配置文件，因此无需使用 `--profile` 选项调用命令。如果您的 SSO 令牌提供程序配置使用命名配置文件，则该命令为 `aws sso login --profile named-profile`。有关命名配置文件的更多信息，请参阅*《AWS SDK 和工具参考指南》*中的[配置文件](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html#file-format-profile)部分。

要测试您是否已拥有活动会话，请运行以下 AWS CLI 命令（命名配置文件的注意事项相同）：

```
aws sts get-caller-identity
```

对此命令的响应应该报告共享 `config` 文件中配置的 IAM Identity Center 账户和权限集。

**注意**  
如果您已经有一个有效的 AWS 访问门户会话并且运行了 `aws sso login`，则无需提供凭证。  
登录过程可能会提示您允许 AWS CLI 访问您的数据。由于 AWS CLI 基于适用于 Python 的 SDK 而构建，因此权限消息可能包含 `botocore` 名称的变体。

## 示例
<a name="idc-short-example-cli"></a>

以下示例说明如何将 IAM Identity Center 与适用于 PowerShell 的工具一起使用。该示例假定以下内容：
+ 您已启用 IAM IAM Identity Center，并按照本主题前面所述对其进行了配置。SSO 属性位于 `[default]` 配置文件中。
+ 当您使用 `aws sso login` 通过 AWS CLI 登录时，该用户至少具有 Amazon S3 的只读权限。
+ 某些 S3 存储桶可供该用户查看。

使用以下 PowerShell 命令显示 S3 存储桶的列表：

```
Install-Module AWS.Tools.Installer
Install-AWSToolsModule S3
# And if using an older version of the AWS Tools for PowerShell:
Install-AWSToolsModule SSO, SSOOIDC

# In older versions of the AWS Tools for PowerShell, we're not invoking a cmdlet from these modules directly, 
# so we must import them explicitly:
Import-Module AWS.Tools.SSO
Import-Module AWS.Tools.SSOOIDC

# Older versions of the AWS Tools for PowerShell don't support the SSO login flow, so login with the CLI
aws sso login

# Now we can invoke cmdlets using the SSO profile
Get-S3Bucket
```

如上所述，由于您正在使用 `[default]` 配置文件，因此无需使用 `-ProfileName` 选项调用 `Get-S3Bucket` cmdlet。如果您的 SSO 令牌提供程序配置在使用指定的配置文件，则命令为 `Get-S3Bucket -ProfileName named-profile`。有关命名配置文件的更多信息，请参阅*《AWS SDK 和工具参考指南》*中的[配置文件](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html#file-format-profile)部分。

## 其他信息
<a name="idc-additional-info-cli"></a>
+ 有关适用于 PowerShell 的工具身份验证的更多选项，例如配置文件和环境变量的使用，请参阅*《AWS 开发工具包和工具参考指南》*中的[配置](https://docs.aws.amazon.com/sdkref/latest/guide/creds-config-files.html)章节。
+ 某些命令需要指定 AWS 区域。有多种方法可以实现，包括 `-Region` cmdlet 选项、`[default]` 配置文件和 `AWS_REGION` 环境变量。有关更多信息，请参阅本指南中的 [指定 AWS 区域](pstools-installing-specifying-region.md) 以及*《AWS SDK 和工具参考指南》*中的 [AWS 区域](https://docs.aws.amazon.com/sdkref/latest/guide/feature-region.html)。
+ 有关最佳实践的更多信息，请参阅《IAM 用户指南》**中的 [IAM 中的安全最佳实践](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)。
+ 要创建短期 AWS 凭证，请参阅《IAM 用户指南》**中的[临时安全凭证](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html)。
+ 要了解其他凭证提供程序，请参阅《AWS 开发工具包和工具参考指南》**中的[标准化凭证提供程序](https://docs.aws.amazon.com/sdkref/latest/guide/standardized-credentials.html)。