Получить TargetGroupArn от имени?

Вы используете TargetGroupArn в шаблоне CF для сервисов ECS. У меня есть ситуация, когда целевая группа уже создана, и я хочу сделать это параметром для шаблона

Но эти арны ужасны:

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
1 774
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

К сожалению, с целевыми группами вы не сможете использовать соглашение для определения его ARN из-за дополнительной строки в конце.

Если целевая группа была создана в Cloudformation, достаточно легко получить Выход ARN с помощью !Ref myTargetGroup.

Если целевая группа была создана в другом стеке CF, попробуйте Экспорт ARN целевой группы и используйте Fn :: ImportValue при создании службы ECS для ввода ARN целевой группы.

Type: "AWS::ECS::Service"
Properties: 
  ...
  LoadBalancers:
    - ContainerName: MyContainer
      ContainerPort: 1234
      TargetGroupArn: !ImportValue myExportedTargetGroupARN
  ...

Целевая группа не была создана с помощью cf

red888 08.07.2018 12:54

В этом случае вам нужно будет передать ARN целевой группы в качестве параметра, как предложил Сунил В.

maafk 08.07.2018 20:12
Ответ принят как подходящий
  1. Если вы хотите использовать доступную целевую группу, вы передаете имя целевой группы в качестве параметра по умолчанию в шаблон Service CF.
  2. Внутренне укажите параметр по умолчанию как ссылку на TargetGroupArn в разделе Action LiestnerRule. Он получит ARN целевой группы.
  3. Проверьте эту ссылку: 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": {
  }
}

Это дает мне эту ошибку: Unable to assume role and validate the specified targetGroupArn. Please verify that the ECS service role being passed has the proper permissions. Это происходит при использовании по умолчанию «ecsServiceRole» для службы ECS. Я также попытался добавить ReadOnly, а затем общие политики учетной записи AdministratorAccess к этой роли, но все равно получаю ту же ошибку.

red888 09.07.2018 00:17

также я не определяю listenerRule в шаблоне, просто указываю на targetGroupArn прямо под «LoadBalancers».

red888 09.07.2018 01:17

Правило слушателя должно указывать на определенный вами ALB. внутри вы сможете указать на целевую группу. И вы должны определить роли по умолчанию для службы. Пожалуйста, обратитесь по этой ссылке для роли службы: docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/….

Sunil Valmiki 09.07.2018 08:37

Другие вопросы по теме