我有一个需要访问多于一个委托人的lambda,所以我正在寻找方法来在CloudFormation模板中创建所有必要的调用权限。给许多委托人授予对lambda的权限的方法
例如账户123和456将需要访问的MyFunction所以这样的事情会不会工作:
Resources:
LambdaInvokePermission:
Type: AWS::Lambda::Permission
Properties:
FunctionName: arn:aws:lambda:us-west-2:${AWS::AccountId}:MyFunction
Action: lambda:InvokeFunction
Principal: "123,456"
...这是行不通的,因为documentation说,它仅接受字符串,我认为可能将CommaDelimitedList参数传递给CloudFormation模板,并使用Fn:Join可以完成这项工作。这样的事情:
Parameters:
MyAccounts:
Description: All accounts
Type: CommaDelimitedList
...
Resources:
CrossInvokePermission:
Type: AWS::Lambda::Permission
Properties:
Fn::Join:
- ""
- - '{"Principal": {"AWS": ["'
- Fn::Join: ['","', {Ref: MyAccounts} ]
- '"]}, "Action": "lambda:InvokeFunction", "FunctionName" : "'
- arn:aws:lambda:us-west-2:${AWS::AccountId}:function:MyFunction
- '"}'
我的问题是,是否有可能做我想要的?到目前为止,我的努力失败了。