

的版本 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)

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

# 访问应用程序中的凭证和配置文件
<a name="creds-locate"></a>

使用凭据的首选方法是允许为您查找和检索凭证，如中所述[凭证和配置文件解析](creds-assign.md)。 适用于 .NET 的 AWS SDK 

但是，您也可以将应用程序配置为主动检索配置文件和证书，然后在创建 AWS 服务客户端时明确使用这些凭据。

要主动检索个人资料和证书，请使用 [Amazon.Runtime 中的类。 CredentialManagement](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/NRuntimeCredentialManagement.html)命名空间。
+ 要在使用凭据文件格式（[默认位置的共享 AWS 凭 AWS 据文件或自定义凭据文件）的文件中](creds-file.md)查找配置文件，请使用[SharedCredentialsFile](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TSharedCredentialsFile.html)类。为简洁起见，这种格式的文件有时在此文本中简称为*凭证文件*。
+ 要在 SDK 商店中查找配置[SDKCredentials文件，请使用 Net File](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TNetSDKCredentialsFile.html) 类。
+ 要根据类属性的配置同时在凭证文件和 SDK Store 中进行搜索，请使用[CredentialProfileStoreChain](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TCredentialProfileStoreChain.html)类。

  您可以使用该类来查找配置文件。您也可以使用该类直接请求 AWS 凭证，而不是使用该`AWSCredentialsFactory`类（如下所述）。
+ 要从配置文件中检索或创建各种类型的凭证，请使用 F [AWSCredentialsactor](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TAWSCredentialsFactory.html) y 类。

以下部分提供了这些类的示例。

## 课堂示例 CredentialProfileStoreChain
<a name="creds-locate-chain"></a>

您可以使用或[TryGetProfile](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/MCredentialProfileStoreChainTryGetProfileStringCredentialProfile.html)方法从[CredentialProfileStoreChain](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TCredentialProfileStoreChain.html)班级中获取凭证[TryGetAWSCredentials](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/MCredentialProfileStoreChainTryGetAWSCredentialsStringAWSCredentials.html)或配置文件。类的 `ProfilesLocation` 属性将决定方法的行为，如下所示：
+ 如果`ProfilesLocation`为空或为空，则在平台支持的情况下搜索 SDK Store，然后在默认位置搜索共享 AWS 凭据文件。
+ 如果 `ProfilesLocation` 属性包含值，请搜索该属性中指定的凭证文件。

### 从 SDK 商店或共享 AWS 凭证文件获取凭证
<a name="creds-locate-chain-get-credentials-default-location"></a>

本示例向您展示了如何使用 `CredentialProfileStoreChain` 类获取凭证，然后使用这些凭证创建 [AmazonS3Client](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/S3/TS3Client.html) 对象。这些凭证可以来自 SDK Store，也可以来自默认位置的共享 AWS 凭证

此示例还使用了 [Amazon.Runtime。 AWSCredentials](https://docs.aws.amazon.com/sdkfornet/v4/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 商店或共享 AWS 凭证文件中获取个人资料
<a name="creds-locate-chain-get-profile-default-location"></a>

此示例向您展示如何使用该 CredentialProfileStoreChain 类获取个人资料。这些凭据可以来自 SDK Store，也可以来自默认位置的共享 AWS 凭据文件。

此示例还使用了该[CredentialProfile](https://docs.aws.amazon.com/sdkfornet/v4/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/v4/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 和 AWSCredentials工厂的示例
<a name="creds-locate-cred-shared-file"></a>

### 使用课程创建 Amazons3Client SharedCredentialsFile
<a name="creds-locate-cred-shared-file-create-s3-client"></a>

此示例向您展示了如何在共享 AWS 凭证文件中查找个人资料，根据该配置文件创建 AWS 凭证，然后使用这些凭证创建 [Amazons3C](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/S3/TS3Client.html) lient 对象。该示例使用该[SharedCredentialsFile](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TSharedCredentialsFile.html)类。

此示例还使用[CredentialProfile](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TCredentialProfile.html)类和 [Amazon.Runtime。 AWSCredentials](https://docs.aws.amazon.com/sdkfornet/v4/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}");
    }
}
```

**注意**  
[Net SDKCredentials File](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TNetSDKCredentialsFile.html) 类的使用方式完全相同，唯一的不同是你要实例化一个新的 Net SDKCredentials File 对象而不是一个 SharedCredentialsFile 对象。