Amazon cloudformation 从name获取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

您可以在ECS服务的CF模板中使用TargetGroupArn。我遇到的情况是,目标组已经创建,我想将其作为模板的参数

但那些阿恩的很糟糕:

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
  ...
  • 如果要使用可用的目标组,请将目标组名称作为默认参数传递给服务CF模板
  • 在LiestnerRule的Action部分中,内部将默认参数作为对TargetGroupArn的引用,它将获得目标组ARN
  • 检查此链接:

  • 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": {
      }
    }