Получить идентификатор вызывающего абонента AWS с помощью C # SDK - PullRequest
0 голосов
/ 06 мая 2019

Когда я выполняю это с помощью aws cli, i.ex. внутри задачи 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. Я пытался использовать методы, представленные в этом документе , но я вижу некоторые детали, связанные с учетной записью, но не назначенный UserId.

До сих пор я пытался с этим, но я не вижу никакого профиля при запуске в задаче Fargate.

var awsChain = new Amazon.Runtime.CredentialManagement.CredentialProfileStoreChain();
System.Console.WriteLine($"Found {awsChain.ListProfiles().Count} AWS profiles.");

Моя конечная цель - получить ее и добавить к какой-либо задаче, обработанной с помощью Fargate, чтобы сохранить идентификатор корреляции в базе данных в случае сбоя и легко найти поток журнала Fargate.

1 Ответ

0 голосов
/ 18 мая 2019

IAmazonSecurityTokenService предоставит ту же информацию при выполнении с .netcore.Обратите внимание, что приведенный выше пример будет работать только внутри домена 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}");
...