TGViewer
AWS Notes AWS Notes @aws_notes · 5.82K subscribers
Post #2839 2.59K
​​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

Поэтому в качестве примера добавим к 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 ~/.docker
cat >> ~/.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/json

oras attach 0123456789012.dkr.ecr.us-east-1.amazonaws.com/myrepo:mytag --artifact-type my/readme ./readme.md:text/markdown


4️⃣ Смотрим снова

(на картинке)


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
More from @aws_notes
  1. Oct 7, 2026People jan! 🥳 We’ve got something exciting: Ready to put your AI skills to the test and c…
  2. Oct 7, 2026Agentic Football Cup | AWS Game Day Friday, Oct 23 · 1:00 PM to 4:00 PM CEST Online Безкош…
  3. Oct 6, 2026AWS Innovation Day 2026: от AI-пилотов к реальным решениям 22 октября в Astana Hub, Астана…
  4. Oct 5, 2026EKS + Kubernetes 1.37 🎉 С официального релиза 1.37 прошло чуть больше месяца и теперь на…
  5. Oct 5, 2026Приглашаем на встречу “Сжечь 50 млрд токенов и собрать кроссплатформенного агента для AI-ф…
  6. Oct 2, 2026#пятничное #перпендикулярныйхайлоад
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →