Skip to content
No description, website, or topics provided.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
cmd
pkg/client
.gitignore
Makefile
README.md
go.mod
go.sum
slides.pdf
template.yml

README.md

ETL-pipeline

Предустановки

Структура проекта

├── cmd
│   ├── extract                         <-- Лямбда получения прайса от поставщика
│   │   ├── extract-dev.yml             <-- Конфигурация для локального тестирования
│   │   ├── main.go                     <-- Исходный код функции получения
│   │   └── scheduled-event.json        <-- Тестовое событие
│   ├── load                            <-- Лямбда выгрузки прайса на сервер интернет-магазина
│   │   ├── load-dev.yml                <-- Конфигурация для локального тестирования
│   │   ├── main.go                     <-- Исходный код функции выгрузки готового прайса
│   │   └── s3-event.json               <-- Тестовое событие
│   └── transform                       <-- Лямбда преобразования формата
│       ├── main.go                     <-- Исходный код функции преобразования
│       ├── s3-event.json               <-- Тестовое событие
│       └── transform-dev.yml           <-- Конфигурация для локального тестирования
├── go.mod                              <-- Зависимости для сборки
├── go.sum
├── Makefile                            <-- Конфигурация сборки make
├── pkg
│   └── client                          <-- Пакет для работы с удалёнными хранилищами
│       ├── ftp.go
│       └── s3.go
├── README.md                           <-- Этот файл
├── slides.pdf                          <-- Презентация
└── template.yml                        <-- Конфигурация развертывания в AWS

Сборка

make build

Тестирование и запуск

Для локального тестирования нужно собрать функцию и запустить её, используя sam, например:

make build
cd cmd/extract
sam local invoke -t extract-dev.yml -e scheduled-event.json

Деплой

Для деплоя в облаке нужно создать аккаунт в AWS После регистрации в панели администратора лучше создать отдельные Access key ID и Secret access key для программного доступа через API и поместить их в файл ~/.aws/credentials:

[default]
aws_access_key_id = YOUR_ACCESS_KEY
aws_secret_access_key = YOUR_SECRET_KEY

Регион по умолчанию, в котором будет происходить деплой, задать в ~/.aws/config

[default]
region = eu-central-1

Эти значения будут использованы по умолчанию при работе утилит sam и aws-cli.

Процессу деплоя нужно передать через переменные окружения несколько значений, это:

  • DEPLOYMENT_NAME - имя, идентифицирующее наш набор функций. Будет использовано для создания единицы развёртывания CloudFormation Stack и S3 Bucket с бинарниками функций.
  • IMPORT_SOURCE_BUCKET_NAME - имя S3 Bucket, использующегося для хранения исходных файлов импортf.
  • IMPORT_RESULT_BUCKET_NAME - имя S3 Bucket, использующегося для хранения файлов? преобразованных в ходе импорта.
  • LOAD_URL - URL FTP-сервера, на который будут загружены файлы, полученные в результате импорта.
  • LOAD_USER - логин для доступа к FTP-серверу.
  • LOAD_PSWD - пароль для доступа к FTP-серверу.
export DEPLOYMENT_NAME=my-lambda-stack-name \
       IMPORT_SOURCE_BUCKET_NAME=my-unique-source-bucket-name \
       IMPORT_RESULT_BUCKET_NAME=my-unique-result-bucket-name \
       LOAD_URL=load-ftp-url \
       LOAD_USER=load-ftp-user \
       LOAD_PSWD=load-ftp-password

make deploy

Если при деплое произошла ошибка, то причину её возникновения можно найти в консоли CloudFormation Stack

Созданные функции можно увидеть в разделе AWS Lambda и даже запустить вручную.

Мониторинг и логи работы функций доступны в CloudWatch

You can’t perform that action at this time.