跨帐户Cloudformation宏

时间:2020-02-14 07:59:10

标签: amazon-web-services aws-lambda amazon-cloudformation amazon-iam aws-cloudformation-custom-resource

我正在尝试创建一个将在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)中,该宏将具有用于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吗?

0 个答案:

没有答案