正在从 ECR 获取 Concourse Docker 资源
Fetching Concourse Docker resources from ECR
我正在尝试使用存储在 AWS EC2 容器服务存储库 (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
的管道时,我看到 "no versions available"。
我试图验证我正在使用的凭据是否允许访问存储库:
$(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:如何告诉资源使用哪个区域?它是从回购 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)。管道仍然显示 "no versions available".
我在某处读到自定义存储库需要明确说明端口,所以我也尝试了 account-id.dkr.ecr.eu-west-1.amazonaws.com:5000
,但无济于事。在标签中使用它在本地也根本不起作用。
有什么指点吗?
突然出现两件事:
- 大厅 docker 图像资源经过多次更改,某些版本无法使用 ECR。与您的大厅捆绑在一起的
docker-image
版本可能已过时。您可以通过声明自定义资源类型来引用最新版本:
resource_types:
# Override the built-in <code>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,试试:
- name: my-docker-resource
type: docker-image
source:
repository: account-id.dkr.ecr.eu-west-1.amazonaws.com:443/my-repo
tag: d196e5688d
aws_access_key_id: ((docker-aws-access-key-id))
aws_secrey_access_key: ((docker-aws-secret-access-key))
</pre>
虽然我无法真正告诉您 "not working" 和 "working" 的来源是什么,但现在可以使用了。我当前的配置:
- 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 资源图像),正如菲利普建议的那样。
我正在尝试使用存储在 AWS EC2 容器服务存储库 (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
的管道时,我看到 "no versions available"。
我试图验证我正在使用的凭据是否允许访问存储库:
$(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:如何告诉资源使用哪个区域?它是从回购 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)。管道仍然显示 "no versions available".
我在某处读到自定义存储库需要明确说明端口,所以我也尝试了 account-id.dkr.ecr.eu-west-1.amazonaws.com:5000
,但无济于事。在标签中使用它在本地也根本不起作用。
有什么指点吗?
突然出现两件事:
- 大厅 docker 图像资源经过多次更改,某些版本无法使用 ECR。与您的大厅捆绑在一起的
docker-image
版本可能已过时。您可以通过声明自定义资源类型来引用最新版本:
resource_types:
# Override the built-in <code>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,试试:
- name: my-docker-resource
type: docker-image
source:
repository: account-id.dkr.ecr.eu-west-1.amazonaws.com:443/my-repo
tag: d196e5688d
aws_access_key_id: ((docker-aws-access-key-id))
aws_secrey_access_key: ((docker-aws-secret-access-key))
</pre>
虽然我无法真正告诉您 "not working" 和 "working" 的来源是什么,但现在可以使用了。我当前的配置:
- 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 资源图像),正如菲利普建议的那样。