您将CF模板中的TargetGroupArn用于ECS服务。我遇到的情况是已经创建了目标组,因此我想将其作为模板的参数
但是这些警告是可怕的:
arn:aws:elasticloadbalancing:us-east-1:123456:targetgroup/mytarget/4ed48ba353064a79
最后一个唯一的数字使这个几乎不可能。我可以通过名称而不是模板中的完整名称来引用目标吗?
也许我可以在这里使用Fn :: GetAtt,但不确定是什么样子
这不起作用:
我收到错误消息:An error occurred (ValidationError) when calling the CreateChangeSet operation: Template error: instance of Fn::GetAtt references undefined resource mytarget
答案 0 :(得分:1)
{ "Parameters": { "VPC": { ... "TargetGroup": { "Description": "TargetGroup name for ListenerRule", "Type": "String", "Default": "my-target" } }, "Resources": { "Service": { "TaskDefinition": { .... "ListenerRule": { .... "Actions": [ { "TargetGroupArn": { "Ref": "TargetGroup" }, "Type": "forward" } ] } }, "ServiceRole": { } }
答案 1 :(得分:0)
很遗憾,对于目标组,由于末尾有多余的字符串,您将无法使用约定来确定其为ARN。
如果目标组是在Cloudformation中创建的,那么使用!Ref myTargetGroup
就很容易获得ARN output。
如果目标组是在另一个CF堆栈中创建的,请尝试Exporting目标组ARN并在创建ECS服务时使用Fn::ImportValue输入目标组ARN。
Type: "AWS::ECS::Service"
Properties:
...
LoadBalancers:
- ContainerName: MyContainer
ContainerPort: 1234
TargetGroupArn: !ImportValue myExportedTargetGroupARN
...