我有一個需要訪問多於一個委託人的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
- '"}'
我的問題是,是否有可能做我想要的?到目前爲止,我的努力失敗了。