Моя цель - отправить журналы контейнера докеров в CloudWatch через terraform. Это роль ECS, которую я использую для IAM:
{
"Version": "2008-10-17",
"Statement": [
{
"Action": "sts:AssumeRole",
"Principal": {
"Service": ["ecs.amazonaws.com", "ec2.amazonaws.com"]
},
"Effect": "Allow"
}
]
}
А вот политика ролей службы ECS:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"elasticloadbalancing:Describe*",
"elasticloadbalancing:DeregisterInstancesFromLoadBalancer",
"elasticloadbalancing:RegisterInstancesWithLoadBalancer",
"ec2:Describe*",
"ec2:AuthorizeSecurityGroupIngress",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": [
"*"
]
}
]
}
В моем определении задачи для контейнера докеров, среди прочего, у меня есть это для ведения журнала cloudwatch:
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-group": "awslog-mylogs",
"awslogs-region": "eu-west-1",
"awslogs-stream-prefix": "awslogs-mylogs-stream"
}
}
(У меня есть группа журналов awslog-mylogs
, предварительно созданная через консоль AWS).
Проблема в том, что если я разверну экземпляр AWS (через Terraform apply) без указанной выше конфигурации ведения журнала для контейнера, все будет работать нормально, и мой контейнер запущен и работает (за исключением, конечно, журналов, которые не отправляются в Cloudwatch). Как только у меня есть эта информация о конфигурации ведения журнала, экземпляр EC2 запускается, но контейнер не запускается должным образом. После ssh-подключения к экземпляру EC2 я обнаружил, что контейнер докера вышел из строя.
Есть идеи, что здесь не так? Что мне может не хватать при настройке отправки журналов в Cloudwatch через terraform?