我正在尝试创建一个将在 Cloudformation 中使用的跨账户宏。根据文档 - https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-macros.html,我们必须在不同账户中创建宏,但可以通过跨账户重新使用底层 lambda无障碍。
示例:
账户 A
在 Account_A(2 22222222222) 中,我创建了一个在宏中使用的 lambda 函数“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) 中,它将有一个用于宏的 cloudformation 堆栈和另一个将使用该宏的堆栈。
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 for Stack 使用宏:
{
"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"
}
]
}
但是我仍然在cloudformation中遇到错误。未执行的转换。也没有调用 lambda 函数。
有没有人创建了一个 lambda 供其他帐户中的宏使用?