Как лучше всего спроектировать лямбда-код REST API AWS и создать dist с помощью gulp для того же? - PullRequest
0 голосов
/ 26 декабря 2018

В моем шлюзе API есть 2 ресурса: app и user, оба из которых имеют настройку CRUD API.И все API обслуживаются из Lambda.

Текущая структура папок исходного кода:

root
 - Lambda
  -- app
   --- GET.app.lambda.js
   --- PUT.app.lambda.js
   --- DELETE.app.lambda.js
  -- user
   --- GET.user.lambda.js
   --- PUT.user.lambda.js
   --- DELETE.user.lambda.js
 - shared
  -- model
   --- user.model.js
   --- app.model.js

. DynamoDB обновляется с использованием user и app модели из /shared/model/user.model.js/shared/model/app.model.js

Я хочу создать отдельный zip-файл для каждого лямбда-файла.например, dist-zip/GET.app.lambda.zip, dist-zip/PUT.app.lambda.zip и т. д. Таким образом, содержимое zip-файла будет

GET.app.lambda.js
/shared/model/user.model.js

Еще одно решение, о котором я подумал, - создать файл 1 js, который использует синтаксис nodejs 8.10, а не es5.Но не смог этого достичь.

Проблема, с которой я сталкиваюсь, заключается в том, что файл модели и файл lambda.js копируются в одну папку dist.Также импорт ~/shared/model/user.model.js становится ../../shared/model/user.model.js в dist/GET.app.lambda.js файле.

Ниже приведен мой файл gulp для создания dist-zip для пользовательского API GET.

var gulp = require('gulp');
var babel = require('gulp-babel');
var zip = require('gulp-zip');
var browserify = require('gulp-browserify')

gulp.task('copy-to-dist', function () {
    return gulp.src([
'shared/model/user.model.js', 
'Lambda/user/GET.user.lambda.js'
])
        .pipe(
            babel({
                "presets": [
                    ["env", {
                        "targets": {
                            "node": "8.10"
                        }
                    }]
                ],
                plugins: [
                    'babel-plugin-root-import',
                ]
            })
        ).pipe(gulp.dest('./dist'))
});

gulp.task('zip', function () {
    return gulp.src(['dist/**/*', 'dist/.*'])
        .pipe(zip('dist.zip'))
        .pipe(gulp.dest('dist-zip/'));
});

gulp.task('build', gulp.series(['copy-to-dist', 'zip']));

Пожалуйста, дайте мнезнать, как настроить gulp для создания js-файла, совместимого с 1 nodejs 8.10, или решить проблему с путём импорта в файлах dist.

...