Вы используете TargetGroupArn в шаблоне CF для сервисов ECS. У меня есть ситуация, когда целевая группа уже создана, и я хочу сделать это параметром для шаблона
Но эти арны ужасны:
arn:aws:elasticloadbalancing:us-east-1:123456:targetgroup/mytarget/4ed48ba353064a79
Уникальный номер в конце делает это практически невозможным. Могу ли я ссылаться на цель по имени вместо полного arn в шаблоне?
Возможно, я могу использовать здесь Fn :: GetAtt, но не уверен, как это выглядит
Это не работает:
Я получаю ошибку: An error occurred (ValidationError) when calling the CreateChangeSet operation: Template error: instance of Fn::GetAtt references undefined resource mytarget





К сожалению, с целевыми группами вы не сможете использовать соглашение для определения его ARN из-за дополнительной строки в конце.
Если целевая группа была создана в Cloudformation, достаточно легко получить Выход ARN с помощью !Ref myTargetGroup.
Если целевая группа была создана в другом стеке CF, попробуйте Экспорт ARN целевой группы и используйте Fn :: ImportValue при создании службы ECS для ввода ARN целевой группы.
Type: "AWS::ECS::Service"
Properties:
...
LoadBalancers:
- ContainerName: MyContainer
ContainerPort: 1234
TargetGroupArn: !ImportValue myExportedTargetGroupARN
...
В этом случае вам нужно будет передать ARN целевой группы в качестве параметра, как предложил Сунил В.
{ "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 к этой роли, но все равно получаю ту же ошибку.
также я не определяю listenerRule в шаблоне, просто указываю на targetGroupArn прямо под «LoadBalancers».
Правило слушателя должно указывать на определенный вами ALB. внутри вы сможете указать на целевую группу. И вы должны определить роли по умолчанию для службы. Пожалуйста, обратитесь по этой ссылке для роли службы: docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/….
Целевая группа не была создана с помощью cf