forked from mupixa/deploy-lambda
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
103 lines (94 loc) · 2.54 KB
/
index.js
File metadata and controls
103 lines (94 loc) · 2.54 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
// const github = require('@actions/github');
const core = require("@actions/core");
const fs = require("fs");
const AWS = require("aws-sdk");
try {
// Get all parameters
const ZIP = core.getInput("ZIP");
const FUNCTION_NAME = core.getInput("FUNCTION_NAME");
const AWS_REGION = core.getInput("AWS_REGION");
const AWS_SECRET_KEY = core.getInput("AWS_SECRET_KEY");
const AWS_SECRET_ID = core.getInput("AWS_SECRET_ID");
const RUNTIME = core.getInput("RUNTIME");
const ROLE = core.getInput("ROLE");
const HANDLER = core.getInput("HANDLER");
const DESCRIPTION = core.getInput("DESCRIPTION");
const TIMEOUT = core.getInput("TIMEOUT");
const MEMORY_SIZE = core.getInput("MEMORY_SIZE");
const ENVIRONMENT = core.getInput("ENVIRONMENT");
// Check params
if (!ZIP) {
throw "No ZIP provided!";
}
if (!FUNCTION_NAME) {
throw "No FUNCTION_NAME provided!";
}
if (!AWS_REGION) {
throw "No AWS_REGION provided!";
}
if (!AWS_SECRET_KEY) {
throw "No AWS_SECRET_KEY provided!";
}
if (!AWS_SECRET_ID) {
throw "No AWS_SECRET_ID provided!";
}
console.log(`Deploying ${FUNCTION_NAME} from ${ZIP}.`);
const zipBuffer = fs.readFileSync(`./${ZIP}`);
core.debug("ZIP read into memory.");
const lambda = new AWS.Lambda({
apiVersion: "2015-03-31",
region: AWS_REGION,
secretAccessKey: AWS_SECRET_KEY,
accessKeyId: AWS_SECRET_ID,
maxRetries: 3,
sslEnabled: true,
logger: console,
});
const uploadParams = {
FunctionName: FUNCTION_NAME,
Publish: true,
ZipFile: zipBuffer,
};
lambda.updateFunctionCode(uploadParams, (err) => {
if (!!err) {
core.error(error.message);
core.setFailed(err);
}
});
let configParams = {
FunctionName: FUNCTION_NAME,
};
if (!!RUNTIME) {
configParams["Runtime"] = RUNTIME;
}
if (!!ROLE) {
configParams["Role"] = ROLE;
}
if (!!HANDLER) {
configParams["Handler"] = HANDLER;
}
if (!!DESCRIPTION) {
configParams["Description"] = DESCRIPTION;
}
if (!!TIMEOUT) {
configParams["Timeout"] = Number(TIMEOUT);
}
if (!!MEMORY_SIZE) {
configParams["MemorySize"] = Number(MEMORY_SIZE);
}
if (!!ENVIRONMENT) {
const Variables = JSON.parse(ENVIRONMENT);
configParams["Environment"] = { Variables };
}
if (Object.keys(configParams).length > 1) {
lambda.updateFunctionConfiguration(configParams, (err) => {
if (!!err) {
core.error(error.message);
core.setFailed(err);
}
});
}
} catch (error) {
core.error(error.message);
core.setFailed(error.message);
}