

 適用於 .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/)。

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

# 在應用程式中存取登入資料和設定檔
<a name="creds-locate"></a>

使用登入資料的偏好方法是允許 為您 適用於 .NET 的 AWS SDK 尋找和擷取登入資料，如 中所述[憑證和設定檔解析](creds-assign.md)。

不過，您也可以設定應用程式主動擷取設定檔和登入資料，然後在建立 AWS 服務用戶端時明確使用這些登入資料。

若要主動擷取設定檔和登入資料，請使用 [Amazon.Runtime.CredentialManagement](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/NRuntimeCredentialManagement.html) 命名空間中的類別。
+ 若要在使用 AWS 登入資料檔案格式的檔案中尋找設定檔 ([其預設位置中的共用 AWS 登入資料檔案](creds-file.md)或自訂登入資料檔案），請使用 [SharedCredentialsFile](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TSharedCredentialsFile.html) 類別。為了簡潔起見，此格式的檔案有時會在此文字中簡單地稱為*登入資料檔案*。
+ 若要在 SDK Store 中尋找設定檔，請使用 [NetSDKCredentialsFile](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TNetSDKCredentialsFile.html) 類別。
+ 若要在登入資料檔案和 SDK Store 中搜尋，根據類別屬性的組態，請使用 [CredentialProfileStoreChain](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TCredentialProfileStoreChain.html) 類別。

  您可以使用此類別來尋找設定檔。您也可以使用此類別直接請求 AWS 登入資料，而不是使用`AWSCredentialsFactory`類別 （接下來說明）。
+ 若要從設定檔擷取或建立各種類型的登入資料，請使用 [AWSCredentialsFactory](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TAWSCredentialsFactory.html) 類別。

下列各節提供這些類別的範例。

## 類別 CredentialProfileStoreChain 的範例
<a name="creds-locate-chain"></a>

您可以使用 [TryGetAWSCredentials](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/MCredentialProfileStoreChainTryGetAWSCredentialsStringAWSCredentials.html) 或 [TryGetProfile](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/MCredentialProfileStoreChainTryGetProfileStringCredentialProfile.html) 方法，從 [CredentialProfileStoreChain](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TCredentialProfileStoreChain.html) 類別取得登入資料或設定檔。類別的 `ProfilesLocation` 屬性決定方法的行為，如下所示：
+ 如果 `ProfilesLocation` 是 null 或空白，請在平台支援時搜尋 SDK Store，然後在預設位置搜尋共用的 AWS 登入資料檔案。
+ 如果 `ProfilesLocation` 屬性包含值，請搜尋 屬性中指定的登入資料檔案。

### 從 SDK Store 或共用的登入資料檔案取得 AWS 登入資料
<a name="creds-locate-chain-get-credentials-default-location"></a>

此範例說明如何使用 `CredentialProfileStoreChain`類別取得登入資料，然後使用登入資料來建立 [AmazonS3Client](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/S3/TS3Client.html) 物件。登入資料可以來自軟體開發套件存放區，也可以來自預設位置的共用 AWS 登入資料檔案。

此範例也使用 [Amazon.Runtime.AWSCredentials](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TAWSCredentials.html) 類別。

```
var chain = new CredentialProfileStoreChain();
AWSCredentials awsCredentials;
if (chain.TryGetAWSCredentials("some_profile", out awsCredentials))
{
    // Use awsCredentials to create an Amazon S3 service client
    using (var client = new AmazonS3Client(awsCredentials))
    {
        var response = await client.ListBucketsAsync();
        Console.WriteLine($"Number of buckets: {response.Buckets.Count}");
    }
}
```

### 從 SDK Store 或共用 AWS 登入資料檔案取得設定檔
<a name="creds-locate-chain-get-profile-default-location"></a>

此範例說明如何使用 CredentialProfileStoreChain 類別取得設定檔。登入資料可以來自軟體開發套件存放區，也可以來自預設位置的共用 AWS 登入資料檔案。

此範例也會使用 [CredentialProfile](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TCredentialProfile.html) 類別。

```
var chain = new CredentialProfileStoreChain();
CredentialProfile basicProfile;
if (chain.TryGetProfile("basic_profile", out basicProfile))
{
    // Use basicProfile
}
```

### 從自訂登入資料檔案取得登入資料
<a name="creds-locate-chain-get-credentials-alternate-location"></a>

此範例說明如何使用 CredentialProfileStoreChain 類別取得登入資料。登入資料來自使用 AWS 登入資料檔案格式的檔案，但位於替代位置。

此範例也使用 [Amazon.Runtime.AWSCredentials](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TAWSCredentials.html) 類別。

```
var chain = new
    CredentialProfileStoreChain("c:\\Users\\sdkuser\\customCredentialsFile.ini");
AWSCredentials awsCredentials;
if (chain.TryGetAWSCredentials("basic_profile", out awsCredentials))
{
    // Use awsCredentials to create an AWS service client
}
```

## SharedCredentialsFile 和 AWSCredentialsFactory 類別的範例
<a name="creds-locate-cred-shared-file"></a>

### 使用 SharedCredentialsFile 類別建立 AmazonS3Client
<a name="creds-locate-cred-shared-file-create-s3-client"></a>

此範例說明如何在共用 AWS 登入資料檔案中尋找設定檔、從設定檔建立 AWS 登入資料，然後使用登入資料來建立 [AmazonS3Client](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/S3/TS3Client.html) 物件。此範例使用 [SharedCredentialsFile](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TSharedCredentialsFile.html) 類別。

此範例也會使用 [CredentialProfile](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TCredentialProfile.html) 類別和 [Amazon.Runtime.AWSCredentials](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TAWSCredentials.html) 類別。

```
CredentialProfile basicProfile;
AWSCredentials awsCredentials;
var sharedFile = new SharedCredentialsFile();
if (sharedFile.TryGetProfile("basic_profile", out basicProfile) &&
    AWSCredentialsFactory.TryGetAWSCredentials(basicProfile, sharedFile, out awsCredentials))
{
    // use awsCredentials to create an Amazon S3 service client
    using (var client = new AmazonS3Client(awsCredentials, basicProfile.Region))
    {
        var response = await client.ListBucketsAsync();
        Console.WriteLine($"Number of buckets: {response.Buckets.Count}");
    }
}
```

**注意**  
[NetSDKCredentialsFile](https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/Runtime/TNetSDKCredentialsFile.html) 類別的使用方式完全相同，但您會執行個體化新的 NetSDKCredentialsFile 物件，而不是 SharedCredentialsFile 物件。