Как получить accountId, где Lambda развернута программно? - PullRequest
0 голосов
/ 24 сентября 2018

Я хотел бы получить accountId учетной записи AWS, в которой развернута Lambda.

Будет boto3.client ('sts'). Get_caller_identity () ['Account'] вернуть учетную запись lambdaсамого развертывания или учетной записи лямбда-вызывающего абонента?

Как правильно получить Lambda AWS accountId внутри собственного кода?

1 Ответ

0 голосов
/ 24 сентября 2018

Лямбда-прогоны вызываются с набором переменных среды AWS_ACCESS_KEY_ID, AWS_SECRET_KEY, AWS_SESSION_TOKEN и т. Д., Которые совпадают с результатом прямого вызова sts.assume_role (), принимая роль, указанную вконфигурация лямбда-функции.Если вы посмотрите на полный вывод get_caller_identity(), то увидите, что поле Arn - это обычное имя-роли-косой черты-имени-сущности-предполагающей-роли-роли.Поэтому я предполагаю, что значение поля Account технически является учетной записью, владеющей ролью IAM , которая предполагается, но поскольку (AFAIK?) Она должна быть из той же учетной записи, что и сама лямбда-функция,Я думаю, что это надежный индикатор учетной записи лямбда-функции.

Лично я установил переменную окружения AWS_ACCOUNT_ID для большинства / всех моих лямбда-функций, которые действительно легко пройти в CloudFormation как AWS_ACCOUNT_ID: { Ref: "AWS::AccountId" }.

...