当我使用aws cli执行此操作时,即在Fargate任务中,我可以看到UserId
我的应用程序将要使用
aws sts get-caller-identity
在控制台上显示此输出
{
"Arn": "arn:aws:sts::643518765421:assumed-role/url_process_role/6ae81f92-66f3-30de-1eaa-3a7d1902bad9",
"UserId": "ARDYOAZLVOAQXTT5ZXTV4:4ea81f97-66f3-40de-beaa-3a7d1902bad9",
"Account": "692438514791"
}
我想使用C#SDK获得相同的信息。我尝试使用this doc中公开的方法,但可以看到一些与帐户相关的详细信息,但没有看到分配的UserId
。
到目前为止,我已经尝试过此操作,但是在Fargate任务中运行时看不到任何配置文件。
var awsChain = new Amazon.Runtime.CredentialManagement.CredentialProfileStoreChain();
System.Console.WriteLine($"Found {awsChain.ListProfiles().Count} AWS profiles.");
我的最终目标是获取它并将其添加到使用Fargate处理的某些任务中,以在发生故障时轻松地在数据库中保存关联ID,并轻松找到Fargate日志流。
答案 0 :(得分:0)
IAmazonSecurityTokenService
将提供相同的信息。请注意,上面的示例仅在AWS域内运行,因为如果从开发机进行测试,则端点不会公开可用。
var getSessionTokenRequest = new GetSessionTokenRequest
{
DurationSeconds = 7200
};
var stsClient = hostContext.Configuration.GetAWSOptions().CreateServiceClient<IAmazonSecurityTokenService>();
var iden = stsClient.GetCallerIdentityAsync(new GetCallerIdentityRequest { }).Result;
System.Console.WriteLine($"A={iden.Account} ARN={iden.Arn} U={iden.UserId}");