问题描述
如何创建仅限于一个TargetGroup的权限(授予调用某个lambda函数的权限)?
这听起来很简单,但问题有两个不同的并发症:
- 在下面的示例中没有
SourceArn: !Ref MyTargetGroup
部分,我假设该权限将允许所有TargetGroup调用MyLambda,而不仅仅是我想要的(正确?)。 - 我需要将
DependsOn: LambdaInvokePermission
保留在TargetGroup上,因为否则从头开始部署时启动有时会失败(如果TargetGroup恰好是在权限之前创建的,则会发生这种情况,因为这时TargetGroup没有权限调用lambda,整个启动将失败。 - 通过在下面的示例中添加
SourceArn: !Ref MyTargetGroup
,我引入了循环依赖,这是不可行的。
MyTargetGroup:
Type: AWS::ElasticLoadBalancingV2::TargetGroup
DependsOn: LambdaInvokePermission
Properties:
HealthCheckEnabled: false
targettype: lambda
Targets:
- Id: !GetAtt MyLambda.Arn
LambdaInvokePermission:
Type: AWS::Lambda::Permission
Properties:
FunctionName: !GetAtt MyLambda.Arn
Action: lambda:InvokeFunction
Principal: elasticloadbalancing.amazonaws.com
SourceArn: !Ref MyTargetGroup
我还尝试给TargetGroup指定一个明确的名称,然后静态构造SourceArn(以避免模板中出现明确的循环依赖关系),但是由于TargetGroups always get some random string appended to the end of their ARN,它不起作用。
有什么想法吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)