Я пытаюсь создать макрос для кросс-аккаунта, который будет использоваться в Cloudformation. В соответствии с do c - https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-macros.html мы должны создавать макросы в разных учетных записях, но базовую лямбду можно использовать повторно, сделав ее доступной для нескольких учетных записей.
Пример примера:
Учетная запись A
В Account_A (2 22222222222) я создал лямбда-функцию "TestMacroFunction", которая используется в макросе.
У меня есть добавлена следующая политика доверия:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "lambda.amazonaws.com",
"AWS": "arn:aws:iam::483427547108:role/service-role/TestLambdaInvoker-role-lu7aa94t"
},
"Action": "sts:AssumeRole"
}
]
}
Учетная запись B
В Account_B (111111111111), которая будет иметь стек облачной информации для макроса и другой стек, который будет использовать макрос.
CFN для макроса
{
"AWSTemplateFormatVersion": "2010-09-09",
"Resources": {
"SageMakerEndpointAlarmsMacro": {
"Type": "AWS::CloudFormation::Macro",
"Properties": {
"Name": "ExternalMacro",
"FunctionName": "arn:aws:lambda:us-east-2:111111111111:function:TestMacroFunction",
"LogGroupName": "MacroLogGroup"
}
}
}
}
CFN для стека с использованием макроса:
{
"AWSTemplateFormatVersion": "2010-09-09",
"Transform": [
"ExternalMacro"
],
"Resources": {
"TestBucket": {
"Type": "AWS::S3::Bucket",
"Properties": {}
}
}
}
При запуске стека CFN я предоставляю роль, к которой прикреплена следующая политика:
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"lambda:InvokeFunction"
],
"Resource": "arn:aws:lambda:us-east-2:111111111111:function:TestMacroFunction",
"Effect": "Allow"
}
]
}
Но все же я получаю ошибку в облачной информации. Преобразование в не выполняется. Также не вызывается лямбда-функция.
Кто-нибудь создал лямбду, которая используется макросами в другом аккаунте?