有没有办法从 AWS SDK 检索 AWS 凭证信息?

Is there a way to retrieve AWS Credentials information from AWS SDK?

我正在尝试为我的 dotnet 核心 3.1 API 设置一些必需服务的健康检查,但我正在努力进行 Amazon DynamoDB 检查。

我们正在使用 Xabaril healthcheck packages 和 DynamoDb 请求一个需要 AccessKeySecretKeyRegionEndpoint.

的 DynamoDBOptions

我知道 AWS SDK 从环境凭据配置文件配置中获取此信息:

using Amazon.DynamoDBv2;
//... other usings

public void ConfigureServices(IServiceCollection services)
{
    // ... other stufs
    services.AddAWSService<IAmazonDynamoDB>();
    // ...
}

...但我也需要得到它才能像这样设置我的依赖性健康检查:

    services.AddHealthChecks()
        .AddDynamoDb(dynamoDbOptions => 
            { 
                dynamoDbOptions .AccessKey = "<???>";
                dynamoDbOptions .RegionEndpoint = Amazon.RegionEndpoint.EUWest2; // <???>
                dynamoDbOptions .SecretKey = "<???>";
            }, "DynamoDB");

如何从 AWS SDK 包中获取此 <???> 信息?

是的,AWS SDK 提供对存储在本地 shared AWS credentials file.

中的 IAM AccessKeySecretKey 凭据的编程访问

我不是 c# 开发人员,但也许看到了 .net sdk AWSCredentialsFactory.GetAWSCredentials method or this blogpost

在官方文档中花了更多时间后,我找到了恰好涵盖此需求的主题:Accessing credentials and profiles in an application

To actively retrieve profiles and credentials, use classes from the Amazon.Runtime.CredentialManagement namespace.

其实我们可以使用SharedCredentialsFileclass在使用AWS凭证文件格式的文件中查找配置文件,NetSDKCredentialsFileclass查找SDK 商店中的个人资料,甚至 CredentialProfileStoreChain 都可以搜索。

您可以在上面的 link 中查看示例。我的情况是这样的:

private static AWSCredentials GetAccountCredentials(string profileName = "default")
{
    var chain = new CredentialProfileStoreChain();
    if (chain.TryGetAWSCredentials(profileName, out AWSCredentials awsCredentials))
        return awsCredentials;

    // ToDo: Error Handler
    return null;
}