@brunwig/mup-aws-beanstalk 0.8.7 → 2.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.babelrc +15 -4
- package/.eslintrc.yml +2 -2
- package/.yarn/install-state.gz +0 -0
- package/docs/getting-started.md +1 -1
- package/docs/index.md +22 -6
- package/index.js +1 -1
- package/lib/assets/Procfile +1 -0
- package/lib/assets/health-check.js +9 -1
- package/lib/assets/health-check.js.map +1 -1
- package/lib/assets/nginx-server.conf +14 -0
- package/lib/assets/node.sh +37 -7
- package/lib/assets/npm.sh +14 -0
- package/lib/assets/prevent-npm.sh +4 -0
- package/lib/assets/role-start.sh +61 -0
- package/lib/assets/start.sh +1 -1
- package/lib/assets/yarn.sh +17 -0
- package/lib/aws.js +43 -77
- package/lib/aws.js.map +1 -1
- package/lib/certificates.js +56 -59
- package/lib/certificates.js.map +1 -1
- package/lib/command-handlers.js +613 -637
- package/lib/command-handlers.js.map +1 -1
- package/lib/commands.js +144 -111
- package/lib/commands.js.map +1 -1
- package/lib/deployment-logs.js +127 -0
- package/lib/deployment-logs.js.map +1 -0
- package/lib/download.js +11 -18
- package/lib/download.js.map +1 -1
- package/lib/eb-config.js +246 -242
- package/lib/eb-config.js.map +1 -1
- package/lib/env-ready.js +87 -88
- package/lib/env-ready.js.map +1 -1
- package/lib/env-settings.js +13 -14
- package/lib/env-settings.js.map +1 -1
- package/lib/index.js +111 -81
- package/lib/index.js.map +1 -1
- package/lib/policies.js +130 -115
- package/lib/policies.js.map +1 -1
- package/lib/prepare-bundle.js +187 -194
- package/lib/prepare-bundle.js.map +1 -1
- package/lib/recheck.js +16 -13
- package/lib/recheck.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -0
- package/lib/types.js +3 -0
- package/lib/types.js.map +1 -0
- package/lib/upload.js +35 -49
- package/lib/upload.js.map +1 -1
- package/lib/utils.js +556 -577
- package/lib/utils.js.map +1 -1
- package/lib/validate.js +61 -59
- package/lib/validate.js.map +1 -1
- package/lib/versions.js +74 -81
- package/lib/versions.js.map +1 -1
- package/package.json +60 -26
- package/readme.md +2 -1
- package/tsconfig.json +41 -0
package/.babelrc
CHANGED
|
@@ -1,6 +1,17 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
"presets": [
|
|
3
|
+
["@babel/preset-env",
|
|
4
|
+
{
|
|
5
|
+
"targets": [
|
|
6
|
+
"defaults",
|
|
7
|
+
"last 2 versions",
|
|
8
|
+
"not IE 11",
|
|
9
|
+
"node 14"
|
|
10
|
+
]
|
|
11
|
+
}
|
|
12
|
+
]
|
|
13
|
+
],
|
|
14
|
+
"assumptions": {
|
|
15
|
+
"setPublicClassFields": true
|
|
16
|
+
}
|
|
6
17
|
}
|
package/.eslintrc.yml
CHANGED
package/.yarn/install-state.gz
CHANGED
|
Binary file
|
package/docs/getting-started.md
CHANGED
|
@@ -8,7 +8,7 @@ You can install `mup` and `mup-aws-beanstalk` by running
|
|
|
8
8
|
npm i -g mup mup-aws-beanstalk
|
|
9
9
|
```
|
|
10
10
|
|
|
11
|
-
The AWS Beanstalk plugin requires Node
|
|
11
|
+
The AWS Beanstalk plugin requires Node 14 or newer and Meteor Up 1.3.5 or newer.
|
|
12
12
|
|
|
13
13
|
## Step 1: Initialize your project
|
|
14
14
|
|
package/docs/index.md
CHANGED
|
@@ -76,9 +76,22 @@ module.exports = {
|
|
|
76
76
|
// (optional, default is us-east-1) AWS region to deploy to
|
|
77
77
|
region: 'us-west-1',
|
|
78
78
|
|
|
79
|
+
// name of the aws platform to us - matches the start portion of the name
|
|
80
|
+
// https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platform-history-nodejs.html
|
|
81
|
+
awsPlatformBranchName: 'Node.js 20',
|
|
82
|
+
|
|
79
83
|
// (optional, default is "mup-env-<app name>")
|
|
80
84
|
// Name of AWS Elastic Beanstalk environment
|
|
81
|
-
envName: 'production',
|
|
85
|
+
envName: 'production',
|
|
86
|
+
|
|
87
|
+
// (optional, default is "webserver")
|
|
88
|
+
// Type (or "tier") of the environment. Set it to "worker"
|
|
89
|
+
// to make a worker environment that has no web-facing load-
|
|
90
|
+
// balancer and only responds to SQS queue messages.
|
|
91
|
+
// This will also make the SSL options do nothing.
|
|
92
|
+
// Read more at:
|
|
93
|
+
// https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features-managing-env-tiers.html
|
|
94
|
+
envType: "webserver"
|
|
82
95
|
|
|
83
96
|
// (optional) Packages to install with the yum package manager
|
|
84
97
|
yumPackages: {
|
|
@@ -94,9 +107,12 @@ module.exports = {
|
|
|
94
107
|
// (optional) Send a SIGTERM signal to the app instances 30 seconds before they will be shut down.
|
|
95
108
|
gracefulShutdown: true,
|
|
96
109
|
|
|
97
|
-
// (optional) Supports large environment variables and settings.json by storing them in s3.
|
|
110
|
+
// (optional) Supports large environment variables and settings.json by storing them in s3.
|
|
98
111
|
longEnvVars: true,
|
|
99
112
|
|
|
113
|
+
// (optional) Enable log streamin to CloudWatch, and to the terminal output while deploying when `verbose` is also active.
|
|
114
|
+
streamLogs: false,
|
|
115
|
+
|
|
100
116
|
// (optional, default is 3) Number of old application versions to keep
|
|
101
117
|
oldVersions: 3,
|
|
102
118
|
|
|
@@ -136,7 +152,7 @@ module.exports = {
|
|
|
136
152
|
}
|
|
137
153
|
```
|
|
138
154
|
|
|
139
|
-
Changes to `yumPackages`, `forceSSL`, `buildOptions`, and `longEnvVars` requires deploying a new version to take affect.
|
|
155
|
+
Changes to `yumPackages`, `forceSSL`, `buildOptions`, ``requireInstanceRole` and `longEnvVars` requires deploying a new version to take affect.
|
|
140
156
|
|
|
141
157
|
## Commands
|
|
142
158
|
|
|
@@ -150,7 +166,7 @@ Changes to `yumPackages`, `forceSSL`, `buildOptions`, and `longEnvVars` requires
|
|
|
150
166
|
- `mup start` Scales the app back up after being stopped
|
|
151
167
|
- `mup restart` Restarts the app
|
|
152
168
|
- `mup beanstalk events` View events from the app's Beanstalk enviroment. Useful when troubleshooting problems.
|
|
153
|
-
- `mup beanstalk clean` Removes old application versions from s3 and Beanstalk. Is automatically run by `mup deploy`
|
|
169
|
+
- `mup beanstalk clean` Removes old application versions from s3 and Beanstalk. Is automatically run by `mup deploy`
|
|
154
170
|
- `mup beanstalk ssl` Sets up SSL and shows you it's current status. Automatically run by `mup reconfig` and `mup deploy`
|
|
155
171
|
- `mup beanstalk status` View the app's and server's health and http request stats
|
|
156
172
|
|
|
@@ -159,7 +175,7 @@ Changes to `yumPackages`, `forceSSL`, `buildOptions`, and `longEnvVars` requires
|
|
|
159
175
|
AWS Elastic Beanstalk is free, but you do pay for the services it uses, including:
|
|
160
176
|
|
|
161
177
|
- EC2 Instances. By default, it uses `t2.micro`, which costs $8.50/month($0.012 / hour). While the Beanstalk environment is updating, or a new version is being deployed, 25% additional servers will be used.
|
|
162
|
-
- Application Load Balancer. Pricing details are at https://aws.amazon.com/elasticloadbalancing/pricing/
|
|
178
|
+
- Application Load Balancer (when not using worker environment type). Pricing details are at https://aws.amazon.com/elasticloadbalancing/pricing/
|
|
163
179
|
- S3. 3 - 4 app bundles are stored on s3. Each deploy will make 2 list requests and upload 1 file. Beanstalk might store additional files on s3.
|
|
164
180
|
|
|
165
181
|
Graceful Shutdown uses the following services:
|
|
@@ -176,7 +192,7 @@ This does not apply when changing the instance type. Instead, Beanstalk terminat
|
|
|
176
192
|
|
|
177
193
|
## Load balancing
|
|
178
194
|
|
|
179
|
-
Load balancing is automatically configured and supports web sockets and sticky sessions.
|
|
195
|
+
Load balancing for web-facing apps is automatically configured and supports web sockets and sticky sessions.
|
|
180
196
|
|
|
181
197
|
## Scale
|
|
182
198
|
|
package/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
module.exports = require('./lib')
|
|
1
|
+
module.exports = require('./lib')
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
web: npm start
|
|
@@ -14,16 +14,22 @@
|
|
|
14
14
|
*/
|
|
15
15
|
|
|
16
16
|
var http = require('http');
|
|
17
|
+
|
|
17
18
|
var debugEnabled = process.env.HEALTH_CHECK_VERBOSE === 'true';
|
|
19
|
+
|
|
18
20
|
var log = function log(message, debug) {
|
|
19
21
|
if (!debug || debugEnabled) {
|
|
20
22
|
console.log('[HealthCheck] ' + new Date() + ': ' + message);
|
|
21
23
|
}
|
|
22
24
|
};
|
|
25
|
+
|
|
26
|
+
|
|
23
27
|
var server = http.createServer(function (request, response) {
|
|
24
28
|
var timeout;
|
|
25
29
|
var appRequest;
|
|
30
|
+
|
|
26
31
|
log('Received health check request', true);
|
|
32
|
+
|
|
27
33
|
appRequest = http.get('http://127.0.0.1:8081', function (res) {
|
|
28
34
|
log('Health check succeeded', true);
|
|
29
35
|
response.statusCode = 200;
|
|
@@ -36,11 +42,14 @@ var server = http.createServer(function (request, response) {
|
|
|
36
42
|
response.end('Failed');
|
|
37
43
|
clearTimeout(timeout);
|
|
38
44
|
});
|
|
45
|
+
|
|
39
46
|
timeout = setTimeout(function () {
|
|
40
47
|
log('Request to app timed out after 3 seconds');
|
|
41
48
|
appRequest.abort();
|
|
42
49
|
}, 3000);
|
|
43
50
|
});
|
|
51
|
+
|
|
52
|
+
|
|
44
53
|
try {
|
|
45
54
|
server.listen(8039);
|
|
46
55
|
log('Started health check server', true);
|
|
@@ -48,4 +57,3 @@ try {
|
|
|
48
57
|
// Port is being used, likely from another health-check server running
|
|
49
58
|
log('Port being used');
|
|
50
59
|
}
|
|
51
|
-
//# sourceMappingURL=health-check.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"health-check.js","
|
|
1
|
+
{"version":3,"file":"health-check.js","sourceRoot":"","sources":["../../src/assets/health-check.js"],"names":[],"mappings":";AAAA,+EAA+E;AAE/E;;;;;;;;;;;GAWG;AAEH,IAAI,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAE3B,IAAI,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,MAAM,CAAC;AAE/D,IAAI,GAAG,GAAG,SAAS,GAAG,CAAC,OAAO,EAAE,KAAK;IACnC,IAAI,CAAC,KAAK,IAAI,YAAY,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,IAAI,IAAI,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC,CAAC;AAGF,IAAI,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,OAAO,EAAE,QAAQ;IACxD,IAAI,OAAO,CAAC;IACZ,IAAI,UAAU,CAAC;IAEf,GAAG,CAAC,+BAA+B,EAAE,IAAI,CAAC,CAAC;IAE3C,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,uBAAuB,EAAE,UAAU,GAAG;QAC1D,GAAG,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAC;QACpC,QAAQ,CAAC,UAAU,GAAG,GAAG,CAAC;QAC1B,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACxB,YAAY,CAAC,OAAO,CAAC,CAAC;QACtB,GAAG,CAAC,MAAM,EAAE,CAAC;IACf,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC;QACxB,GAAG,CAAC,wBAAwB,GAAG,CAAC,CAAC,CAAC;QAClC,QAAQ,CAAC,UAAU,GAAG,GAAG,CAAC;QAC1B,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACvB,YAAY,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,UAAU,CAAC;QACnB,GAAG,CAAC,0CAA0C,CAAC,CAAC;QAChD,UAAU,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC,EAAE,IAAI,CAAC,CAAC;AACX,CAAC,CAAC,CAAC;AAGH,IAAI,CAAC;IACH,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACpB,GAAG,CAAC,6BAA6B,EAAE,IAAI,CAAC,CAAC;AAC3C,CAAC;AAAC,OAAO,CAAC,EAAE,CAAC;IACX,sEAAsE;IACtE,GAAG,CAAC,iBAAiB,CAAC,CAAC;AACzB,CAAC"}
|
|
@@ -16,6 +16,16 @@ location / {
|
|
|
16
16
|
proxy_set_header X-Real-IP $remote_addr;
|
|
17
17
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
18
18
|
|
|
19
|
+
# App adaptations
|
|
20
|
+
proxy_hide_header X-Powered-By;
|
|
21
|
+
proxy_hide_header Server;
|
|
22
|
+
server_tokens off;
|
|
23
|
+
|
|
24
|
+
# Prevent DoS attacks or resource exhaustion:
|
|
25
|
+
client_max_body_size 2M;
|
|
26
|
+
client_body_buffer_size 128k;
|
|
27
|
+
|
|
28
|
+
|
|
19
29
|
<% if(forceSSL) { %>
|
|
20
30
|
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains;";
|
|
21
31
|
<% } %>
|
|
@@ -52,6 +62,10 @@ location /aws-health-check-3984729847289743128904723 {
|
|
|
52
62
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
53
63
|
proxy_set_header Upgrade $http_upgrade;
|
|
54
64
|
proxy_set_header Connection "upgrade";
|
|
65
|
+
|
|
66
|
+
# Restrict sensitive endpoints (such as health checks):
|
|
67
|
+
allow 127.0.0.1;
|
|
68
|
+
deny all;
|
|
55
69
|
}
|
|
56
70
|
|
|
57
71
|
# gzip on;
|
package/lib/assets/node.sh
CHANGED
|
@@ -1,25 +1,55 @@
|
|
|
1
1
|
#!/bin/bash
|
|
2
2
|
NODE_VERSION=<%= nodeVersion %>
|
|
3
3
|
NPM_VERSION=<%= npmVersion %>
|
|
4
|
+
MAJOR_NODE_VERSION=`echo $NODE_VERSION | awk -F. '{print $1}'`
|
|
5
|
+
MINOR_NODE_VERSION=`echo $NODE_VERSION | awk -F. '{print $2}'`
|
|
6
|
+
PATCH_NODE_VERSION=`echo $NODE_VERSION | awk -F. '{print $3}'`
|
|
7
|
+
METEOR_VERSION=<%= meteorVersion %>
|
|
4
8
|
|
|
9
|
+
echo "Node: $NODE_VERSION"
|
|
10
|
+
echo "Major: $MAJOR_NODE_VERSION"
|
|
11
|
+
echo "Minor: $MINOR_NODE_VERSION"
|
|
12
|
+
echo "Patch: $PATCH_NODE_VERSION"
|
|
5
13
|
|
|
6
14
|
export NVM_DIR="/.nvm"
|
|
7
15
|
# Install nvm
|
|
8
16
|
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.6/install.sh | bash
|
|
9
17
|
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
|
|
10
18
|
|
|
11
|
-
|
|
19
|
+
if [[ $MAJOR_NODE_VERSION == "14" && $MINOR_NODE_VERSION -ge 21 && $PATCH_NODE_VERSION -ge 4 ]]; then
|
|
20
|
+
#Install latests 14 version so the folder structure is there when trying to download custom node version
|
|
21
|
+
nvm install 14
|
|
22
|
+
|
|
23
|
+
# Install Meteor's custom NodeJS v14 LTS version
|
|
24
|
+
NODE_INSTALL_PATH="/.nvm/versions/node/v$NODE_VERSION"
|
|
25
|
+
|
|
26
|
+
if [ -d $NODE_INSTALL_PATH ]; then
|
|
27
|
+
echo "Meteor's custom v14 LTS Node version is already installed ($NODE_VERSION)"
|
|
28
|
+
else
|
|
29
|
+
echo "Using Meteor's custom NodeJS v14 LTS version"
|
|
30
|
+
|
|
31
|
+
# https://hub.docker.com/layers/meteor/node/14.21.4/images/sha256-f4e19b4169ff617118f78866c2ffe392a7ef44d4e30f2f9fc31eef2c35ceebf3?context=explore
|
|
32
|
+
curl "https://static.meteor.com/dev-bundle-node-os/v$NODE_VERSION/node-v$NODE_VERSION-linux-x64.tar.gz" | tar xzf - -C /tmp/
|
|
33
|
+
mv /tmp/node-v$NODE_VERSION-linux-x64 "$NODE_INSTALL_PATH"
|
|
34
|
+
ls -l $NODE_INSTALL_PATH
|
|
35
|
+
fi
|
|
36
|
+
else
|
|
37
|
+
echo "Using NVM"
|
|
38
|
+
nvm install $NODE_VERSION
|
|
39
|
+
fi
|
|
40
|
+
|
|
41
|
+
# Verify installed Node.js and npm versions
|
|
42
|
+
echo "Node.js version: $(node -v)"
|
|
43
|
+
echo "NPM version before update: $(npm -v)"
|
|
44
|
+
|
|
12
45
|
nvm use $NODE_VERSION
|
|
13
46
|
nvm alias default $NODE_VERSION
|
|
14
47
|
npm i -g npm@$NPM_VERSION
|
|
15
48
|
|
|
16
|
-
|
|
17
|
-
echo "APP_PATH: $APP_PATH"
|
|
18
|
-
|
|
19
|
-
# AWS Linux 2
|
|
49
|
+
# AWS Linux 2 / 2023
|
|
20
50
|
[[ -z "$APP_PATH" ]] && APP_PATH="$(/opt/elasticbeanstalk/bin/get-config platformconfig -k AppStagingDir)"
|
|
21
51
|
echo "APP_PATH: $APP_PATH"
|
|
22
52
|
|
|
23
53
|
cd "$APP_PATH"
|
|
24
|
-
|
|
25
|
-
cd programs/server && npm install --unsafe-perm
|
|
54
|
+
echo "Installing npm dependencies"
|
|
55
|
+
cd programs/server && npm install --unsafe-perm
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
export NVM_DIR="/.nvm"
|
|
3
|
+
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
|
|
4
|
+
|
|
5
|
+
APP_PATH="$(/opt/elasticbeanstalk/bin/get-config container -k app_staging_dir)"
|
|
6
|
+
echo "APP_PATH: $APP_PATH"
|
|
7
|
+
|
|
8
|
+
# AWS Linux 2 /2023
|
|
9
|
+
[[ -z "$APP_PATH" ]] && APP_PATH="$(/opt/elasticbeanstalk/bin/get-config platformconfig -k AppStagingDir)"
|
|
10
|
+
echo "APP_PATH: $APP_PATH"
|
|
11
|
+
|
|
12
|
+
cd "$APP_PATH"
|
|
13
|
+
ls
|
|
14
|
+
cd programs/server && npm install --unsafe-perm
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
export NVM_DIR="/.nvm"
|
|
4
|
+
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
|
|
5
|
+
|
|
6
|
+
nvm use default --delete-prefix --silent
|
|
7
|
+
|
|
8
|
+
[[ ! -z "$MUP_ENV_FILE_VERSION" ]] && { echo "Long Env is enabled."; source /etc/app/env.txt; }
|
|
9
|
+
|
|
10
|
+
echo "Node version"
|
|
11
|
+
echo $(node --version)
|
|
12
|
+
echo "Npm version"
|
|
13
|
+
echo $(npm --version)
|
|
14
|
+
# Check if meteor-settings.js exists and prepend METEOR_SETTINGS to main.js
|
|
15
|
+
SETTINGS_FILE="./programs/server/assets/app/meteor-settings.js"
|
|
16
|
+
MAIN_JS="./main.js"
|
|
17
|
+
TEMP_MAIN_JS="./main_temp.js"
|
|
18
|
+
|
|
19
|
+
if [ -f "$SETTINGS_FILE" ]; then
|
|
20
|
+
echo "Found settings file"
|
|
21
|
+
|
|
22
|
+
# Prepend the require statement to main.js
|
|
23
|
+
echo "Requiring settings.js in main.js"
|
|
24
|
+
echo "require('$SETTINGS_FILE');" > "$TEMP_MAIN_JS"
|
|
25
|
+
cat "$MAIN_JS" >> "$TEMP_MAIN_JS"
|
|
26
|
+
mv "$TEMP_MAIN_JS" "$MAIN_JS"
|
|
27
|
+
else
|
|
28
|
+
export METEOR_SETTINGS=$(node -e 'console.log(decodeURIComponent(process.env.METEOR_SETTINGS_ENCODED))')
|
|
29
|
+
fi
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
MAX_WAIT=60 # Timeout in seconds
|
|
33
|
+
WAITED=0
|
|
34
|
+
while [ -z "$INSTANCE_ROLE" ]; do
|
|
35
|
+
INSTANCE_ROLE=$(grep '^INSTANCE_ROLE=' /etc/environment | cut -d '=' -f2)
|
|
36
|
+
sleep 1
|
|
37
|
+
WAITED=$((WAITED + 1))
|
|
38
|
+
if [ $WAITED -ge $MAX_WAIT ]; then
|
|
39
|
+
echo "Timeout: INSTANCE_ROLE not set after $MAX_WAIT seconds. Exiting."
|
|
40
|
+
exit 1
|
|
41
|
+
else
|
|
42
|
+
echo "Waited $WAITED seconds for INSTANCE_ROLE to be set..."
|
|
43
|
+
fi
|
|
44
|
+
done
|
|
45
|
+
|
|
46
|
+
# Update all environment variables
|
|
47
|
+
if [ -f /etc/environment ]; then
|
|
48
|
+
echo "Updating environment variables from /etc/environment"
|
|
49
|
+
set -a # Automatically export all variables
|
|
50
|
+
source /etc/environment
|
|
51
|
+
set +a
|
|
52
|
+
else
|
|
53
|
+
echo "/etc/environment file not found."
|
|
54
|
+
fi
|
|
55
|
+
|
|
56
|
+
echo "INSTANCE_ROLE is set to '$INSTANCE_ROLE'"
|
|
57
|
+
echo "FIRST_INSTANCE is set to '$FIRST_INSTANCE'"
|
|
58
|
+
echo "=> Starting health check server"
|
|
59
|
+
node health-check.js &
|
|
60
|
+
echo "=> Starting App"
|
|
61
|
+
node main.js
|
package/lib/assets/start.sh
CHANGED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
npm i -g corepack # <- Add this line to install corepack first
|
|
3
|
+
|
|
4
|
+
corepack enable
|
|
5
|
+
APP_PATH="$(/opt/elasticbeanstalk/bin/get-config container -k app_staging_dir)"
|
|
6
|
+
echo "APP_PATH: $APP_PATH"
|
|
7
|
+
|
|
8
|
+
# AWS Linux 2 /2023
|
|
9
|
+
[[ -z "$APP_PATH" ]] && APP_PATH="$(/opt/elasticbeanstalk/bin/get-config platformconfig -k AppStagingDir)"
|
|
10
|
+
echo "APP_PATH: $APP_PATH"
|
|
11
|
+
|
|
12
|
+
cd "$APP_PATH"
|
|
13
|
+
ls
|
|
14
|
+
cd programs/server
|
|
15
|
+
yarn set version 1.x
|
|
16
|
+
yarn config set unsafe-perm true
|
|
17
|
+
yarn install
|
package/lib/aws.js
CHANGED
|
@@ -1,83 +1,49 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.cloudWatchEvents = exports.cloudTrail = exports.beanstalk = exports.autoScaling = exports.acm = void 0;
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ec2InstanceConnect = exports.logs = exports.ec2 = exports.ssm = exports.sts = exports.cloudWatchEvents = exports.cloudTrail = exports.acm = exports.autoScaling = exports.iam = exports.beanstalk = exports.s3 = void 0;
|
|
7
4
|
exports.default = configure;
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
let ssm = exports.ssm = {};
|
|
21
|
-
let ec2 = exports.ec2 = {};
|
|
22
|
-
let ec2InstanceConnect = exports.ec2InstanceConnect = {};
|
|
23
|
-
|
|
5
|
+
const client_iam_1 = require("@aws-sdk/client-iam");
|
|
6
|
+
const client_s3_1 = require("@aws-sdk/client-s3");
|
|
7
|
+
const client_elastic_beanstalk_1 = require("@aws-sdk/client-elastic-beanstalk");
|
|
8
|
+
const client_acm_1 = require("@aws-sdk/client-acm");
|
|
9
|
+
const client_auto_scaling_1 = require("@aws-sdk/client-auto-scaling");
|
|
10
|
+
const client_cloudwatch_events_1 = require("@aws-sdk/client-cloudwatch-events");
|
|
11
|
+
const client_cloudwatch_logs_1 = require("@aws-sdk/client-cloudwatch-logs");
|
|
12
|
+
const client_cloudtrail_1 = require("@aws-sdk/client-cloudtrail");
|
|
13
|
+
const client_ec2_instance_connect_1 = require("@aws-sdk/client-ec2-instance-connect");
|
|
14
|
+
const client_sts_1 = require("@aws-sdk/client-sts");
|
|
15
|
+
const client_ssm_1 = require("@aws-sdk/client-ssm");
|
|
16
|
+
const client_ec2_1 = require("@aws-sdk/client-ec2");
|
|
24
17
|
/* eslint-enable import/no-mutable-exports */
|
|
25
|
-
|
|
26
18
|
const MAX_RETRY_DELAY = 1000 * 60 * 2;
|
|
27
|
-
const AWS_UPLOAD_TIMEOUT = 1000 * 60 * 60;
|
|
28
|
-
function configure({
|
|
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
|
-
apiVersion: '2010-05-08'
|
|
57
|
-
});
|
|
58
|
-
exports.autoScaling = autoScaling = new _awsSdk.default.AutoScaling({
|
|
59
|
-
apiVersion: '2011-01-01'
|
|
60
|
-
});
|
|
61
|
-
exports.acm = acm = new _awsSdk.default.ACM({
|
|
62
|
-
apiVersion: '2015-12-08'
|
|
63
|
-
});
|
|
64
|
-
exports.cloudTrail = cloudTrail = new _awsSdk.default.CloudTrail({
|
|
65
|
-
apiVersion: '2013-11-01'
|
|
66
|
-
});
|
|
67
|
-
exports.sts = sts = new _awsSdk.default.STS({
|
|
68
|
-
apiVersion: '2011-06-15'
|
|
69
|
-
});
|
|
70
|
-
exports.cloudWatchEvents = cloudWatchEvents = new _awsSdk.default.CloudWatchEvents({
|
|
71
|
-
apiVersion: '2015-10-07'
|
|
72
|
-
});
|
|
73
|
-
exports.ssm = ssm = new _awsSdk.default.SSM({
|
|
74
|
-
apiVersion: '2014-11-06'
|
|
75
|
-
});
|
|
76
|
-
exports.ec2 = ec2 = new _awsSdk.default.EC2({
|
|
77
|
-
apiVersion: '2016-11-15'
|
|
78
|
-
});
|
|
79
|
-
exports.ec2InstanceConnect = ec2InstanceConnect = new _awsSdk.default.EC2InstanceConnect({
|
|
80
|
-
apiVersion: '2018-04-02'
|
|
81
|
-
});
|
|
19
|
+
// const AWS_UPLOAD_TIMEOUT = 1000 * 60 * 60;
|
|
20
|
+
function configure({ auth, name: _name, region }) {
|
|
21
|
+
const commonOptions = {
|
|
22
|
+
credentials: {
|
|
23
|
+
accessKeyId: auth.id,
|
|
24
|
+
secretAccessKey: auth.secret,
|
|
25
|
+
},
|
|
26
|
+
region: region || 'us-east-1',
|
|
27
|
+
maxRetries: 25,
|
|
28
|
+
retryDelayOptions: {
|
|
29
|
+
customBackoff: (retryCount) => Math.min((2 ** retryCount * 1000), MAX_RETRY_DELAY)
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
exports.s3 = new client_s3_1.S3({
|
|
33
|
+
...commonOptions,
|
|
34
|
+
// params: { Bucket: `mup-${name}` },
|
|
35
|
+
// httpOptions: { timeout: AWS_UPLOAD_TIMEOUT },
|
|
36
|
+
});
|
|
37
|
+
exports.beanstalk = new client_elastic_beanstalk_1.ElasticBeanstalk({ ...commonOptions });
|
|
38
|
+
exports.iam = new client_iam_1.IAM({ ...commonOptions });
|
|
39
|
+
exports.autoScaling = new client_auto_scaling_1.AutoScaling({ ...commonOptions });
|
|
40
|
+
exports.acm = new client_acm_1.ACM({ ...commonOptions });
|
|
41
|
+
exports.cloudTrail = new client_cloudtrail_1.CloudTrail({ ...commonOptions });
|
|
42
|
+
exports.sts = new client_sts_1.STS({ ...commonOptions });
|
|
43
|
+
exports.cloudWatchEvents = new client_cloudwatch_events_1.CloudWatchEvents({ ...commonOptions });
|
|
44
|
+
exports.ssm = new client_ssm_1.SSM({ ...commonOptions });
|
|
45
|
+
exports.ec2 = new client_ec2_1.EC2({ ...commonOptions });
|
|
46
|
+
exports.logs = new client_cloudwatch_logs_1.CloudWatchLogs({ ...commonOptions });
|
|
47
|
+
exports.ec2InstanceConnect = new client_ec2_instance_connect_1.EC2InstanceConnect({ ...commonOptions });
|
|
82
48
|
}
|
|
83
49
|
//# sourceMappingURL=aws.js.map
|
package/lib/aws.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aws.js","
|
|
1
|
+
{"version":3,"file":"aws.js","sourceRoot":"","sources":["../src/aws.ts"],"names":[],"mappings":";;;AAiCA,4BA6BC;AA9DD,oDAA0C;AAC1C,kDAAwC;AACxC,gFAAqE;AACrE,oDAA0C;AAC1C,sEAA2D;AAC3D,gFAAqE;AACrE,4EAAiE;AACjE,kEAAwD;AACxD,sFAA0E;AAC1E,oDAA0C;AAC1C,oDAA0C;AAC1C,oDAA0C;AAiB1C,6CAA6C;AAE7C,MAAM,eAAe,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC;AACtC,6CAA6C;AAE7C,SAAwB,SAAS,CAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAgB;IAC5E,MAAM,aAAa,GAAG;QACpB,WAAW,EAAE;YACX,WAAW,EAAE,IAAI,CAAC,EAAE;YACpB,eAAe,EAAE,IAAI,CAAC,MAAM;SAC7B;QACD,MAAM,EAAE,MAAM,IAAI,WAAW;QAC7B,UAAU,EAAE,EAAE;QACd,iBAAiB,EAAE;YACjB,aAAa,EAAE,CAAC,UAAkB,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,UAAU,GAAG,IAAI,CAAC,EAAE,eAAe,CAAC;SAC3F;KACF,CAAC;IAEF,UAAE,GAAG,IAAI,cAAE,CAAC;QACV,GAAG,aAAa;QAChB,qCAAqC;QACrC,gDAAgD;KACjD,CAAC,CAAC;IACH,iBAAS,GAAG,IAAI,2CAAgB,CAAC,EAAE,GAAG,aAAa,EAAE,CAAC,CAAC;IACvD,WAAG,GAAG,IAAI,gBAAG,CAAC,EAAE,GAAG,aAAa,EAAE,CAAC,CAAC;IACpC,mBAAW,GAAG,IAAI,iCAAW,CAAC,EAAE,GAAG,aAAa,EAAE,CAAC,CAAC;IACpD,WAAG,GAAG,IAAI,gBAAG,CAAC,EAAE,GAAG,aAAa,EAAE,CAAC,CAAC;IACpC,kBAAU,GAAG,IAAI,8BAAU,CAAC,EAAE,GAAG,aAAa,EAAE,CAAC,CAAC;IAClD,WAAG,GAAG,IAAI,gBAAG,CAAC,EAAE,GAAG,aAAa,EAAE,CAAC,CAAC;IACpC,wBAAgB,GAAG,IAAI,2CAAgB,CAAC,EAAE,GAAG,aAAa,EAAE,CAAC,CAAC;IAC9D,WAAG,GAAG,IAAI,gBAAG,CAAC,EAAE,GAAG,aAAa,EAAE,CAAC,CAAC;IACpC,WAAG,GAAG,IAAI,gBAAG,CAAC,EAAE,GAAG,aAAa,EAAE,CAAC,CAAC;IACpC,YAAI,GAAG,IAAI,uCAAc,CAAC,EAAE,GAAG,aAAa,EAAE,CAAC,CAAC;IAChD,0BAAkB,GAAG,IAAI,gDAAkB,CAAC,EAAE,GAAG,aAAa,EAAE,CAAC,CAAC;AACpE,CAAC"}
|