从ECR获取Concourse Docker资源

时间:2017-12-15 09:42:48

标签: concourse

我正在尝试使用存储在AWS EC2 Container服务存储库(ECR)中的Docker资源。配置看起来像:

- name: my-docker-resource
  type: docker-image
  source:
    repository: account-id.dkr.ecr.eu-west-1.amazonaws.com/my-repo
    tag: d196e5688d
    aws_access_key_id: ((docker-aws-access-key-id))
    aws_secrey_access_key: ((docker-aws-secret-access-key))

当我在此资源上运行get的管道时,我看到“没有可用的版本”。

我尝试验证我正在使用的凭据是否允许访问回购:

$(aws ecr get-login --no-include-email --profile concourse)
You must specify a region. You can also configure your region by running "aws configure".

问题1:如何告诉资源使用哪个区域?从repo URL猜到了吗?提供该区域似乎表明凭据具有足够的权限:

$(aws ecr get-login --no-include-email --profile concourse --region eu-west-1)
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Login Succeeded
然后我试着拉回购物。适用于我的机器(tm)。管道仍然说“没有可用的版本”。

我在某地读过自定义repos需要明确说明端口,所以我也试过account-id.dkr.ecr.eu-west-1.amazonaws.com:5000,但无济于事。在标签中使用它也无法在本地使用。

任何指针?

2 个答案:

答案 0 :(得分:0)

突然出现两件事:

  • 广场的docker图像资源经历了许多变化,有些版本不能与ECR一起使用。与您的大厅捆绑在一起的docker-image版本可能已过期。您可以通过声明自定义资源类型来引用最新版本:

resource_types:
  # Override the built-in docker-image to get a recent version
  - name: latest-docker-image
    type: docker-image
    source:
      repository: concourse/docker-image-resource
      tag: latest
resources:
  - name: my-docker-resource
    type: latest-docker-image

  • 端口是必需的,通常是443.尝试:

docker-image

答案 1 :(得分:0)

现在这已经奏效了,虽然我无法真正告诉你“不工作”和“工作”的来源是什么。我目前的配置:

- name: ecr-repository
  type: docker-image
  source:
    repository: ((account_id)).dkr.ecr.eu-west-1.amazonaws.com/myapp
    aws_access_key_id: ((aws_access_key_id))
    aws_secret_access_key: ((aws_secret_access_key))

它与我开始时基本相同。要么我搞砸了凭据或其他一些背景,要么我对我的时机(关于Docker资源图像)感到不走运,正如Phillip建议的那样。