

 適用於 .NET 的 AWS SDK V3 已進入維護模式。

我們建議您遷移至 [適用於 .NET 的 AWS SDK V4](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/welcome.html)。如需如何遷移的其他詳細資訊和資訊，請參閱我們的[維護模式公告](https://aws.amazon.com/blogs/developer/aws-sdk-for-net-v3-maintenance-mode-announcement/)。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用共用 AWS 登入資料檔案
<a name="creds-file"></a>

（請務必檢閱[登入資料的重要警告和指引](net-dg-legacy-creds.md#net-dg-config-creds-warnings-and-guidelines)。)

為您的應用程式提供登入資料的一種方法是在*共用 AWS 登入資料檔案中*建立設定檔，然後將登入資料存放在這些設定檔中。此檔案可供其他 AWS SDKs使用。它也可以由 [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/)、 和適用於 [Visual Studio](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/)[AWS Tools for Windows PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/)、[JetBrains](https://docs.aws.amazon.com/toolkit-for-jetbrains/latest/userguide/) 和 [VS 程式碼](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/) AWS 的工具組使用。

**警告**  
為避免安全風險，在開發專用軟體或使用真實資料時，請勿使用 IAM 使用者進行身分驗證。相反地，搭配使用聯合功能和身分提供者，例如 [AWS IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html)。

**注意**  
本主題中的資訊適用於您需要手動取得及管理短期或長期憑證的情況。有關短期和長期憑證的其他資訊，請參閱 *AWS SDK 和工具參考指南*中的[其他驗證方法](https://docs.aws.amazon.com/sdkref/latest/guide/access-users.html)。  
如需最佳實務，請使用 AWS IAM Identity Center，如 中所述[設定 SDK 身分驗證](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 登入資料檔案。
+ 使用 適用於 .NET 的 AWS SDK API 的 [Amazon.Runtime.CredentialManagement](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/NRuntimeCredentialManagement.html) 命名空間，如本主題稍後所示。
+ 使用適用於 [Visual Studio](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/credentials.html)、[JetBrains](https://docs.aws.amazon.com/toolkit-for-jetbrains/latest/userguide/setup-credentials.html) 和 VS Code 的 [AWS Tools for PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/specifying-your-aws-credentials.html)和 AWS 工具組命令和程序。 [https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/setup-credentials.html](https://docs.aws.amazon.com/toolkit-for-vscode/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 登入資料檔案幾乎一律會有名為*預設值*的設定檔。如果未定義其他設定檔，則 會在這裡 適用於 .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/v3/apidocs/items/Runtime/NRuntimeCredentialManagement.html) 命名空間： [CredentialProfileOptions](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TCredentialProfileOptions.html)、 [CredentialProfile](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TCredentialProfile.html) 和 [SharedCredentialsFile](https://docs.aws.amazon.com/sdkfornet/v3/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/v3/apidocs/items/Runtime/NRuntimeCredentialManagement.html) 命名空間： [CredentialProfile](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TCredentialProfile.html) 和 [SharedCredentialsFile](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TSharedCredentialsFile.html)。它也會使用 [Amazon](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Amazon/N.html) 命名空間的 [RegionEndpoint](https://docs.aws.amazon.com/sdkfornet/v3/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-dg-region-selection.md)。