为何AWS CDK推送镜像时出现停滞?
AWS CDK 镜像推送停滞问题排查与解决
问题现象
部署AWS CDK时,镜像推送环节停滞,日志输出如下:
推送指向仓库 [123456789123.dkr.ecr.us-east-1.amazonaws.com/cdk-hnb659fds-container-assets-123456789123-us-east-1] 5f70bf18a086: 准备中 ... ffb3cc8166fd: 已推送 41cc91312edea76dd64e98cc1c80d6c3751c805cbf8e6c8d7eda37f751ac2474: 摘要: sha256:bac65befc114dca10dc6ba6ab422ccbcb45d5ad090f77527f098cd4cf13fa70f 大小: 3242
排查与解决方法
- 检查网络连通性:目标ECR仓库位于us-east-1区域,测试本地网络到该仓库地址的连通性。可尝试更换网络环境(如切换到有线网络、更换DNS为8.8.8.8)。
- 重启Docker并清理缓存:Docker守护进程异常可能导致推送停滞,执行以下命令:
# 重启Docker服务(根据操作系统调整命令) sudo systemctl restart docker # 清理Docker缓存 docker system prune -a - 调整CDK部署超时参数:增加部署超时时间并降低资产并行上传数量:
cdk deploy --asset-parallelism 1 --timeout 300 - 验证ECR权限:确保当前AWS身份拥有以下ECR权限:
ecr:GetDownloadUrlForLayer、ecr:BatchGetImage、ecr:BatchCheckLayerAvailability、ecr:InitiateLayerUpload、ecr:UploadLayerPart、ecr:CompleteLayerUpload、ecr:PutImage。 - 手动推送镜像:跳过CDK自动推送,手动完成镜像上传:
- 登录ECR仓库:
aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin 123456789123.dkr.ecr.us-east-1.amazonaws.com - 为本地镜像添加ECR标签:
docker tag [你的本地镜像ID] 123456789123.dkr.ecr.us-east-1.amazonaws.com/cdk-hnb659fds-container-assets-123456789123-us-east-1:latest - 执行推送:
docker push 123456789123.dkr.ecr.us-east-1.amazonaws.com/cdk-hnb659fds-container-assets-123456789123-us-east-1:latest
- 登录ECR仓库:
- 同步CDK版本:确保本地全局CDK版本与项目依赖版本一致,升级到最新稳定版:
npm install -g aws-cdk@latest
内容的提问来源于stack exchange,提问作者Alexey Yunoshev
相关产品推荐
相关产品推荐

