Еще один день, еще один релиз Apex. На этот раз почти целиком вам принес Мацей!

Оболочка Apex

Во-первых, это небольшая программа под названием apex-shell, которая на самом деле не является частью ядра, но позволяет выполнять команды в AWS Lambda и отвечать результатами в интерактивном REPL.

Это полезно для проверки разрешений ролей AWS IAM, проверки переменных среды или проверки двоичных файлов, доступных для функций AWS Lambda.

Интеграция Terraform

Это только начало (необязательной) интеграции Terraform, однако теперь у нас есть `apex infra`, который делегирует команды Terraform. Мы обертываем Terraform, чтобы обеспечить ARN-функции Lambda, а также обеспечить поддержку среды в ближайшем будущем.

Например:

$ apex infra plan

Эквивалентно:

$ (cd infrastructure && terraform plan -var lambda_function_foo=ARN -var -var lambda_function_bar=ARN)

Позже это, вероятно, будет эквивалентно следующему, когда среды будут полностью поддерживаться в Apex.

$ (cd infrastructure/<env> && terraform plan -var lambda_function_foo=ARN -var -var lambda_function_bar=ARN)

Позже у нас будет более надежная интеграция с Terraform, а также абстракции или генераторы более высокого уровня для общих задач, таких как связывание функций через SNS, Kinesis, SQS и т. Д.

Генератор проектов

Новая команда `apex init` позволяет вам создать новый проект Apex с интерактивными подсказками. Давайте быстро рассмотрим пример с поддержкой Terraform.

Введите название и описание проекта:

Просмотрите план Terraform, чтобы увидеть, что он создаст - в данном случае только роль функции Lambda с доступом к журналам CloudWatch.

Примените изменения для создания роли:

Разверните свою функцию Apex Lambda:

Теперь вызови его!

Сжатые молнии

Zip-файлы теперь сжимаются, давая файлы намного меньшего размера для более быстрого развертывания, ура!

Обнуленное время

Теперь мы всегда обнуляем mtime, особенно для сценариев использования транспиляторов, таких как CoffeeScript или Babel. Это гарантирует, что apex deploy будут развертывать только zip-архивы, содержание которых отличается от текущей версии AWS Lambda.

Ранее выполнение чего-то вроде `coffeescript‹ in.coffee ›out.js` приводило бы к другой контрольной сумме, каждый раз запуская развертывание.

Среда выполнения Java

Поддержка среды выполнения Java была добавлена ​​skarnecki. Загляните в каталог examples.

Больше примеров

Мы добавили ряд новых примеров, а также нормализовали те, которые были ранее.

Просматривать

При использовании Node.js в функциях Lambda полезно использовать сборщик, который эффективно устраняет необходимость запускать `npm install --production` перед развертыванием, поскольку будут скомпилированы только используемые зависимости.

См. Пример просмотра здесь.

Webpack

По той же причине, что упоминалось выше, Webpack полезен для урезания ваших функций для развертывания.

См. Пример веб-пакета здесь.

Непрерывное развертывание

Одна из замечательных особенностей написания инструментов на Go - это двоичное распространение. Это упрощает превращение Apex в контейнер непрерывной интеграции для непрерывного развертывания. Thomas добавил пример для диска с Circle.

Поддержка VPC

Мацей добавил поддержку VPC, так как функции AWS Lambda теперь могут выполняться в вашей собственной подсети (ах) VPC. Подробности см. В документации Проект.

Очистка старых функций

Старые функции теперь удаляются автоматически, по умолчанию Apex сохранит 10 версий, однако вы можете указать это число. Это связано с тем, что AWS имеет жесткое ограничение на объем пространства, используемого для всех версий в вашей учетной записи, хотя большой его можно исчерпать.

Разное

Дополнительные изменения или исправления:

  • добавить однострочный установочный скрипт
  • добавить шаблон паритета с .gitignore для .apexignore
  • добавить поддержку профиля AWS по умолчанию
  • изменить версию отката на флаг вместо аргумента
  • изменить обработчик сборки golang на использование «* .go» вместо «main.go»
  • исправить загрузку учетных данных AWS в Windows

Как всегда, чтобы скачать последнее обновление:

$ apex upgrade