4

我正在尝试创建一个将在 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 供其他帐户中的宏使用?

4

0 回答 0