从名称中获取 TargetGroupArn?
Get TargetGroupArn from name?
您在 ECS 服务的 CF 模板中使用 TargetGroupArn。我有一种情况,目标组已经创建,我想将其作为模板的参数
但是那些 arn 很糟糕:
arn:aws:elasticloadbalancing:us-east-1:123456:targetgroup/mytarget/4ed48ba353064a79
末尾的唯一数字使这几乎不可能。我可以通过名称而不是模板中的完整 arn 来引用目标吗?
也许我可以在这里使用 Fn::GetAtt 但不确定它是什么样子
这行不通:
- TargetGroupArn: !GetAtt mytarget.TargetGroupName
我收到错误:An error occurred (ValidationError) when calling the CreateChangeSet operation: Template error: instance of Fn::GetAtt references undefined resource mytarget
不幸的是,对于 Target Groups,您将无法使用约定来确定它的 ARN,因为末尾有额外的字符串。
如果目标组是在 Cloudformation 中创建的,使用 !Ref myTargetGroup
.
很容易获得 ARN output
如果目标组是在另一个 CF 堆栈中创建的,请在创建 ECS 服务时尝试Exporting the Target Group ARN and use Fn::ImportValue输入目标组 ARN。
Type: "AWS::ECS::Service"
Properties:
...
LoadBalancers:
- ContainerName: MyContainer
ContainerPort: 1234
TargetGroupArn: !ImportValue myExportedTargetGroupARN
...
- 如果您想使用可用的目标组,您可以将目标组名称作为默认参数传递给服务 CF 模板。
- 在 LiestnerRule 的 Action 部分将默认参数作为对 TargetGroupArn 的引用进行内部引用。它将获取目标组 ARN。
- 检查此 link:https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-service.html
{
"Parameters": {
"VPC": {
...
"TargetGroup": {
"Description": "TargetGroup name for ListenerRule",
"Type": "String",
"Default": "my-target"
}
},
"Resources": {
"Service": {
"TaskDefinition": {
....
"ListenerRule": {
....
"Actions": [
{
"TargetGroupArn": {
"Ref": "TargetGroup"
},
"Type": "forward"
}
]
}
},
"ServiceRole": {
}
}
您在 ECS 服务的 CF 模板中使用 TargetGroupArn。我有一种情况,目标组已经创建,我想将其作为模板的参数
但是那些 arn 很糟糕:
arn:aws:elasticloadbalancing:us-east-1:123456:targetgroup/mytarget/4ed48ba353064a79
末尾的唯一数字使这几乎不可能。我可以通过名称而不是模板中的完整 arn 来引用目标吗?
也许我可以在这里使用 Fn::GetAtt 但不确定它是什么样子
这行不通:
- TargetGroupArn: !GetAtt mytarget.TargetGroupName
我收到错误:An error occurred (ValidationError) when calling the CreateChangeSet operation: Template error: instance of Fn::GetAtt references undefined resource mytarget
不幸的是,对于 Target Groups,您将无法使用约定来确定它的 ARN,因为末尾有额外的字符串。
如果目标组是在 Cloudformation 中创建的,使用 !Ref myTargetGroup
.
如果目标组是在另一个 CF 堆栈中创建的,请在创建 ECS 服务时尝试Exporting the Target Group ARN and use Fn::ImportValue输入目标组 ARN。
Type: "AWS::ECS::Service"
Properties:
...
LoadBalancers:
- ContainerName: MyContainer
ContainerPort: 1234
TargetGroupArn: !ImportValue myExportedTargetGroupARN
...
- 如果您想使用可用的目标组,您可以将目标组名称作为默认参数传递给服务 CF 模板。
- 在 LiestnerRule 的 Action 部分将默认参数作为对 TargetGroupArn 的引用进行内部引用。它将获取目标组 ARN。
- 检查此 link:https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-service.html
{ "Parameters": { "VPC": { ... "TargetGroup": { "Description": "TargetGroup name for ListenerRule", "Type": "String", "Default": "my-target" } }, "Resources": { "Service": { "TaskDefinition": { .... "ListenerRule": { .... "Actions": [ { "TargetGroupArn": { "Ref": "TargetGroup" }, "Type": "forward" } ] } }, "ServiceRole": { } }