我尝试在 EC2 上使用 AWS ECS,但我的部署始终处于“待处理”状态,当我 ssh 进入计算机时,
docker images
显示它没有下载映像 (nginx:latest
),并且我可以从日志中看出它甚至没有尝试。我可以手动 docker pull
和 docker run
,然后它会按预期运行。我还尝试过更改 awsvpc、网桥和主机之间的网络模式,没有任何区别。安全组允许所有流量进出,我使用的是默认的公共 VPC。以防万一,我在 Amazon Linux 2023 上使用 t2.micro 实例,并且为任务和容器提供 1vCPU 和 1GB 内存。
日志中有一条可疑消息,但我不确定如何修复它,即使这是原因。
Error: AccessDeniedException: User: [snip] is not authorized to perform: ssm:UpdateInstanceInformation on resource: [snip] because no identity-based policy allows the ssm:UpdateInstanceInformation action.
我认为您在 EC2 实例中没有 docker hub 凭证,因此您可以运行命令以使用您的 aws 凭证登录 AWS Private Registry
(Get-ECRLoginCommand).Password | docker login --username AWS
--password-stdin aws_account_id.dkr.ecr.region.amazonaws.com
如果您使用第三方 docker hub 或 ghcr.io 等 github 注册表,这种情况也是如此。希望这对你有帮助