Estoy tratando de crear una macro de cuentas cruzadas que se usará en Cloudformation. De acuerdo con el documento: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-macros.html , tenemos que crear macros en diferentes cuentas, pero la lambda subyacente se puede reutilizar haciéndola cruzada. accesible.
Ejemplo de muestra:
En Account_A(2 22222222222) he creado una función lambda "TestMacroFunction" que se usa en la macro.
He agregado la siguiente política de confianza:
{ "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" } ] }En Account_B(111111111111) que tendrá una pila de formación de nubes para Macro y otra pila que usará la macro.
CFN para macros
{ "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 para Stack usando macro:
{ "AWSTemplateFormatVersion": "2010-09-09", "Transform": [ "ExternalMacro" ], "Resources": { "TestBucket": { "Type": "AWS::S3::Bucket", "Properties": {} } } }Mientras ejecuto la pila CFN, proporciono un rol que tiene la siguiente política adjunta:
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "lambda:InvokeFunction" ], "Resource": "arn:aws:lambda:us-east-2:111111111111:function:TestMacroFunction", "Effect": "Allow" } ] }Pero aún recibo un error en la formación de la nube. La transformación en no ejecutar. Además, la función lambda no se invoca.
¿Alguien ha creado una lambda que usan las macros en otra cuenta?