使用共享 Amazon 凭证文件 - Amazon SDK for .NET
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

使用共享 Amazon 凭证文件

(请务必查看有关凭证的重要警告和指南。)

为应用程序提供凭证的一种方法是在共享 Amazon 凭证文件中创建配置文件,然后将凭证存储在这些配置文件中。此文件可由其它 Amazon 开发工具包使用。Amazon CLIAmazon Tools for Windows PowerShell以及 Visual StudioJetBrainsVS Code 的 Amazon 工具包也可以使用它。

警告

为了避免安全风险,在开发专用软件或处理真实数据时,请勿使用 IAM 用户进行身份验证,而是使用与身份提供商的联合身份验证,例如 Amazon IAM Identity Center

注意

本主题中的信息适用于需要手动获取和管理短期或长期凭证的情况。有关短期和长期凭证的更多信息,请参阅《Amazon 开发工具包和工具参考指南》中的其他身份验证方式

要了解最佳安全实践,请使用 Amazon IAM Identity Center,如配置开发工具包身份验证中所述。

一般信息

默认情况下,共享 Amazon 凭证文件位于您的主目录中的 .aws 目录中,名为 credentials;即 ~/.aws/credentials(Linux 或 macOS)或 %USERPROFILE%\.aws\credentials(Windows)。有关其它位置的信息,请参阅 Amazon 开发工具包和工具参考指南中的共享文件的位置。另请参阅访问应用程序中的凭证和配置文件

共享 Amazon 凭证文件是一个纯文本文件,遵循某种格式。有关 Amazon 凭证文件格式的信息,请参阅《Amazon 软件开发工具包和工具参考指南》中的凭证文件的格式

用户可通过多种方式管理共享 Amazon 凭证文件中的配置文件。

配置文件管理示例

以下各部分展示了共享 Amazon 凭证文件中的配置文件示例。一些示例展示了结果,可以通过前面描述的任何凭证管理方法获得。其它示例显展示了如何使用特定方法。

默认配置文件

共享 Amazon 凭证文件几乎始终会有一个名为 default 的配置文件。如果未定义其它配置文件,Amazon SDK for .NET可以在此处查找凭证。

[default] 配置文件通常如下所示。

[default] aws_access_key_id = AKIAIOSFODNN7EXAMPLE aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

以编程方式创建配置文件

本示例向您展示了如何以编程方式创建配置文件并将其保存到共享 Amazon 凭证文件。它使用 Amazon.Runtime.CredentialManagement 命名空间的以下类:CredentialProfileOptionsCredentialProfileSharedCredentialsFile

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 命名空间的以下类:CredentialProfileSharedCredentialsFile。它还使用 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
注意

您也可以使用其它方法在其它位置设置 Amazon 区域。有关更多信息,请参阅配置 Amazon 区域