Я настраиваю архитектуру с несколькими аккаунтами в AWS. Мой домен размещен на route53 в учетной записи root. При создании инфраструктуры в дочерней учетной записи с помощью CDK мне нужно иметь возможность создавать записи route53 (например, корневой домен - test.com, и я хочу, чтобы dev.test.com контролировался дочерней учетной записью). AWS упоминает два способа сделать это: один - делегировать набор записей. Другой - использовать разрешения для нескольких учетных записей.
Я пытаюсь использовать для этого роль перекрестного аккаунта. Я создал роль в дочерней учетной записи и имею разрешение принимать эту роль в родительской учетной записи.
Когда я запускаю cdk deploy
, вся инфраструктура развертывается успешно, за исключением набора записей, потому что роль явно не имеет разрешения.
Вот как выглядит мой код CDK:
this.hostedZone = route53.HostedZone.fromHostedZoneAttributes(this, 'test.com hosted zone', {
hostedZoneId: 'Z2H17K123M6123',
zoneName: 'test.co'
});
new route53.TxtRecord(this, 'TXTRecord', {
zone: this.hostedZone,
recordName: '_foo', // If the name ends with a ".", it will be used as-is;
// if it ends with a "." followed by the zone name, a trailing "." will be added automatically;
// otherwise, a ".", the zone name, and a trailing "." will be added automatically.
// Defaults to zone root if not specified.
values: [
// Will be quoted for you, and " will be escaped automatically.
'Bar!',
'Baz?'
],
ttl: cdk.Duration.minutes(90) // Optional - default is 30 minutes
});
Я получаю следующую ошибку:
API: route53:GetHostedZone User: arn:aws:sts::123:assumed-role/ROLENAME/123 is not authorized to access this resource
new RecordSet (.../infrastructure/node_modules/@aws-cdk/aws-route53/lib/record-set.ts:122:23)
Это политика, которая у меня есть для роли (изначально у меня она была привязана к размещенной зоне в корневой учетной записи, но затем была сделана *):
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"route53:*"
],
"Resource": "*"
}
]
}
Как я могу предоставить этой роли (которая предполагается из родительской учетной записи) доступ к route53 в родительской учетной записи?
Команда, которую я использую для запуска cdk deploy:
aws-vault exec myorg-prestaging -- npx cdk deploy backend-api
Где myorg-prestaging - это профиль, настроенный следующим образом:
[profile myorg]
region=ap-southeast-2
mfa_serial=arn:aws:iam::12332:mfa/[email protected]
[profile myorg-prestaging]
region=ap-southeast-2
role_arn = arn:aws:iam::12333:role/GOFARPRESTAGINGROLE
source_profile = myorg