Я создаю избыточный реестр схем, размещенный в Amazon для нашего кластера MSK Kafka, с помощью кластера ECS.
Задаче SchemaRegistry TaskDefinition необходимо определить имя хоста, уникальное для каждой задачи при запуске.
SchemaRegistryTaskDefinition:
Type: AWS::ECS::TaskDefinition
Properties:
Family: !Ref SchemaRegistryTaskName
RequiresCompatibilities: [ EC2 ]
NetworkMode: bridge
Cpu: !Ref CPUReservation
Memory: !Ref MemoryReservation
Volumes: []
ContainerDefinitions:
- Name: !Ref SchemaRegistryTaskName
Image: !Ref SchemaRegistryTaskImage
Essential: true
PortMappings:
- ContainerPort: !Ref SchemaRegistryPort
HostPort: 0 # Randomly assigned port from the ephemeral port range.
Environment:
- Name: AWS_DEFAULT_REGION
Value: !Ref AWS::Region
- Name: SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS
Value: !Ref MskBrokerUrls
- Name: SCHEMA_REGISTRY_HOST_NAME
Value: $HOSTNAME
LogConfiguration:
LogDriver: awslogs
Options:
awslogs-group: !Ref 'CloudwatchLogsGroup'
awslogs-region: !Ref 'AWS::Region'
Примечание: Использование $ Hostname работает при непосредственном запуске док-контейнерав экземпляре EC2 через cli, потому что оболочка подставляет полное имя хоста, которое является уникальным;но я не могу понять, как заставить это работать в ECS & CloudFormation.