如何使用AWS Batch从私有存储库中提取Docker映像?

时间:2020-01-03 12:11:08

标签: amazon-web-services docker aws-batch

我正在使用AWS Batch,并且我的Docker映像托管在私有Nexus存储库中。我正在尝试创建作业定义,但找不到像在ECS中使用任务定义那样指定回购凭证的方法。

我试图像这样在Json中手动指定它:

{
"command": ["aws", "s3", "ls"],
"image": "nexus-docker-repo.xxxxx.xxx/my-image",
"memory": 1024,
"vcpus": 1,
"repositoryCredentials": {
"credentialsParameter": "ARN_OF_CREDENTIALS"
},
"jobRoleArn" : "ARN_OF_THE_JOB"
}

但是当我应用更改时,参数passwordParameter被删除了。我认为不支持。

那么如何使用AWS Batch从私有存储库中提取图像?有可能吗?

谢谢。

2 个答案:

答案 0 :(得分:1)

我在批处理作业定义中都没有看到选项repositoryCredentials

一个安全选项可能是

  1. docker login生成config.json
  2. 将该文件放入s3
  3. 生成可以访问该文件的IAM角色。
  4. 使用
    创建compute environment Launch Template和用户数据以下载config.json
  5. 在该计算环境中运行作业。

答案 1 :(得分:0)

好的,我可以通过修改文件/etc/ecs/ecs.config

来做到这一点。

如果文件不存在,则必须创建它。

然后我必须在该文件中添加这两行:

ECS_ENGINE_AUTH_TYPE=docker
ECS_ENGINE_AUTH_DATA={"https://index.docker.io/v1/":{"username":"admin","password":"admin","email":"admin@example.com "}}

然后我必须重新启动ECS代理:

sudo systemctl restart ecs ## for the Amazon ECS-optimized Amazon Linux 2 AMI
Or
sudo stop ecs && sudo start ecs ## for For the Amazon ECS-optimized Amazon Linux AMI