如何从AWS SDK获取AWS凭证及区域信息以配置DynamoDB健康检查
解决方案
你可以通过以下两种方式实现,不需要硬编码凭证和区域配置:
方案1:直接复用已注册的IAmazonDynamoDB实例(更推荐)
Xabaril的DynamoDB健康检查扩展支持直接从DI容器获取你已经通过AddAWSService注册好的DynamoDB客户端,不需要额外配置凭证和区域,代码如下:
services.AddHealthChecks() // 利用带服务提供者的重载,直接复用已注册的DynamoDB客户端 .AddDynamoDb( dynamoDBClientProvider: serviceProvider => serviceProvider.GetRequiredService<IAmazonDynamoDB>(), name: "DynamoDB" );
这种方式完全复用AWS SDK自动加载的凭证、区域配置,不需要你手动读取任何参数,和你现有AWS服务注册逻辑完全对齐,也不会产生多余的容器实例,是最优解。
方案2:手动从AWS SDK配置链读取参数
如果你确实需要手动获取三个参数的值,可以通过AWS SDK的默认凭证提供链和区域提供器读取:
using Amazon; using Amazon.Runtime.CredentialManagement; // 读取凭证 var chain = new CredentialProfileStoreChain(); if (chain.TryGetAWSCredentials("default", out var awsCredentials)) { var credentials = awsCredentials.GetCredentials(); var accessKey = credentials.AccessKey; var secretKey = credentials.SecretKey; } // 读取默认区域 var region = RegionEndpoint.GetBySystemName(Environment.GetEnvironmentVariable("AWS_REGION")) ?? FallbackRegionFactory.GetRegionEndpoint();
读取到对应值后再填入DynamoDB健康检查的配置项即可。
注意:方案2需要注意运行环境的凭证配置链顺序,确保和你注册
IAmazonDynamoDB时的加载逻辑一致,避免出现两边配置不一致的问题。
内容的提问来源于stack exchange,提问作者Diego Rafael Oliveira Souza
相关产品推荐
相关产品推荐

