

的版本 4 (V4) 适用于 .NET 的 AWS SDK 已经发布！

有关重大更改和迁移应用程序的信息，请参阅[迁移主题](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/net-dg-v4.html)。

 [https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/net-dg-v4.html](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/net-dg-v4.html)

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

# 使用共享 AWS 凭据文件
<a name="creds-file"></a>

（请务必查看[有关凭证的重要警告和指南](net-dg-legacy-creds.md#net-dg-config-creds-warnings-and-guidelines)。）

为应用程序提供凭证的一种方法是在*共享 AWS 凭证文件*中创建配置文件，然后将凭证存储在这些配置文件中。这个文件可以被另一个人使用 AWS SDKs。V [isual Studio [AWS Tools for Windows PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/)](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/)、[JetBrains](https://docs.aws.amazon.com/toolkit-for-jetbrains/latest/userguide/)、和 [VS Code](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/) 的 AWS 工具包也可以使用它。[AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/)

**警告**  
为了避免安全风险，在开发专用软件或处理真实数据时，请勿使用 IAM 用户进行身份验证，而是使用与身份提供者的联合身份验证，例如 [AWS IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)。

**注意**  
本主题中的信息适用于需要手动获取和管理短期或长期凭证的情况。有关短期和长期凭证的更多信息，请参阅*AWS SDKs 和工具参考指南*中的[其他身份验证方式](https://docs.aws.amazon.com/sdkref/latest/guide/access-users.html)。  
要了解最佳安全实践，请使用 AWS IAM Identity Center，如中所述[使用进行身份验证 AWS](creds-idc.md)。

## 一般信息
<a name="creds-file-general-info"></a>

默认情况下，共享 AWS 凭据文件位于您的主`.aws`目录中的目录中，其名称为`credentials`：`~/.aws/credentials`（Linux 或 macOS）或`%USERPROFILE%\.aws\credentials`（Windows）。有关其他位置的信息，请参阅《工具参考指南[》*[AWS SDKs 和《工具参考指南](https://docs.aws.amazon.com/sdkref/latest/guide/overview.html)*》中的共享文件位置](https://docs.aws.amazon.com/sdkref/latest/guide/file-location.html)。另请参阅 [访问应用程序中的凭证和配置文件](creds-locate.md)

共享 AWS 凭证文件是一个纯文本文件，遵循某种格式。有关 AWS 凭证文件格式的信息，请参阅[《*AWS SDKs 和工具参考指南》*中的凭证文件格式](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html#file-format-creds)。

您可以通过多种方式管理共享 AWS 凭据文件中的配置文件。
+ 使用任何文本编辑器创建和更新共享 AWS 凭据文件。
+ 使用 [Amazon.Runtime。 CredentialManagement](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/NRuntimeCredentialManagement.html) 适用于 .NET 的 AWS SDK API 的命名空间，如本主题后面所示。
+ 使用适用于 V [isual Studio [AWS Tools for PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/specifying-your-aws-credentials.html)](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/credentials.html)和 [VS Code](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/setup-credentials.html) 的 AWS 工具包的命令和过程。[JetBrains](https://docs.aws.amazon.com/toolkit-for-jetbrains/latest/userguide/setup-credentials.html)
+ 使用 [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html) 命令；例如 `aws configure set aws_access_key_id` 和 `aws configure set aws_secret_access_key` 。

## 配置文件管理示例
<a name="creds-file-examples"></a>

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

### 默认配置文件
<a name="creds-file-default"></a>

共享 AWS 凭据文件几乎总是会有一个名为 defa *ult* 的配置文件。如果未定义其他配置文件，则在此处 适用于 .NET 的 AWS SDK 查找凭据。

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

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

### 以编程方式创建配置文件
<a name="creds-file-create-programmatically"></a>

此示例向您展示如何创建配置文件并以编程方式将其保存到共享 AWS 凭据文件中。它使用 [Amazon.Runtime 的以下类。 CredentialManagement](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/NRuntimeCredentialManagement.html)命名空间：[CredentialProfileOptions[CredentialProfile](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TCredentialProfile.html)](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TCredentialProfileOptions.html)、和[SharedCredentialsFile](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TSharedCredentialsFile.html)。

```
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
```

### 以编程方式更新现有配置文件
<a name="creds-file-update-programmatically"></a>

本示例向您展示了如何以编程方式更新之前创建的配置文件。它使用 [Amazon.Runtime 的以下类。 CredentialManagement](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/NRuntimeCredentialManagement.html)命名空间：[CredentialProfile](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TCredentialProfile.html)和[SharedCredentialsFile](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TSharedCredentialsFile.html)。它还使用 [Amazon](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Amazon/N.html) 命名空间的[RegionEndpoint](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Amazon/TRegionEndpoint.html)类。

```
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 区域 适用于 .NET 的 AWS SDKAWS 区域](net-dg-region-selection.md)。