ECR + OCI v1.1 = добавляем любой файл к образу в ECR
0️⃣ Историческая справка
OCI 1.0 появился в далёком 2017-м. Поддержка OCI 1.0 появилась в ECR в 2020-м:
https://aws.amazon.com/blogs/containers/oci-artifact-support-in-amazon-ecr/
Это позволило добавлять Helm чарты сразу к запушенному в ECR образу.
Релиз OCI v1.1 вышел в начале 2024 г. и теперь он поддерживается ECR:
https://aws.amazon.com/about-aws/whats-new/2024/06/amazon-ecr-oci-image-distribution-version-1-1/
Релиз 1.1 позволяет стандартизированно, без костылей с созданием кучи спамовских тэгов, добавить нужное к любому образу.
Документация по поводу работы с OCI в AWS на момент написания крайне ограниченная:
https://docs.aws.amazon.com/AmazonECR/latest/userguide/images.html
Поэтому в качестве примера добавим к
1️⃣ Ставим и настраиваем
https://oras.land/docs/installation/
На момент написания CloudShell по-прежнему на Intel (ужас какой), у кого ARM — нужно будет поменять в ссылке скрипта на
⚠️ Без
Ставим под вашу систему, в случае CloudShell это обычное:
⚠️ Без файла
Создаём, если такого не было:
Если уже был, то просто добавляем строчку:
{
"auths": {
...
2️⃣ Просмотр файлов у образа в ECR
Получим что-то типа:
То есть ничего нет.
3️⃣ Добавляем файлы к образу в ECR
4️⃣ Смотрим снова
(на картинке)
5️⃣ Получаем файлы из ECR
Сначала нужен
Теперь получаем сам файл в папку
Итого: хорошая вещь, можно напихать всякого полезного в CI/CD пайплайны на каждый образ, пользуемся.
#ECR
0️⃣ Историческая справка
OCI 1.0 появился в далёком 2017-м. Поддержка OCI 1.0 появилась в ECR в 2020-м:
https://aws.amazon.com/blogs/containers/oci-artifact-support-in-amazon-ecr/
Это позволило добавлять Helm чарты сразу к запушенному в ECR образу.
Релиз OCI v1.1 вышел в начале 2024 г. и теперь он поддерживается ECR:
https://aws.amazon.com/about-aws/whats-new/2024/06/amazon-ecr-oci-image-distribution-version-1-1/
Релиз 1.1 позволяет стандартизированно, без костылей с созданием кучи спамовских тэгов, добавить нужное к любому образу.
Документация по поводу работы с OCI в AWS на момент написания крайне ограниченная:
https://docs.aws.amazon.com/AmazonECR/latest/userguide/images.html
Поэтому в качестве примера добавим к
sbom.json и readme.md к образу в ECR. Я буду для этого использовать AWS CloudShell.1️⃣ Ставим и настраиваем
oras:https://oras.land/docs/installation/
На момент написания CloudShell по-прежнему на Intel (ужас какой), у кого ARM — нужно будет поменять в ссылке скрипта на
arm64.⚠️ Без
amazon-ecr-credential-helper он даст ошибку:Error: basic credential not foundСтавим под вашу систему, в случае CloudShell это обычное:
sudo yum install amazon-ecr-credential-helper⚠️ Без файла
~/.docker/config.json также будет ошибка:Error: failed to decode config file at /home/cloudshell-user/.docker/config.json: invalid config format: EOFСоздаём, если такого не было:
mkdir ~/.dockercat >> ~/.docker/config.json << EOF{ "credsStore": "ecr-login"}EOFЕсли уже был, то просто добавляем строчку:
{
"credsStore": "ecr-login","auths": {
...
2️⃣ Просмотр файлов у образа в ECR
oras discover 0123456789012.dkr.ecr.us-east-1.amazonaws.com/myrepo:mytagПолучим что-то типа:
0123456789012.dkr.ecr.us-east-1.amazonaws.com/myrepo@sha256:54408c668558c601e7fb564a912343af3edfe5f4f5a1922086a8be87d8f74923То есть ничего нет.
3️⃣ Добавляем файлы к образу в ECR
oras attach 0123456789012.dkr.ecr.us-east-1.amazonaws.com/myrepo:mytag --artifact-type my/sbom ./sbom.json:application/jsonoras attach 0123456789012.dkr.ecr.us-east-1.amazonaws.com/myrepo:mytag --artifact-type my/readme ./readme.md:text/markdown4️⃣ Смотрим снова
(на картинке)
5️⃣ Получаем файлы из ECR
Сначала нужен
digest файла:oras discover --artifact-type 'my/readme' 0123456789012.dkr.ecr.us-east-1.amazonaws.com/myrepo:mytag --format json | jq -r ".manifests[0].digest"Теперь получаем сам файл в папку
myfiles:oras pull 0123456789012.dkr.ecr.us-east-1.amazonaws.com/myrepo@sha256:bdd414443ed04e69a09a9eab979d5e3950197341cc8c81a8d9001431685b571f --output myfilesИтого: хорошая вещь, можно напихать всякого полезного в CI/CD пайплайны на каждый образ, пользуемся.
#ECR
🔥6👍4❤🔥1
S3 как container registry вместо ECR — в 5-8 раз быстрее и в 4 раза дешевле!
https://ochagavia.nl/blog/using-s3-as-a-container-registry/
#S3 #ECR
https://ochagavia.nl/blog/using-s3-as-a-container-registry/
#S3 #ECR
🤔44👍8🤪2
ECR to ECR pull through cache
Вместо репликации для мульти-аккаунт/мульти-регионов, теперь можно включить кэширование:
https://docs.aws.amazon.com/AmazonECR/latest/userguide/pull-through-cache.html
То есть первый раз качается образ из другого региона, после используется лишь кэш из текущего.
Отличная замена предыдущим костылям на синхронизацию плюс экономия на стоимости (когда приходилось всё дублировать).
#ECR #cost_optimization
Вместо репликации для мульти-аккаунт/мульти-регионов, теперь можно включить кэширование:
https://docs.aws.amazon.com/AmazonECR/latest/userguide/pull-through-cache.html
То есть первый раз качается образ из другого региона, после используется лишь кэш из текущего.
Отличная замена предыдущим костылям на синхронизацию плюс экономия на стоимости (когда приходилось всё дублировать).
#ECR #cost_optimization
Amazon
Sync an upstream registry with an Amazon ECR private registry - Amazon ECR
You can sync the contents of an upstream registry with your Amazon ECR private registry.
🔥14