@brunwig/mup-aws-beanstalk 0.8.7 → 2.0.5

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.
Files changed (56) hide show
  1. package/.babelrc +15 -4
  2. package/.eslintrc.yml +2 -2
  3. package/.yarn/install-state.gz +0 -0
  4. package/docs/getting-started.md +1 -1
  5. package/docs/index.md +22 -6
  6. package/index.js +1 -1
  7. package/lib/assets/Procfile +1 -0
  8. package/lib/assets/health-check.js +9 -1
  9. package/lib/assets/health-check.js.map +1 -1
  10. package/lib/assets/nginx-server.conf +5 -0
  11. package/lib/assets/node.sh +37 -7
  12. package/lib/assets/npm.sh +14 -0
  13. package/lib/assets/prevent-npm.sh +4 -0
  14. package/lib/assets/role-start.sh +61 -0
  15. package/lib/assets/start.sh +1 -1
  16. package/lib/assets/yarn.sh +17 -0
  17. package/lib/aws.js +43 -77
  18. package/lib/aws.js.map +1 -1
  19. package/lib/certificates.js +56 -59
  20. package/lib/certificates.js.map +1 -1
  21. package/lib/command-handlers.js +613 -637
  22. package/lib/command-handlers.js.map +1 -1
  23. package/lib/commands.js +144 -111
  24. package/lib/commands.js.map +1 -1
  25. package/lib/deployment-logs.js +127 -0
  26. package/lib/deployment-logs.js.map +1 -0
  27. package/lib/download.js +11 -18
  28. package/lib/download.js.map +1 -1
  29. package/lib/eb-config.js +246 -242
  30. package/lib/eb-config.js.map +1 -1
  31. package/lib/env-ready.js +87 -88
  32. package/lib/env-ready.js.map +1 -1
  33. package/lib/env-settings.js +13 -14
  34. package/lib/env-settings.js.map +1 -1
  35. package/lib/index.js +111 -81
  36. package/lib/index.js.map +1 -1
  37. package/lib/policies.js +130 -115
  38. package/lib/policies.js.map +1 -1
  39. package/lib/prepare-bundle.js +187 -194
  40. package/lib/prepare-bundle.js.map +1 -1
  41. package/lib/recheck.js +16 -13
  42. package/lib/recheck.js.map +1 -1
  43. package/lib/tsconfig.tsbuildinfo +1 -0
  44. package/lib/types.js +3 -0
  45. package/lib/types.js.map +1 -0
  46. package/lib/upload.js +35 -49
  47. package/lib/upload.js.map +1 -1
  48. package/lib/utils.js +556 -577
  49. package/lib/utils.js.map +1 -1
  50. package/lib/validate.js +61 -59
  51. package/lib/validate.js.map +1 -1
  52. package/lib/versions.js +74 -81
  53. package/lib/versions.js.map +1 -1
  54. package/package.json +60 -26
  55. package/readme.md +2 -1
  56. package/tsconfig.json +41 -0
package/.babelrc CHANGED
@@ -1,6 +1,17 @@
1
1
  {
2
- "plugins": [
3
- "@babel/plugin-proposal-object-rest-spread",
4
- "@babel/plugin-transform-modules-commonjs"
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
@@ -1,5 +1,5 @@
1
- parser: babel-eslint
2
- extends: airbnb
1
+ parser: '@babel/eslint-parser'
2
+ extends: standard
3
3
  rules:
4
4
  comma-dangle: [2, 'never']
5
5
  no-plusplus: 0
Binary file
@@ -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 4 or newer and Meteor Up 1.3.5 or newer.
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","names":["http","require","debugEnabled","process","env","HEALTH_CHECK_VERBOSE","log","message","debug","console","Date","server","createServer","request","response","timeout","appRequest","get","res","statusCode","end","clearTimeout","resume","on","e","setTimeout","abort","listen"],"sources":["../../src/assets/health-check.js"],"sourcesContent":["/* eslint-disable no-var, prefer-template, func-names, prefer-arrow-callback */\n\n/*\n * The health check expects the response's status code to be 200\n * Some apps set their status code to something else, which would\n * cause the health check to always fail.\n *\n * The health check gets sent to this server, which checks if\n * the app is responding to requests, and then sets the correct\n * status code for the health check.\n *\n * This uses the same version of node that the app is using,\n * so it needs to support Node 0.10.\n */\n\nvar http = require('http');\n\nvar debugEnabled = process.env.HEALTH_CHECK_VERBOSE === 'true';\n\nvar log = function log(message, debug) {\n if (!debug || debugEnabled) {\n console.log('[HealthCheck] ' + new Date() + ': ' + message);\n }\n};\n\n\nvar server = http.createServer(function (request, response) {\n var timeout;\n var appRequest;\n\n log('Received health check request', true);\n\n appRequest = http.get('http://127.0.0.1:8081', function (res) {\n log('Health check succeeded', true);\n response.statusCode = 200;\n response.end('Success');\n clearTimeout(timeout);\n res.resume();\n }).on('error', function (e) {\n log('Request to app failed ' + e);\n response.statusCode = 500;\n response.end('Failed');\n clearTimeout(timeout);\n });\n\n timeout = setTimeout(function () {\n log('Request to app timed out after 3 seconds');\n appRequest.abort();\n }, 3000);\n});\n\n\ntry {\n server.listen(8039);\n log('Started health check server', true);\n} catch (e) {\n // Port is being used, likely from another health-check server running\n log('Port being used');\n}\n"],"mappings":"AAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAIA,IAAI,GAAGC,OAAO,CAAC,MAAM,CAAC;AAE1B,IAAIC,YAAY,GAAGC,OAAO,CAACC,GAAG,CAACC,oBAAoB,KAAK,MAAM;AAE9D,IAAIC,GAAG,GAAG,SAASA,GAAGA,CAACC,OAAO,EAAEC,KAAK,EAAE;EACrC,IAAI,CAACA,KAAK,IAAIN,YAAY,EAAE;IAC1BO,OAAO,CAACH,GAAG,CAAC,gBAAgB,GAAG,IAAII,IAAI,CAAC,CAAC,GAAG,IAAI,GAAGH,OAAO,CAAC;EAC7D;AACF,CAAC;AAGD,IAAII,MAAM,GAAGX,IAAI,CAACY,YAAY,CAAC,UAAUC,OAAO,EAAEC,QAAQ,EAAE;EAC1D,IAAIC,OAAO;EACX,IAAIC,UAAU;EAEdV,GAAG,CAAC,+BAA+B,EAAE,IAAI,CAAC;EAE1CU,UAAU,GAAGhB,IAAI,CAACiB,GAAG,CAAC,uBAAuB,EAAE,UAAUC,GAAG,EAAE;IAC5DZ,GAAG,CAAC,wBAAwB,EAAE,IAAI,CAAC;IACnCQ,QAAQ,CAACK,UAAU,GAAG,GAAG;IACzBL,QAAQ,CAACM,GAAG,CAAC,SAAS,CAAC;IACvBC,YAAY,CAACN,OAAO,CAAC;IACrBG,GAAG,CAACI,MAAM,CAAC,CAAC;EACd,CAAC,CAAC,CAACC,EAAE,CAAC,OAAO,EAAE,UAAUC,CAAC,EAAE;IAC1BlB,GAAG,CAAC,wBAAwB,GAAGkB,CAAC,CAAC;IACjCV,QAAQ,CAACK,UAAU,GAAG,GAAG;IACzBL,QAAQ,CAACM,GAAG,CAAC,QAAQ,CAAC;IACtBC,YAAY,CAACN,OAAO,CAAC;EACvB,CAAC,CAAC;EAEFA,OAAO,GAAGU,UAAU,CAAC,YAAY;IAC/BnB,GAAG,CAAC,0CAA0C,CAAC;IAC/CU,UAAU,CAACU,KAAK,CAAC,CAAC;EACpB,CAAC,EAAE,IAAI,CAAC;AACV,CAAC,CAAC;AAGF,IAAI;EACFf,MAAM,CAACgB,MAAM,CAAC,IAAI,CAAC;EACnBrB,GAAG,CAAC,6BAA6B,EAAE,IAAI,CAAC;AAC1C,CAAC,CAAC,OAAOkB,CAAC,EAAE;EACV;EACAlB,GAAG,CAAC,iBAAiB,CAAC;AACxB","ignoreList":[]}
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"}
@@ -6,6 +6,11 @@ if ($http_x_forwarded_proto = "http") {
6
6
  }
7
7
  <% } %>
8
8
 
9
+ # App adaptations
10
+ proxy_hide_header X-Powered-By;
11
+ proxy_hide_header Server;
12
+ server_tokens off;
13
+
9
14
  location / {
10
15
  proxy_pass http://127.0.0.1:8081;
11
16
  proxy_http_version 1.1;
@@ -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
- nvm install $NODE_VERSION
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
- APP_PATH="$(/opt/elasticbeanstalk/bin/get-config container -k app_staging_dir)"
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
- ls
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,4 @@
1
+ #!/bin/bash
2
+ ls -la
3
+ mkdir -p node_modules
4
+ sudo chown -R webapp:webapp node_modules
@@ -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
@@ -18,4 +18,4 @@ echo "=> Starting health check server"
18
18
  node health-check.js &
19
19
 
20
20
  echo "=> Starting App"
21
- node main.js
21
+ node main.js
@@ -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
- Object.defineProperty(exports, "__esModule", {
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
- exports.sts = exports.ssm = exports.s3 = exports.iam = exports.ec2InstanceConnect = exports.ec2 = void 0;
9
- var _awsSdk = _interopRequireDefault(require("aws-sdk"));
10
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
- /* eslint-disable import/no-mutable-exports */
12
- let s3 = exports.s3 = {};
13
- let beanstalk = exports.beanstalk = {};
14
- let iam = exports.iam = {};
15
- let autoScaling = exports.autoScaling = {};
16
- let acm = exports.acm = {};
17
- let cloudTrail = exports.cloudTrail = {};
18
- let cloudWatchEvents = exports.cloudWatchEvents = {};
19
- let sts = exports.sts = {};
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
- auth,
30
- name,
31
- region
32
- }) {
33
- const options = {
34
- accessKeyId: auth.id,
35
- secretAccessKey: auth.secret,
36
- region: region || 'us-east-1',
37
- maxRetries: 25,
38
- retryDelayOptions: {
39
- customBackoff: retryCount => Math.min(2 ** retryCount * 1000, MAX_RETRY_DELAY)
40
- }
41
- };
42
- _awsSdk.default.config.update(options);
43
- exports.s3 = s3 = new _awsSdk.default.S3({
44
- params: {
45
- Bucket: `mup-${name}`
46
- },
47
- httpOptions: {
48
- timeout: AWS_UPLOAD_TIMEOUT
49
- },
50
- apiVersion: '2006-03-01'
51
- });
52
- exports.beanstalk = beanstalk = new _awsSdk.default.ElasticBeanstalk({
53
- apiVersion: '2010-12-01'
54
- });
55
- exports.iam = iam = new _awsSdk.default.IAM({
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","names":["_awsSdk","_interopRequireDefault","require","e","__esModule","default","s3","exports","beanstalk","iam","autoScaling","acm","cloudTrail","cloudWatchEvents","sts","ssm","ec2","ec2InstanceConnect","MAX_RETRY_DELAY","AWS_UPLOAD_TIMEOUT","configure","auth","name","region","options","accessKeyId","id","secretAccessKey","secret","maxRetries","retryDelayOptions","customBackoff","retryCount","Math","min","AWS","config","update","S3","params","Bucket","httpOptions","timeout","apiVersion","ElasticBeanstalk","IAM","AutoScaling","ACM","CloudTrail","STS","CloudWatchEvents","SSM","EC2","EC2InstanceConnect"],"sources":["../src/aws.js"],"sourcesContent":["import AWS from 'aws-sdk';\n\n/* eslint-disable import/no-mutable-exports */\nexport let s3 = {};\nexport let beanstalk = {};\nexport let iam = {};\nexport let autoScaling = {};\nexport let acm = {};\nexport let cloudTrail = {};\nexport let cloudWatchEvents = {};\nexport let sts = {};\nexport let ssm = {};\nexport let ec2 = {};\nexport let ec2InstanceConnect = {};\n\n/* eslint-enable import/no-mutable-exports */\n\nconst MAX_RETRY_DELAY = 1000 * 60 * 2;\nconst AWS_UPLOAD_TIMEOUT = 1000 * 60 * 60;\n\nexport default function configure({ auth, name, region }) {\n const options = {\n accessKeyId: auth.id,\n secretAccessKey: auth.secret,\n region: region || 'us-east-1',\n maxRetries: 25,\n retryDelayOptions: {\n customBackoff: retryCount => Math.min((2 ** retryCount * 1000), MAX_RETRY_DELAY)\n }\n };\n\n AWS.config.update(options);\n\n s3 = new AWS.S3({\n params: { Bucket: `mup-${name}` },\n httpOptions: { timeout: AWS_UPLOAD_TIMEOUT },\n apiVersion: '2006-03-01'\n });\n beanstalk = new AWS.ElasticBeanstalk({ apiVersion: '2010-12-01' });\n iam = new AWS.IAM({ apiVersion: '2010-05-08' });\n autoScaling = new AWS.AutoScaling({ apiVersion: '2011-01-01' });\n acm = new AWS.ACM({ apiVersion: '2015-12-08' });\n cloudTrail = new AWS.CloudTrail({ apiVersion: '2013-11-01' });\n sts = new AWS.STS({ apiVersion: '2011-06-15' });\n cloudWatchEvents = new AWS.CloudWatchEvents({ apiVersion: '2015-10-07' });\n ssm = new AWS.SSM({ apiVersion: '2014-11-06' });\n ec2 = new AWS.EC2({ apiVersion: '2016-11-15' });\n ec2InstanceConnect = new AWS.EC2InstanceConnect({ apiVersion: '2018-04-02' });\n}\n"],"mappings":"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","ignoreList":[]}
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"}