AWS Lambda не загружает последний образ автоматически?

У меня есть Lambda, развернутая на AWS. Моя Lambda развернута, использует контейнер для запуска моего кода. Всякий раз, когда мы развертываем новый образ, нам приходится вручную копировать и вставлять URL-адрес в конфигурацию Lambda. Даже если последний образ в ECR имеет URI, который уже настроен в Lambda, Lambda использует образ, когда в последний раз вручную выполнялась настройка. Мне было интересно, есть ли способ, чтобы лямбда автоматически использовала последний образ, развернутый в ECR?

Что я пробовал:

  1. Сохранение одинаковых тегов и имени образа во время развертывания, поэтому URI образа остается прежним. Затем я использую этот URI для настройки своего Lambda.
  2. Использовал «последний» в качестве тега для моего изображения.

Примечание. Bitbucket отправляет изображение в ECR.

См. примечание в разделе Создание образов из базовых образов AWS. Чтобы использовать обновленный базовый образ, необходимо перестроить образ контейнера и обновить код функции.

jarmod 07.02.2023 03:30
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
1
63
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Есть несколько решений для этого странного случая.

  • Удалить образ докера <-- Это трюк, а затем получить новый образ докера с помощью вытягивания докера.

  • Используйте SHA256 для сравнения хеш-строки образа докера. Если хеш-строки отличаются, это разные версии/теги образа докера.

  • Например, вы можете использовать хеш-строку sha256.

docker pull ubuntu@sha256:26c68657ccce2cb0a31b330cb0be2b5e108d467f641c62e13ab40cbec258c68d

Это ожидаемо, так как Lambda не знает, что было отправлено новое изображение.

Для функции, определенной как образ контейнера, Lambda разрешает образ тег к дайджесту изображения. В Amazon ECR, если вы обновите тег изображения до новое изображение, Lambda не обновляет функцию автоматически.

https://docs.aws.amazon.com/cli/latest/reference/lambda/update-function-code.html#update-function-code


После нажатия изображения:

docker tag my-image:latest 123456789.dkr.ecr.eu-west-1.amazonaws.com/my-image:latest
docker push 123456789.dkr.ecr.eu-west-1.amazonaws.com/my-image:latest

Также обновите свою Lambda новым образом:

aws lambda update-function-code \
           --function-name my-lambda \
           --image-uri 123456789.dkr.ecr.eu-west-1.amazonaws.com/my-image:latest
Ответ принят как подходящий

Ответ, который дал Стефан, помог мне добиться того же с помощью Bitbucket Pipelines (моя проблема должна была быть решена на Bitbucket). Вот пример кода:

- pipe: atlassian/aws-lambda-deploy:1.7.0
  variables:
      AWS_DEFAULT_REGION: 'YOPUR_LAMBDA_REGION'
      AWS_OIDC_ROLE_ARN: "ARN_FOR_YOUR_IAM_ROLE"
      FUNCTION_NAME: 'YOUR_FUNCTION'
      COMMAND: 'update'
      IMAGE_URI: 'YOUR_IMAGE_URI'

Чтобы это работало, ваша Lambda должна быть уже настроена, поскольку этот код просто обновляет вашу Lambda.

Другие вопросы по теме