我正在尝试使用ECS / FARGATE将具有API的docker容器映像部署到AWS上,并且服务任务似乎似乎正在运行时,它没有容器实例关联,因此我无法与我的API通信。一般来说,我对AWS的经验不是很丰富,所以如果我犯了一个菜鸟错误,我会提前道歉。
{
"ipcMode": null,
"executionRoleArn": "arn:...:role/ecsTaskExecutionRole",
"containerDefinitions": [
{
"dnsSearchDomains": null,
"environmentFiles": null,
"logConfiguration": {
"logDriver": "awslogs",
"secretOptions": null,
"options": {
"awslogs-group": "/ecs/my-task-definition",
"awslogs-region": "eu-central-1",
"awslogs-stream-prefix": "ecs"
}
},
"entryPoint": null,
"portMappings": [
{
"hostPort": 5001,
"protocol": "tcp",
"containerPort": 5001
}
],
"command": null,
"linuxParameters": null,
"cpu": 0,
"environment": [ //environmnet variables ],
"resourceRequirements": null,
"ulimits": null,
"dnsServers": null,
"mountPoints": [],
"workingDirectory": null,
"secrets": null,
"dockerSecurityOptions": null,
"memory": null,
"memoryReservation": null,
"volumesFrom": [],
"stopTimeout": null,
"image": "<<ECR_ID>>.dkr.ecr.eu-central-1.amazonaws.com/<<CONTAINER_NAME>>:<<TAG_ID>>",
"startTimeout": null,
"firelensConfiguration": null,
"dependsOn": null,
"disableNetworking": null,
"interactive": null,
"healthCheck": {
"retries": 3,
"command": [
"CMD-SHELL",
"curl -f localhost:5001/status"
],
"timeout": 5,
"interval": 30,
"startPeriod": null
},
"essential": true,
"links": null,
"hostname": null,
"extraHosts": null,
"pseudoTerminal": null,
"user": null,
"readonlyRootFilesystem": null,
"dockerLabels": null,
"systemControls": null,
"privileged": null,
"name": "<<CONTAINER_ID>>"
}
],
"placementConstraints": [],
"memory": "2048",
"taskRoleArn": "arn:...:role/ecsTaskExecutionRole",
"compatibilities": [
"EC2",
"FARGATE"
],
"taskDefinitionArn": "arn:aws:ecs:eu-central-1:893482549503:task-definition/my-task-definition:12",
"family": "my-task-definition",
"requiresAttributes": [
{
"targetId": null,
"targetType": null,
"value": null,
"name": "com.amazonaws.ecs.capability.logging-driver.awslogs"
},
{
"targetId": null,
"targetType": null,
"value": null,
"name": "com.amazonaws.ecs.capability.docker-remote-api.1.24"
},
{
"targetId": null,
"targetType": null,
"value": null,
"name": "ecs.capability.execution-role-awslogs"
},
{
"targetId": null,
"targetType": null,
"value": null,
"name": "com.amazonaws.ecs.capability.ecr-auth"
},
{
"targetId": null,
"targetType": null,
"value": null,
"name": "com.amazonaws.ecs.capability.docker-remote-api.1.19"
},
{
"targetId": null,
"targetType": null,
"value": null,
"name": "com.amazonaws.ecs.capability.task-iam-role"
},
{
"targetId": null,
"targetType": null,
"value": null,
"name": "ecs.capability.container-health-check"
},
{
"targetId": null,
"targetType": null,
"value": null,
"name": "ecs.capability.execution-role-ecr-pull"
},
{
"targetId": null,
"targetType": null,
"value": null,
"name": "com.amazonaws.ecs.capability.docker-remote-api.1.18"
},
{
"targetId": null,
"targetType": null,
"value": null,
"name": "ecs.capability.task-eni"
}
],
"pidMode": null,
"requiresCompatibilities": [
"FARGATE"
],
"networkMode": "awsvpc",
"cpu": "256",
"revision": 12,
"status": "ACTIVE",
"inferenceAccelerators": null,
"proxyConfiguration": null,
"volumes": []
}
使用任务定义创建服务。还将它连接到我的应用程序负载平衡器。
在EC2中,我添加了一个新的ecs-optimized
实例,并通过执行以下操作将其连接到集群:
ECS_CLUSTER=my-cluster >> /etc/ecs/ecs.config
来自实例内部。
我从服务运行任务。
但是我无法从计算机上的curl
得到任何答复。我正在尝试将请求发送到我的负载均衡器,甚至发送到任务提供的公共IP 地址:
我已关注此问题的多个教程,但似乎都没有解决该问题的方法。欢迎提供任何提示,如果缺少某些信息,我会很乐意添加。