AWS SDK for .NET V3 已结束支持。
我们建议您迁移到 AWS SDK for .NET V4。有关如何迁移的更多详细信息和信息,请参阅我们的终止支持公告
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用共享 AWS 凭据文件
(请务必查看有关凭证的重要警告和指南。)
为应用程序提供凭证的一种方法是在共享 AWS 凭证文件中创建配置文件,然后将凭证存储在这些配置文件中。这个文件可以被另一个人使用 AWS SDKs。V isual Studio AWS Tools for Windows PowerShell、JetBrains、和 VS Code 的 AWS 工具包也可以使用它。AWS CLI
警告
为了避免安全风险,在开发专用软件或处理真实数据时,请勿使用 IAM 用户进行身份验证,而是使用与身份提供者的联合身份验证,例如 AWS IAM Identity Center。
注意
本主题中的信息适用于需要手动获取和管理短期或长期凭证的情况。有关短期和长期凭证的更多信息,请参阅AWS SDKs 和工具参考指南中的其他身份验证方式。
要了解最佳安全实践,请使用 AWS IAM Identity Center,如中所述配置 SDK 身份验证。
一般信息
默认情况下,共享 AWS 凭据文件位于您的主.aws目录中的目录中,其名称为credentials:~/.aws/credentials(Linux 或 macOS)或%USERPROFILE%\.aws\credentials(Windows)。有关其他位置的信息,请参阅《工具参考指南》AWS SDKs 和《工具参考指南》中的共享文件位置。另请参阅 访问应用程序中的凭证和配置文件
共享 AWS 凭证文件是一个纯文本文件,遵循某种格式。有关 AWS 凭证文件格式的信息,请参阅《AWS SDKs 和工具参考指南》中的凭证文件格式。
您可以通过多种方式管理共享 AWS 凭据文件中的配置文件。
-
使用任何文本编辑器创建和更新共享 AWS 凭据文件。
-
使用 Amazon.Runtime。 CredentialManagement AWS SDK for .NET API 的命名空间,如本主题后面所示。
-
使用适用于 V isual Studio AWS Tools for PowerShell和 VS Code 的 AWS 工具包的命令和过程。JetBrains
-
使用 AWS CLI 命令;例如
aws configure set aws_access_key_id和aws configure set aws_secret_access_key。
配置文件管理示例
以下各节显示共享 AWS 凭据文件中的配置文件示例。一些示例展示了结果,可以通过前面描述的任何凭证管理方法获得。其它示例显展示了如何使用特定方法。
默认配置文件
共享 AWS 凭据文件几乎总是会有一个名为 defa ult 的配置文件。如果未定义其他配置文件,则在此处 AWS SDK for .NET 查找凭据。
[default] 配置文件通常如下所示。
[default] aws_access_key_id = AKIAIOSFODNN7EXAMPLE aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
以编程方式创建配置文件
此示例向您展示如何创建配置文件并以编程方式将其保存到共享 AWS 凭据文件中。它使用 Amazon.Runtime 的以下类。 CredentialManagement命名空间:CredentialProfileOptionsCredentialProfile、和SharedCredentialsFile。
using Amazon.Runtime.CredentialManagement; ... // Do not include credentials in your code. WriteProfile("my_new_profile", SecurelyStoredKeyID, SecurelyStoredSecretAccessKey); ... void WriteProfile(string profileName, string keyId, string secret) { Console.WriteLine($"Create the [{profileName}] profile..."); var options = new CredentialProfileOptions { AccessKey = keyId, SecretKey = secret }; var profile = new CredentialProfile(profileName, options); var sharedFile = new SharedCredentialsFile(); sharedFile.RegisterProfile(profile); }
警告
这样的代码通常不会出现在您的应用程序中。如果在应用程序中包含明文密钥,请采取适当的预防措施,确保在代码、网络甚至计算机内存中都看不到明文密钥。
下面是通过本示例创建的配置文件。
[my_new_profile] aws_access_key_id=AKIAIOSFODNN7EXAMPLE aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
以编程方式更新现有配置文件
本示例向您展示了如何以编程方式更新之前创建的配置文件。它使用 Amazon.Runtime 的以下类。 CredentialManagement命名空间:CredentialProfile和SharedCredentialsFile。它还使用 Amazon 命名空间的RegionEndpoint类。
using Amazon.Runtime.CredentialManagement; ... AddRegion("my_new_profile", RegionEndpoint.USWest2); ... void AddRegion(string profileName, RegionEndpoint region) { var sharedFile = new SharedCredentialsFile(); CredentialProfile profile; if (sharedFile.TryGetProfile(profileName, out profile)) { profile.Region = region; sharedFile.RegisterProfile(profile); } }
以下是更新的配置文件。
[my_new_profile] aws_access_key_id=AKIAIOSFODNN7EXAMPLE aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY region=us-west-2
注意
您也可以使用其他方法在其他位置设置 AWS 区域。有关更多信息,请参阅 配置 AWS 区域。