的版本 4 (V4) 适用于 .NET 的 Amazon SDK 已经发布!
要开始使用新版本的 SDK,请参阅 适用于 .NET 的 Amazon SDK (V4)开发人员指南,尤其是关于迁移到版本 4 的主题。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用配置 SDK 身份验证 Amazon
使用开发 Amazon 时,您必须确定您的代码是如何进行身份验证的。 Amazon Web Services 服务您可以通过不同的方式配置对 Amazon 资源的编程访问权限,具体取决于环境和可用的 Amazon 访问权限。
要查看 SDK 的各种身份验证方法,请参阅《工具参考指南》和《工具参考指南》中的身份验证Amazon SDKs 和访问权限。
本主题假设新用户正在本地开发,雇主未向其提供身份验证方法,并将使用该用户 Amazon IAM Identity Center 来获取临时证书。如果您的环境与这些假设不符,则本主题中的某些信息可能不适用于您,或者某些信息可能已经提供给您。
配置此环境需要几个步骤,总结如下:
使用控制台凭据登录
您可以使用现有的 Amazon 管理控制台登录凭据以编程方式访问 Amazon 服务。在基于浏览器的身份验证流程之后, Amazon 生成可跨本地开发工具(例如 CL Amazon I Amazon Tools for PowerShell 和适用于.NET v3 的 Amazon SDK)使用的临时证书。
通过此流程,您可以使用在初始账户设置期间创建的根证书、IAM 用户或身份提供商提供的联合身份以及 Amazon CLI 进行身份验证,或者 Amazon Tools for PowerShell 自动为您管理临时证书。这种方法无需在本地存储长期证书,从而增强了安全性。
当您从 Amazon CLI 运行aws login命令时,您可以从活动控制台会话中进行选择,也可以通过基于浏览器的身份验证流程登录,这将自动生成临时证书。临时凭证令牌将在 15 分钟后过期,但是适用于.NET 的 Amazon SDK for v3 会在您请求期间根据需要自动刷新令牌。
警告
.NET 框架目标不支持此功能。
重要
如果您使用控制台凭据进行身份验证,则您的应用程序必须引用以下 NuGet 软件包,这样 Amazon 登录解析才能起作用:
-
AWSSDK. 登录
未能引用这些程序包将导致运行时系统异常。
按照 Amazon CLI 上面给出的步骤登录后,该config文件将如下所示。
[default] login_session = arn:aws:iam::0123456789012:user/usernameregion = us-east-1 [my-dev-profile] login_session = arn:aws:iam::0123456789012:user/usernameregion = us-east-1
启用和配置 IAM Identity Center
要使用 IAM Identity Center,必须先启用并进行配置。要详细了解如何为 SDK 执行此操作,请查看Amazon SDKs 和工具参考指南中 IAM Identity Center 身份验证主题中的步骤 1。具体而言,请按照我没有通过 IAM Identity Center 确立访问权限下的所有必要说明进行操作。
将开发工具包配置为使用 IAM Identity Center。
有关如何配置软件开发工具包以使用 IAM Identity Center 的信息,请参阅《工具参考指南》中 IAM 身份中心身份验证主题的步骤 2。Amazon SDKs 完成此配置后,您的系统应包含以下元素:
-
Amazon CLI,用于在运行应用程序之前启动 Amazon 访问门户会话。
-
共享 Amazon
config文件,其中包含一个[default]配置文件,其中包含一组可从 SDK 中引用的配置值。要查找此文件的位置,请参阅Amazon SDKs 和工具参考指南中的共享文件的位置。在向发送请求之前, 适用于 .NET 的 Amazon SDK 使用配置文件的 SSO 令牌提供者获取凭证。 Amazon Web Servicessso_role_name值是与 IAM Identity Center 权限集关联的 IAM 角色,应允许访问您的应用程序中使用的 Amazon Web Services 服务 。以下示例
config文件显示了使用 SSO 令牌提供程序设置的默认配置文件。配置文件的sso_session设置是指所指定的sso-session节。该sso-session部分包含启动 Amazon 访问门户会话的设置。[default] sso_session = my-sso sso_account_id =111122223333sso_role_name =SampleRoleregion = us-east-1 output = json [sso-session my-sso] sso_region = us-east-1 sso_start_url =https://provided-domain.awsapps.com/startsso_registration_scopes = sso:account:access
重要
如果您使用 Amazon IAM Identity Center 进行身份验证,则您的应用程序必须引用以下 NuGet软件包,这样 SSO 解析才能起作用:
-
AWSSDK.SSO -
AWSSDK.SSOOIDC
未能引用这些程序包将导致运行时系统异常。
启动 Amazon 访问门户会话
在运行可访问的应用程序之前 Amazon Web Services 服务,您需要为开发工具包进行有效的 Amazon 访问门户会话,才能使用 IAM Identity Center 身份验证来解析证书。根据配置的会话时长,访问权限最终将过期,并且开发工具包将遇到身份验证错误。要登录 Amazon 访问门户,请在中运行以下命令 Amazon CLI。
aws sso login
由于您有默认的配置文件设置,因此无需使用 --profile 选项调用该命令。如果您的 SSO 令牌提供程序配置在使用指定的配置文件,则命令为 aws sso login --profile 。named-profile
要测试是否已有活动会话,请运行以下 Amazon CLI 命令。
aws sts get-caller-identity
对此命令的响应应该报告共享 config 文件中配置的 IAM Identity Center 账户和权限集。
注意
如果您已经有一个有效的 Amazon 访问门户会话并且aws sso login正在运行,则无需提供凭据。
登录过程可能会提示您允许 Amazon CLI 访问您的数据。由于 Amazon CLI 是在适用于 Python 的 SDK 之上构建的,因此权限消息可能包含botocore名称的变体。