#amazon-web-services #aws-cdk
#amazon-web-services #aws-cdk
Вопрос:
В моем сценарии у меня есть 2 учетные записи (11111111, 22222222), которым необходимо вызвать лямбду в 3-й учетной записи: 33333333. Лямбды в 3-й учетной записи будут вызываться из лямбд в первых 2.
Лямбды в 3-й учетной записи создаются «на лету», но мне нужно дать им роль, которую я хочу создать с помощью CDK (что я буду делать, используя кредиты 3-й учетной записи — здесь нет перекрестных учетных записей).
Я следую инструкциям здесь — вызов lambda с использованием STS кажется простым. Что мне не совсем понятно, так это как определить 3-ю роль учетной записи в cdk.
Вот мой стек:
export class ModuleIAMStack extends Stack {
constructor(scope: Construct, id: string, props?: StackProps) {
super(scope, id, props)
const lambdaModuleRole = new Role(this, 'moduleRole', {
roleName: 'moduleRole',
assumedBy: new AccountPrincipal({ accountId: '111111111' }),
managedPolicies: [ManagedPolicy.fromAwsManagedPolicyName('service-role/AWSLambdaBasicExecutionRole')] // My lambdas in 3X... will not need to access any resources so this should be enough to execute
})
}
}
Я неясен в assumedBy
строке. AccountPrincipal
Правильная ли запись? и если да, то как мне войти в учетную запись 22222222?
Комментарии:
1. «Что мне не совсем понятно, так это как определить роль 3-й учетной записи в cdk» — вы ожидаете создать роль в 3-й учетной записи, выполнив код cdk в одном из других? Если это так, я сомневаюсь, что это возможно, если только в вашей 3-й учетной записи вы уже не предоставили другим своим учетным записям доступ ко всем необходимым ресурсам. Мы выполняем операции с x-account между несколькими учетными записями, но у нас уже есть роли, определенные в различных учетных записях, и разрешения, позволяющие этим ролям присваиваться учетной записью, которая выполняет операции с x-account. Бегло взглянул на ссылку, и, похоже, она такая же, как и у нас.
2. Нет, я буду создавать роль в 3-й учетной записи, используя cdk и 3-й учетные записи creds. Никаких проблем нет. Подробнее о том, как определить роль в 3-й учетной записи, ARN которой я буду использовать в учетной записи 1/2 для вызова лямбд 3-й учетной записи. В основном мне неясно,
assumedBy
правильно ли это — как я могу использовать это для 2 учетных записей? Я немного расплывчат в этой части IAM в целом.3. Я никогда не использовал cdk, но из документов кажется
AccountPrincipal
, что это для отдельной учетной записи, тогда как с шаблонами CF / sam (которые мы используем) соответствующее свойство принимает массив номеров учетных записей для применения этого (см. docs.aws.amazon.com/IAM/latest/UserGuide /… ). Возможно, это ограничение cdk?4. Или посмотрите Эту ошибку, зарегистрированную некоторое время назад (по-видимому, теперь исправленную), которая показывает использование этого класса с несколькими идентификаторами учетных записей: github.com/aws/aws-cdk/issues/924
5. Для тех, кто приходит сюда и пытается следить за сообщением в блоге, на которое ссылается вопрос, вот сообщение в блоге, очень похожее на это, но с использованием CDK: faun.pub / …
Ответ №1:
AccountPrincipal
сгенерирует принципал, подобный этому: arn:aws:iam::123456789012:root
. Этого достаточно, чтобы разрешить всю учетную запись.
А что касается CDK — вы почти у цели:
assumedBy: new iam.CompositePrincipal(
new iam.AccountPrincipal('111111111'),
new iam.AccountPrincipal('22222222')
),
Комментарии:
1. Как решить, хочу ли я использовать пользователя вместе с основным пользователем учетной записи?
2. @Judi Вам, вероятно, следует задать новый вопрос, а не добавлять комментарий.
3. означает ли это «предоставить доступ к учетным записям 1 и 2»?
4. @GeoffLangenderfer Да, это правильно.