使用共享 AWS 凭证文件 - AWS SDK for .NET

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

使用共享 AWS 凭证文件

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

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

警告

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

注意

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

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

一般信息

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

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

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

配置文件管理示例

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

默认配置文件

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

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

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

以编程方式创建配置文件

本示例向您展示了如何以编程方式创建配置文件并将其保存到共享 AWS 凭证文件。它使用 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
注意

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