serverless-aliyun-function-compute-wnj
Version:
Provider plugin for the Serverless Framework v1.x which adds support for Aliyun Function Compute
56 lines (44 loc) • 2.02 kB
JavaScript
'use strict';
/* eslint no-use-before-define: 0 */
const path = require('path');
const _ = require('lodash');
const BbPromise = require('bluebird');
module.exports = {
prepareDeployment() {
this.provider.initializeTemplate();
const deploymentTemplate = this.serverless.service.provider.compiledConfigurationTemplate;
const resources = deploymentTemplate.Resources;
// resource: oss bucket
const bucketName = this.provider.getDeploymentBucketName();
const bucketId = this.provider.getStorageBucketId();
resources[bucketId] = this.provider.getStorageBucketResource();
// resource: log project
const logProjectId = this.provider.getLogProjectId();
const logProjectResource = this.provider.getLogProjectResource();
_.merge(resources, { [logProjectId]: logProjectResource});
// resource: log store
const logStoreId = this.provider.getLogStoreId();
const logStoreResource = this.provider.getLogStoreResource();
_.merge(resources, { [logStoreId]: logStoreResource});
// resource: log index
const logIndexId = this.provider.getLogIndexId();
const logIndexResource = this.provider.getLogIndexResource();
_.merge(resources, { [logIndexId]: logIndexResource});
// resource: exec role
const execRoleId = this.provider.getExecRoleLogicalId();
const execResource = this.provider.getExecRoleResource();
this.provider.letExecRoleAccessLog(execResource);
const ramRoleStatements = this.serverless.service.provider.ramRoleStatements;
if (Array.isArray(ramRoleStatements)) {
ramRoleStatements.forEach((stmt) => {
// TODO: validation
this.provider.addRamRoleStatementsToExecRole(execResource, stmt);
});
}
resources[execRoleId] = execResource;
const serviceId = this.provider.getServiceId();
resources[serviceId] = this.provider.getServiceResource();
this.serverless.service.provider.compiledConfigurationTemplate = deploymentTemplate;
return BbPromise.resolve();
},
};