Amazon cloudformation 从name获取TargetGroupArn?
您可以在ECS服务的CF模板中使用TargetGroupArn。我遇到的情况是,目标组已经创建,我想将其作为模板的参数 但那些阿恩的很糟糕:Amazon cloudformation 从name获取TargetGroupArn?,amazon-cloudformation,amazon-ecs,Amazon Cloudformation,Amazon Ecs,您可以在ECS服务的CF模板中使用TargetGroupArn。我遇到的情况是,目标组已经创建,我想将其作为模板的参数 但那些阿恩的很糟糕: arn:aws:elasticloadbalancing:us-east-1:123456:targetgroup/mytarget/4ed48ba353064a79 最后那个唯一的数字使得这几乎是不可能的。我是否可以按名称而不是模板中的完整arn引用目标 也许我可以在这里使用Fn::GetAtt,但不确定它看起来像什么 这不起作用: TargetGr
arn:aws:elasticloadbalancing:us-east-1:123456:targetgroup/mytarget/4ed48ba353064a79
最后那个唯一的数字使得这几乎是不可能的。我是否可以按名称而不是模板中的完整arn引用目标
也许我可以在这里使用Fn::GetAtt,但不确定它看起来像什么
这不起作用:
- TargetGroupArn:!GetAtt mytarget.TargetGroupName
我得到错误:
调用CreateChangeSet操作时发生错误(ValidationError):模板错误:Fn::GetAtt引用未定义的资源mytarget的实例
不幸的是,对于目标组,由于末尾有额外的字符串,您将无法使用约定来确定它是ARN
如果目标组是在Cloudformation中创建的,那么使用就很容易获得目标组!参考myTargetGroup
如果目标组是在另一个CF堆栈中创建的,请尝试使用目标组ARN并在创建ECS服务时使用以输入目标组ARN
Type: "AWS::ECS::Service"
Properties:
...
LoadBalancers:
- ContainerName: MyContainer
ContainerPort: 1234
TargetGroupArn: !ImportValue myExportedTargetGroupARN
...
targetgroup不是使用CFD创建的。在这种情况下,您需要将targetgroup ARN作为参数传递,如Sunil V Suggested,这会导致以下错误:
无法担任角色并验证指定的targetGroupArn。请验证正在传递的ECS服务角色是否具有正确的权限。
这是在对ECS服务使用默认的“ecsServiceRole”时。我还尝试将ReadOnly然后AdministratorAccess帐户范围策略添加到此角色,但仍然出现相同的错误。此外,我没有在模板中定义listenerRule,只是指向“LoadBalancers”下的targetGroupArn。侦听器规则指向您定义的ALB。在里面,你将能够指向目标群体。您应该为服务定义默认角色。请参阅此链接以了解服务角色:。
{
"Parameters": {
"VPC": {
...
"TargetGroup": {
"Description": "TargetGroup name for ListenerRule",
"Type": "String",
"Default": "my-target"
}
},
"Resources": {
"Service": {
"TaskDefinition": {
....
"ListenerRule": {
....
"Actions": [
{
"TargetGroupArn": {
"Ref": "TargetGroup"
},
"Type": "forward"
}
]
}
},
"ServiceRole": {
}
}