

第 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)

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

# 使用 SDK 存放區 （僅限 Windows)
<a name="sdk-store"></a>

（請務必檢閱[重要的警告和指導方針](net-dg-legacy-creds.md#net-dg-config-creds-warnings-and-guidelines)。)

在 Windows 上，*SDK Store* 是另一個為您的 適用於 .NET 的 AWS SDK 應用程式建立設定檔和存放加密登入資料的地方。它位於 中`%USERPROFILE%\AppData\Local\AWSToolkit\RegisteredAccounts.json`。您可以在開發期間使用 SDK Store 做為[共用 AWS 登入資料檔案](creds-file.md)的替代方案。

**警告**  
為避免安全風險，在開發專用軟體或使用真實資料時，請勿使用 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，如 中所述[使用 驗證 AWS](creds-idc.md)。

## 一般資訊
<a name="sdk-store-general-info"></a>

開發套件存放區提供下列優點：
+ 軟體開發套件存放區中的登入資料會加密，而軟體開發套件存放區位於使用者的主目錄中。此可限制意外暴露您的登入資料的風險。
+ 軟體開發套件存放區也提供登入資料給 [AWS Tools for Windows PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/)和 [AWS Toolkit for Visual Studio](https://docs.aws.amazon.com/AWSToolkitVS/latest/UserGuide/)。

軟體開發套件存放區設定檔是特定主機上特定使用者特有的。您無法複製它們給其他的主機或其他的使用者。這表示您無法為其他主機或開發人員機器重複使用開發機器上的 SDK Store 設定檔。這也表示您無法在生產應用程式中使用 SDK Store 設定檔。

您可以透過下列方式管理 SDK Store 中的設定檔：
+ 使用 中的圖形使用者介面 (GUI)[AWS Toolkit for Visual Studio](https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/credentials.html)。
+ 使用 適用於 .NET 的 AWS SDK API 的 [Amazon.Runtime.CredentialManagement](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/NRuntimeCredentialManagement.html) 命名空間，如本主題稍後所示。
+ 使用來自 的命令[AWS Tools for Windows PowerShell](https://docs.aws.amazon.com/powershell/latest/userguide/specifying-your-aws-credentials.html)，例如 `Set-AWSCredential`和 `Remove-AWSCredentialProfile`。

## 設定檔管理的範例
<a name="sdk-store-examples"></a>

下列範例示範如何在 SDK Store 中以程式設計方式建立和更新設定檔。

### 以程式設計方式建立設定檔
<a name="sdk-store-create-programmatically"></a>

此範例說明如何建立設定檔，並以程式設計方式將其儲存至 SDK 存放區。它使用下列類別的 [Amazon.Runtime.CredentialManagement](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/NRuntimeCredentialManagement.html) 命名空間： [CredentialProfileOptions](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TCredentialProfileOptions.html)、[CredentialProfile](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TCredentialProfile.html) 和 [NetSDKCredentialsFile](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TNetSDKCredentialsFile.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 netSdkStore = new NetSDKCredentialsFile();
    netSdkStore.RegisterProfile(profile);
}
```

**警告**  
這類程式碼通常不應在您的應用程式中。如果您的應用程式包含 ，請採取適當的預防措施，以確保無法在程式碼中、透過網路或甚至電腦記憶體中看到純文字金鑰。

以下是此範例建立的設定檔。

```
"[generated GUID]" : {
    "AWSAccessKey" : "01000000D08...[etc., encrypted access key ID]",
    "AWSSecretKey" : "01000000D08...[etc., encrypted secret access key]",
    "ProfileType"  : "AWS",
    "DisplayName"  : "my_new_profile",
}
```

### 以程式設計方式更新現有的設定檔
<a name="sdk-store-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) 和 [NetSDKCredentialsFile](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TNetSDKCredentialsFile.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 netSdkStore = new NetSDKCredentialsFile();
    CredentialProfile profile;
    if (netSdkStore.TryGetProfile(profileName, out profile))
    {
        profile.Region = region;
        netSdkStore.RegisterProfile(profile);
    }
}
```

以下是更新的設定檔。

```
"[generated GUID]" : {
    "AWSAccessKey" : "01000000D08...[etc., encrypted access key ID]",
    "AWSSecretKey" : "01000000D08...[etc., encrypted secret access key]",
    "ProfileType"  : "AWS",
    "DisplayName"  : "my_new_profile",
    "Region"       : "us-west-2"
}
```

**注意**  
您也可以使用其他方法在其他位置設定 AWS 區域。如需詳細資訊，請參閱[設定 AWS 的區域 適用於 .NET 的 AWS SDKAWS 區域](net-dg-region-selection.md)。