我正在尝试创建一个将在Cloudformation中使用的交叉帐户宏。 根据文档-https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-macros.html,我们必须在不同的帐户中创建宏,但是底层的lambda可以通过跨帐户访问而重新使用。
示例示例:
在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"
}
]
}
在Account_B(111111111111)中,该宏将具有用于Macro的云信息堆栈,而另一个将使用该宏的堆栈。
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"
}
]
}
但是我仍然在cloudformation中出错。转换未执行。另外,lambda函数不会被调用。
有人创建了供其他帐户中的宏使用的lambda吗?