@brunwig/mup-aws-beanstalk 0.8.4 → 0.8.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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/eb-config.js"],"names":["createDesiredConfig","mupConfig","settings","longEnvVarsVersion","env","instanceType","customBeanstalkConfig","app","instanceProfile","serviceRole","config","OptionSettings","Namespace","OptionName","Value","settingsString","JSON","stringify","push","toString","METEOR_SETTINGS_ENCODED","encodeURIComponent","Object","keys","forEach","envName","value","customOptions","map","option","namespace","mergeConfigs","scalingConfigChanged","currentConfig","minInstances","maxInstances","currentMinInstances","currentMaxInstances","item","scalingConfig","convertToObject","result","config1","config2","reduce","key","values","diffConfig","current","desired","toRemove","filter","indexOf","toUpdate","prepareUpdateEnvironment","api","getConfig","environment","bucket","ConfigurationSettings","beanstalk","describeConfigurationSettings","EnvironmentName","ApplicationName","promise","longEnvVars","nextEnvVersion","envSettingsChanged","desiredSettings","currentEnvVersion","currentSettings","getSettings","desiredEbConfig"],"mappings":"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","sourcesContent":["import { difference } from 'lodash';\nimport { beanstalk } from './aws';\nimport downloadEnvFile from './download';\nimport { createEnvFile } from './env-settings';\nimport { uploadEnvFile } from './upload';\nimport { names } from './utils';\nimport { largestEnvVersion } from './versions';\n\nexport function createDesiredConfig(mupConfig, settings, longEnvVarsVersion) {\n const {\n env,\n instanceType,\n customBeanstalkConfig = []\n } = mupConfig.app;\n const {\n instanceProfile,\n serviceRole\n } = names(mupConfig);\n\n const config = {\n OptionSettings: [{\n Namespace: 'aws:autoscaling:trigger',\n OptionName: 'MeasureName',\n Value: 'CPUUtilization'\n }, {\n Namespace: 'aws:autoscaling:trigger',\n OptionName: 'Statistic',\n Value: 'Average'\n }, {\n Namespace: 'aws:autoscaling:trigger',\n OptionName: 'Unit',\n Value: 'Percent'\n }, {\n Namespace: 'aws:autoscaling:trigger',\n OptionName: 'UpperThreshold',\n Value: '75'\n }, {\n Namespace: 'aws:autoscaling:trigger',\n OptionName: 'LowerThreshold',\n Value: '35'\n }, {\n Namespace: 'aws:autoscaling:launchconfiguration',\n OptionName: 'InstanceType',\n Value: instanceType\n }, {\n Namespace: 'aws:autoscaling:launchconfiguration',\n OptionName: 'IamInstanceProfile',\n Value: instanceProfile\n }, {\n Namespace: 'aws:elasticbeanstalk:environment:process:default',\n OptionName: 'HealthyThresholdCount',\n Value: '2'\n }, {\n Namespace: 'aws:elasticbeanstalk:environment:process:default',\n OptionName: 'HealthCheckPath',\n Value: '/aws-health-check-3984729847289743128904723'\n }, {\n Namespace: 'aws:elasticbeanstalk:environment',\n OptionName: 'EnvironmentType',\n Value: 'LoadBalanced'\n }, {\n Namespace: 'aws:elasticbeanstalk:environment',\n OptionName: 'LoadBalancerType',\n Value: 'application'\n }, {\n Namespace: 'aws:elasticbeanstalk:command',\n OptionName: 'DeploymentPolicy',\n Value: 'RollingWithAdditionalBatch'\n }, {\n Namespace: 'aws:elasticbeanstalk:command',\n OptionName: 'BatchSizeType',\n Value: 'Percentage'\n }, {\n Namespace: 'aws:elasticbeanstalk:command',\n OptionName: 'BatchSize',\n Value: '30'\n }, {\n Namespace: 'aws:autoscaling:updatepolicy:rollingupdate',\n OptionName: 'RollingUpdateEnabled',\n Value: 'true'\n }, {\n Namespace: 'aws:autoscaling:updatepolicy:rollingupdate',\n OptionName: 'RollingUpdateType',\n Value: 'Health'\n }, {\n Namespace: 'aws:elasticbeanstalk:environment',\n OptionName: 'ServiceRole',\n Value: serviceRole\n }, {\n Namespace: 'aws:elasticbeanstalk:healthreporting:system',\n OptionName: 'SystemType',\n Value: 'enhanced'\n }, {\n Namespace: 'aws:elasticbeanstalk:environment:process:default',\n OptionName: 'StickinessEnabled',\n Value: 'true'\n }, {\n Namespace: 'aws:elasticbeanstalk:environment:process:default',\n OptionName: 'DeregistrationDelay',\n Value: '75'\n }]\n };\n\n const settingsString = JSON.stringify(settings);\n\n if (longEnvVarsVersion) {\n config.OptionSettings.push({\n Namespace: 'aws:elasticbeanstalk:application:environment',\n OptionName: 'MUP_ENV_FILE_VERSION',\n Value: longEnvVarsVersion.toString()\n });\n } else {\n env.METEOR_SETTINGS_ENCODED = encodeURIComponent(settingsString);\n\n Object.keys(env).forEach((envName) => {\n const value = env[envName];\n\n config.OptionSettings.push({\n Namespace: 'aws:elasticbeanstalk:application:environment',\n OptionName: envName,\n Value: value.toString()\n });\n });\n }\n\n const customOptions = customBeanstalkConfig.map(option => ({\n Namespace: option.namespace,\n OptionName: option.option,\n Value: option.value\n }));\n\n config.OptionSettings = mergeConfigs(config.OptionSettings, customOptions);\n\n return config;\n}\n\nexport function scalingConfigChanged(currentConfig, mupConfig) {\n const {\n minInstances,\n maxInstances\n } = mupConfig.app;\n\n let currentMinInstances = 0;\n let currentMaxInstances = 0;\n\n currentConfig.forEach((item) => {\n if (item.Namespace === 'aws:autoscaling:asg') {\n if (item.OptionName === 'MinSize') {\n currentMinInstances = item.Value;\n } else if (item.OptionName === 'MaxSize') {\n currentMaxInstances = item.Value;\n }\n }\n });\n\n return currentMinInstances !== minInstances.toString() ||\n currentMaxInstances !== maxInstances.toString();\n}\n\nexport function scalingConfig({ minInstances, maxInstances }) {\n return {\n OptionSettings: [\n {\n Namespace: 'aws:autoscaling:asg',\n OptionName: 'MinSize',\n Value: minInstances.toString()\n }, {\n Namespace: 'aws:autoscaling:asg',\n OptionName: 'MaxSize',\n Value: maxInstances.toString()\n }\n ]\n };\n}\n\nexport function convertToObject(result, option) {\n result[`${option.Namespace}-${option.OptionName}`] = option;\n\n return result;\n}\n\nexport function mergeConfigs(config1, config2) {\n config1 = config1.reduce(convertToObject, {});\n\n config2.forEach((option) => {\n const key = [`${option.Namespace}-${option.OptionName}`];\n config1[key] = option;\n });\n\n return Object.values(config1);\n}\n\nexport function diffConfig(current, desired) {\n current = current.reduce(convertToObject, {});\n\n desired = desired.reduce(convertToObject, {});\n\n const toRemove = difference(Object.keys(current), Object.keys(desired))\n .filter(key => key.indexOf('aws:elasticbeanstalk:application:environment-') === 0)\n .map((key) => {\n const option = current[key];\n return {\n Namespace: option.Namespace,\n OptionName: option.OptionName\n };\n });\n\n const toUpdate = Object.keys(desired).filter((key) => {\n if (key in current && current[key].Value === desired[key].Value) {\n return false;\n }\n\n return true;\n }).map(key => desired[key]);\n\n return {\n toRemove,\n toUpdate\n };\n}\n\nexport async function prepareUpdateEnvironment(api) {\n const config = api.getConfig();\n const {\n app,\n environment,\n bucket\n } = names(config);\n const {\n ConfigurationSettings\n } = await beanstalk.describeConfigurationSettings({\n EnvironmentName: environment,\n ApplicationName: app\n }).promise();\n const { longEnvVars } = config.app;\n let nextEnvVersion = 0;\n let envSettingsChanged;\n let desiredSettings;\n\n if (longEnvVars) {\n const currentEnvVersion = await largestEnvVersion(api);\n const currentSettings = await downloadEnvFile(bucket, currentEnvVersion);\n desiredSettings = createEnvFile(config.app.env, api.getSettings());\n envSettingsChanged = currentSettings !== desiredSettings;\n if (envSettingsChanged) {\n nextEnvVersion = currentEnvVersion + 1;\n await uploadEnvFile(bucket, nextEnvVersion, desiredSettings);\n } else {\n nextEnvVersion = currentEnvVersion;\n }\n }\n const desiredEbConfig = createDesiredConfig(\n api.getConfig(),\n api.getSettings(),\n nextEnvVersion\n );\n const {\n toRemove,\n toUpdate\n } = diffConfig(\n ConfigurationSettings[0].OptionSettings,\n desiredEbConfig.OptionSettings\n );\n\n return {\n toRemove,\n toUpdate\n };\n}\n"],"file":"eb-config.js"}
1
+ {"version":3,"file":"eb-config.js","names":["_lodash","require","_aws","_download","_interopRequireDefault","_envSettings","_upload","_utils","_versions","e","__esModule","default","createDesiredConfig","mupConfig","settings","longEnvVarsVersion","env","instanceType","customBeanstalkConfig","app","instanceProfile","serviceRole","names","config","OptionSettings","Namespace","OptionName","Value","settingsString","JSON","stringify","push","toString","METEOR_SETTINGS_ENCODED","encodeURIComponent","Object","keys","forEach","envName","value","customOptions","map","option","namespace","mergeConfigs","scalingConfigChanged","currentConfig","minInstances","maxInstances","currentMinInstances","currentMaxInstances","item","scalingConfig","convertToObject","result","config1","config2","reduce","key","values","diffConfig","current","desired","toRemove","difference","filter","indexOf","toUpdate","prepareUpdateEnvironment","api","getConfig","environment","bucket","ConfigurationSettings","beanstalk","describeConfigurationSettings","EnvironmentName","ApplicationName","promise","longEnvVars","nextEnvVersion","envSettingsChanged","desiredSettings","currentEnvVersion","largestEnvVersion","currentSettings","downloadEnvFile","createEnvFile","getSettings","uploadEnvFile","desiredEbConfig"],"sources":["../src/eb-config.js"],"sourcesContent":["import { difference } from 'lodash';\nimport { beanstalk } from './aws';\nimport downloadEnvFile from './download';\nimport { createEnvFile } from './env-settings';\nimport { uploadEnvFile } from './upload';\nimport { names } from './utils';\nimport { largestEnvVersion } from './versions';\n\nexport function createDesiredConfig(mupConfig, settings, longEnvVarsVersion) {\n const {\n env,\n instanceType,\n customBeanstalkConfig = []\n } = mupConfig.app;\n const {\n instanceProfile,\n serviceRole\n } = names(mupConfig);\n\n const config = {\n OptionSettings: [{\n Namespace: 'aws:autoscaling:trigger',\n OptionName: 'MeasureName',\n Value: 'CPUUtilization'\n }, {\n Namespace: 'aws:autoscaling:trigger',\n OptionName: 'Statistic',\n Value: 'Average'\n }, {\n Namespace: 'aws:autoscaling:trigger',\n OptionName: 'Unit',\n Value: 'Percent'\n }, {\n Namespace: 'aws:autoscaling:trigger',\n OptionName: 'UpperThreshold',\n Value: '75'\n }, {\n Namespace: 'aws:autoscaling:trigger',\n OptionName: 'LowerThreshold',\n Value: '35'\n }, {\n Namespace: 'aws:autoscaling:launchconfiguration',\n OptionName: 'InstanceType',\n Value: instanceType\n }, {\n Namespace: 'aws:autoscaling:launchconfiguration',\n OptionName: 'IamInstanceProfile',\n Value: instanceProfile\n }, {\n Namespace: 'aws:autoscaling:launchconfiguration',\n OptionName: 'DisableIMDSv1',\n Value: 'true'\n }, {\n Namespace: 'aws:elasticbeanstalk:environment:process:default',\n OptionName: 'HealthyThresholdCount',\n Value: '2'\n }, {\n Namespace: 'aws:elasticbeanstalk:environment:process:default',\n OptionName: 'HealthCheckPath',\n Value: '/aws-health-check-3984729847289743128904723'\n }, {\n Namespace: 'aws:elasticbeanstalk:environment',\n OptionName: 'EnvironmentType',\n Value: 'LoadBalanced'\n }, {\n Namespace: 'aws:elasticbeanstalk:environment',\n OptionName: 'LoadBalancerType',\n Value: 'application'\n }, {\n Namespace: 'aws:elasticbeanstalk:command',\n OptionName: 'DeploymentPolicy',\n Value: 'RollingWithAdditionalBatch'\n }, {\n Namespace: 'aws:elasticbeanstalk:command',\n OptionName: 'BatchSizeType',\n Value: 'Percentage'\n }, {\n Namespace: 'aws:elasticbeanstalk:command',\n OptionName: 'BatchSize',\n Value: '30'\n }, {\n Namespace: 'aws:autoscaling:updatepolicy:rollingupdate',\n OptionName: 'RollingUpdateEnabled',\n Value: 'true'\n }, {\n Namespace: 'aws:autoscaling:updatepolicy:rollingupdate',\n OptionName: 'RollingUpdateType',\n Value: 'Health'\n }, {\n Namespace: 'aws:elasticbeanstalk:environment',\n OptionName: 'ServiceRole',\n Value: serviceRole\n }, {\n Namespace: 'aws:elasticbeanstalk:healthreporting:system',\n OptionName: 'SystemType',\n Value: 'enhanced'\n }, {\n Namespace: 'aws:elasticbeanstalk:environment:process:default',\n OptionName: 'StickinessEnabled',\n Value: 'true'\n }, {\n Namespace: 'aws:elasticbeanstalk:environment:process:default',\n OptionName: 'DeregistrationDelay',\n Value: '75'\n }]\n };\n\n const settingsString = JSON.stringify(settings);\n\n if (longEnvVarsVersion) {\n config.OptionSettings.push({\n Namespace: 'aws:elasticbeanstalk:application:environment',\n OptionName: 'MUP_ENV_FILE_VERSION',\n Value: longEnvVarsVersion.toString()\n });\n } else {\n env.METEOR_SETTINGS_ENCODED = encodeURIComponent(settingsString);\n\n Object.keys(env).forEach((envName) => {\n const value = env[envName];\n\n config.OptionSettings.push({\n Namespace: 'aws:elasticbeanstalk:application:environment',\n OptionName: envName,\n Value: value.toString()\n });\n });\n }\n\n const customOptions = customBeanstalkConfig.map(option => ({\n Namespace: option.namespace,\n OptionName: option.option,\n Value: option.value\n }));\n\n config.OptionSettings = mergeConfigs(config.OptionSettings, customOptions);\n\n return config;\n}\n\nexport function scalingConfigChanged(currentConfig, mupConfig) {\n const {\n minInstances,\n maxInstances\n } = mupConfig.app;\n\n let currentMinInstances = 0;\n let currentMaxInstances = 0;\n\n currentConfig.forEach((item) => {\n if (item.Namespace === 'aws:autoscaling:asg') {\n if (item.OptionName === 'MinSize') {\n currentMinInstances = item.Value;\n } else if (item.OptionName === 'MaxSize') {\n currentMaxInstances = item.Value;\n }\n }\n });\n\n return currentMinInstances !== minInstances.toString() ||\n currentMaxInstances !== maxInstances.toString();\n}\n\nexport function scalingConfig({ minInstances, maxInstances }) {\n return {\n OptionSettings: [\n {\n Namespace: 'aws:autoscaling:asg',\n OptionName: 'MinSize',\n Value: minInstances.toString()\n }, {\n Namespace: 'aws:autoscaling:asg',\n OptionName: 'MaxSize',\n Value: maxInstances.toString()\n }\n ]\n };\n}\n\nexport function convertToObject(result, option) {\n result[`${option.Namespace}-${option.OptionName}`] = option;\n\n return result;\n}\n\nexport function mergeConfigs(config1, config2) {\n config1 = config1.reduce(convertToObject, {});\n\n config2.forEach((option) => {\n const key = [`${option.Namespace}-${option.OptionName}`];\n config1[key] = option;\n });\n\n return Object.values(config1);\n}\n\nexport function diffConfig(current, desired) {\n current = current.reduce(convertToObject, {});\n\n desired = desired.reduce(convertToObject, {});\n\n const toRemove = difference(Object.keys(current), Object.keys(desired))\n .filter(key => key.indexOf('aws:elasticbeanstalk:application:environment-') === 0)\n .map((key) => {\n const option = current[key];\n return {\n Namespace: option.Namespace,\n OptionName: option.OptionName\n };\n });\n\n const toUpdate = Object.keys(desired).filter((key) => {\n if (key in current && current[key].Value === desired[key].Value) {\n return false;\n }\n\n return true;\n }).map(key => desired[key]);\n\n return {\n toRemove,\n toUpdate\n };\n}\n\nexport async function prepareUpdateEnvironment(api) {\n const config = api.getConfig();\n const {\n app,\n environment,\n bucket\n } = names(config);\n const {\n ConfigurationSettings\n } = await beanstalk.describeConfigurationSettings({\n EnvironmentName: environment,\n ApplicationName: app\n }).promise();\n const { longEnvVars } = config.app;\n let nextEnvVersion = 0;\n let envSettingsChanged;\n let desiredSettings;\n\n if (longEnvVars) {\n const currentEnvVersion = await largestEnvVersion(api);\n const currentSettings = await downloadEnvFile(bucket, currentEnvVersion);\n desiredSettings = createEnvFile(config.app.env, api.getSettings());\n envSettingsChanged = currentSettings !== desiredSettings;\n if (envSettingsChanged) {\n nextEnvVersion = currentEnvVersion + 1;\n await uploadEnvFile(bucket, nextEnvVersion, desiredSettings);\n } else {\n nextEnvVersion = currentEnvVersion;\n }\n }\n const desiredEbConfig = createDesiredConfig(\n api.getConfig(),\n api.getSettings(),\n nextEnvVersion\n );\n const {\n toRemove,\n toUpdate\n } = diffConfig(\n ConfigurationSettings[0].OptionSettings,\n desiredEbConfig.OptionSettings\n );\n\n return {\n toRemove,\n toUpdate\n };\n}\n"],"mappings":"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","ignoreList":[]}
package/lib/env-ready.js CHANGED
@@ -7,13 +7,9 @@ exports.getLastEvent = getLastEvent;
7
7
  exports.showEvents = showEvents;
8
8
  exports.waitForEnvReady = waitForEnvReady;
9
9
  exports.waitForHealth = waitForHealth;
10
-
11
10
  var _utils = require("./utils");
12
-
13
11
  var _aws = require("./aws");
14
-
15
12
  var _recheck = require("./recheck");
16
-
17
13
  async function getLastEvent(config) {
18
14
  const {
19
15
  environment
@@ -26,7 +22,6 @@ async function getLastEvent(config) {
26
22
  }).promise();
27
23
  return Events[0].EventDate;
28
24
  }
29
-
30
25
  async function showEvents(config, lastEventDate) {
31
26
  const {
32
27
  environment,
@@ -43,12 +38,10 @@ async function showEvents(config, lastEventDate) {
43
38
  if (event.EventDate.toString() === lastEventDate.toString()) {
44
39
  return;
45
40
  }
46
-
47
41
  console.log(` Env Event: ${event.Message}`);
48
42
  });
49
43
  return new Date(Events[0].EventDate);
50
44
  }
51
-
52
45
  async function checker(config, prop, wantedValue, showProgress) {
53
46
  const {
54
47
  environment,
@@ -56,15 +49,12 @@ async function checker(config, prop, wantedValue, showProgress) {
56
49
  } = (0, _utils.names)(config);
57
50
  let lastEventDate = null;
58
51
  let lastStatus = null;
59
-
60
52
  if (showProgress) {
61
53
  lastEventDate = await getLastEvent(config);
62
54
  }
63
-
64
55
  return new Promise((resolve, reject) => {
65
56
  async function check() {
66
57
  let result;
67
-
68
58
  try {
69
59
  result = await _aws.beanstalk.describeEnvironments({
70
60
  EnvironmentNames: [environment],
@@ -75,13 +65,10 @@ async function checker(config, prop, wantedValue, showProgress) {
75
65
  (0, _recheck.handleThrottlingException)();
76
66
  return setTimeout(check, (0, _recheck.getRecheckInterval)());
77
67
  }
78
-
79
68
  console.log(e);
80
69
  reject(e);
81
70
  }
82
-
83
71
  const value = result.Environments[0][prop];
84
-
85
72
  if (value !== wantedValue && value !== lastStatus) {
86
73
  const text = prop === 'Health' ? `be ${wantedValue}` : `finish ${value}`;
87
74
  (0, _utils.logStep)(`=> Waiting for Beanstalk environment to ${text.toLocaleLowerCase()}`);
@@ -91,7 +78,6 @@ async function checker(config, prop, wantedValue, showProgress) {
91
78
  resolve();
92
79
  return;
93
80
  }
94
-
95
81
  if (showProgress) {
96
82
  try {
97
83
  lastEventDate = await showEvents(config, lastEventDate);
@@ -103,18 +89,14 @@ async function checker(config, prop, wantedValue, showProgress) {
103
89
  }
104
90
  }
105
91
  }
106
-
107
92
  setTimeout(check, (0, _recheck.getRecheckInterval)());
108
93
  }
109
-
110
94
  check();
111
95
  });
112
96
  }
113
-
114
97
  async function waitForEnvReady(config, showProgress) {
115
98
  await checker(config, 'Status', 'Ready', showProgress);
116
99
  }
117
-
118
100
  async function waitForHealth(config, health = 'Green', showProgress) {
119
101
  await checker(config, 'Health', health, showProgress);
120
102
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/env-ready.js"],"names":["getLastEvent","config","environment","Events","beanstalk","describeEvents","EnvironmentName","MaxRecords","promise","EventDate","showEvents","lastEventDate","app","ApplicationName","StartTime","forEach","event","toString","console","log","Message","Date","checker","prop","wantedValue","showProgress","lastStatus","Promise","resolve","reject","check","result","describeEnvironments","EnvironmentNames","e","setTimeout","value","Environments","text","toLocaleLowerCase","waitForEnvReady","waitForHealth","health"],"mappings":"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","sourcesContent":["import {\n logStep,\n names\n} from './utils';\nimport { beanstalk } from './aws';\nimport {\n getRecheckInterval,\n checkForThrottlingException,\n handleThrottlingException\n} from './recheck';\n\nexport async function getLastEvent(config) {\n const {\n environment\n } = names(config);\n\n const {\n Events\n } = await beanstalk.describeEvents({\n EnvironmentName: environment,\n MaxRecords: 5\n }).promise();\n\n return Events[0].EventDate;\n}\n\nexport async function showEvents(config, lastEventDate) {\n const {\n environment,\n app\n } = names(config);\n\n const {\n Events\n } = await beanstalk.describeEvents({\n EnvironmentName: environment,\n ApplicationName: app,\n StartTime: lastEventDate\n }).promise();\n\n Events.forEach((event) => {\n if (event.EventDate.toString() === lastEventDate.toString()) {\n return;\n }\n console.log(` Env Event: ${event.Message}`);\n });\n\n return new Date(Events[0].EventDate);\n}\n\nasync function checker(config, prop, wantedValue, showProgress) {\n const {\n environment,\n app\n } = names(config);\n\n let lastEventDate = null;\n let lastStatus = null;\n\n if (showProgress) {\n lastEventDate = await getLastEvent(config);\n }\n\n return new Promise((resolve, reject) => {\n async function check() {\n let result;\n try {\n result = await beanstalk.describeEnvironments({\n EnvironmentNames: [environment],\n ApplicationName: app\n }).promise();\n } catch (e) {\n if (checkForThrottlingException(e)) {\n handleThrottlingException();\n return setTimeout(check, getRecheckInterval());\n }\n\n console.log(e);\n reject(e);\n }\n const value = result.Environments[0][prop];\n if (value !== wantedValue && value !== lastStatus) {\n const text = prop === 'Health' ? `be ${wantedValue}` : `finish ${value}`;\n\n logStep(`=> Waiting for Beanstalk environment to ${text.toLocaleLowerCase()}`);\n lastStatus = value;\n } else if (value === wantedValue) {\n // TODO: run showEvents one last time\n resolve();\n\n return;\n }\n\n if (showProgress) {\n try {\n lastEventDate = await showEvents(config, lastEventDate);\n } catch (e) {\n if (checkForThrottlingException(e)) {\n handleThrottlingException();\n } else {\n console.log(e);\n }\n }\n }\n\n setTimeout(check, getRecheckInterval());\n }\n\n check();\n });\n}\n\nexport async function waitForEnvReady(config, showProgress) {\n await checker(config, 'Status', 'Ready', showProgress);\n}\n\nexport async function waitForHealth(config, health = 'Green', showProgress) {\n await checker(config, 'Health', health, showProgress);\n}\n"],"file":"env-ready.js"}
1
+ {"version":3,"file":"env-ready.js","names":["_utils","require","_aws","_recheck","getLastEvent","config","environment","names","Events","beanstalk","describeEvents","EnvironmentName","MaxRecords","promise","EventDate","showEvents","lastEventDate","app","ApplicationName","StartTime","forEach","event","toString","console","log","Message","Date","checker","prop","wantedValue","showProgress","lastStatus","Promise","resolve","reject","check","result","describeEnvironments","EnvironmentNames","e","checkForThrottlingException","handleThrottlingException","setTimeout","getRecheckInterval","value","Environments","text","logStep","toLocaleLowerCase","waitForEnvReady","waitForHealth","health"],"sources":["../src/env-ready.js"],"sourcesContent":["import {\n logStep,\n names\n} from './utils';\nimport { beanstalk } from './aws';\nimport {\n getRecheckInterval,\n checkForThrottlingException,\n handleThrottlingException\n} from './recheck';\n\nexport async function getLastEvent(config) {\n const {\n environment\n } = names(config);\n\n const {\n Events\n } = await beanstalk.describeEvents({\n EnvironmentName: environment,\n MaxRecords: 5\n }).promise();\n\n return Events[0].EventDate;\n}\n\nexport async function showEvents(config, lastEventDate) {\n const {\n environment,\n app\n } = names(config);\n\n const {\n Events\n } = await beanstalk.describeEvents({\n EnvironmentName: environment,\n ApplicationName: app,\n StartTime: lastEventDate\n }).promise();\n\n Events.forEach((event) => {\n if (event.EventDate.toString() === lastEventDate.toString()) {\n return;\n }\n console.log(` Env Event: ${event.Message}`);\n });\n\n return new Date(Events[0].EventDate);\n}\n\nasync function checker(config, prop, wantedValue, showProgress) {\n const {\n environment,\n app\n } = names(config);\n\n let lastEventDate = null;\n let lastStatus = null;\n\n if (showProgress) {\n lastEventDate = await getLastEvent(config);\n }\n\n return new Promise((resolve, reject) => {\n async function check() {\n let result;\n try {\n result = await beanstalk.describeEnvironments({\n EnvironmentNames: [environment],\n ApplicationName: app\n }).promise();\n } catch (e) {\n if (checkForThrottlingException(e)) {\n handleThrottlingException();\n return setTimeout(check, getRecheckInterval());\n }\n\n console.log(e);\n reject(e);\n }\n const value = result.Environments[0][prop];\n if (value !== wantedValue && value !== lastStatus) {\n const text = prop === 'Health' ? `be ${wantedValue}` : `finish ${value}`;\n\n logStep(`=> Waiting for Beanstalk environment to ${text.toLocaleLowerCase()}`);\n lastStatus = value;\n } else if (value === wantedValue) {\n // TODO: run showEvents one last time\n resolve();\n\n return;\n }\n\n if (showProgress) {\n try {\n lastEventDate = await showEvents(config, lastEventDate);\n } catch (e) {\n if (checkForThrottlingException(e)) {\n handleThrottlingException();\n } else {\n console.log(e);\n }\n }\n }\n\n setTimeout(check, getRecheckInterval());\n }\n\n check();\n });\n}\n\nexport async function waitForEnvReady(config, showProgress) {\n await checker(config, 'Status', 'Ready', showProgress);\n}\n\nexport async function waitForHealth(config, health = 'Green', showProgress) {\n await checker(config, 'Health', health, showProgress);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -4,11 +4,8 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.createEnvFile = createEnvFile;
7
-
8
7
  var _shellEscape = _interopRequireDefault(require("shell-escape"));
9
-
10
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
-
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
9
  function createEnvFile(env, settings) {
13
10
  let content = '';
14
11
  const settingsString = encodeURIComponent(JSON.stringify(settings));
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/env-settings.js"],"names":["createEnvFile","env","settings","content","settingsString","encodeURIComponent","JSON","stringify","Object","keys","forEach","key","value"],"mappings":";;;;;;;AAAA;;;;AAEO,SAASA,aAAT,CAAuBC,GAAvB,EAA4BC,QAA5B,EAAsC;AAC3C,MAAIC,OAAO,GAAG,EAAd;AACA,QAAMC,cAAc,GAAGC,kBAAkB,CAACC,IAAI,CAACC,SAAL,CAAeL,QAAf,CAAD,CAAzC;AAEAM,EAAAA,MAAM,CAACC,IAAP,CAAYR,GAAZ,EAAiBS,OAAjB,CAA0BC,GAAD,IAAS;AAChC,UAAMC,KAAK,GAAG,0BAAY,CAACX,GAAG,CAACU,GAAD,CAAJ,CAAZ,CAAd;AACAR,IAAAA,OAAO,IAAK,UAASQ,GAAI,IAAGC,KAAM,IAAlC;AACD,GAHD;AAKAT,EAAAA,OAAO,IAAK,kCAAiC,0BAAY,CAACC,cAAD,CAAZ,CAA8B,EAA3E;AACA,SAAOD,OAAP;AACD","sourcesContent":["import shellEscape from 'shell-escape';\n\nexport function createEnvFile(env, settings) {\n let content = '';\n const settingsString = encodeURIComponent(JSON.stringify(settings));\n\n Object.keys(env).forEach((key) => {\n const value = shellEscape([env[key]]);\n content += `export ${key}=${value}\\n`;\n });\n\n content += `export METEOR_SETTINGS_ENCODED=${shellEscape([settingsString])}`;\n return content\n}\n"],"file":"env-settings.js"}
1
+ {"version":3,"file":"env-settings.js","names":["_shellEscape","_interopRequireDefault","require","e","__esModule","default","createEnvFile","env","settings","content","settingsString","encodeURIComponent","JSON","stringify","Object","keys","forEach","key","value","shellEscape"],"sources":["../src/env-settings.js"],"sourcesContent":["import shellEscape from 'shell-escape';\n\nexport function createEnvFile(env, settings) {\n let content = '';\n const settingsString = encodeURIComponent(JSON.stringify(settings));\n\n Object.keys(env).forEach((key) => {\n const value = shellEscape([env[key]]);\n content += `export ${key}=${value}\\n`;\n });\n\n content += `export METEOR_SETTINGS_ENCODED=${shellEscape([settingsString])}`;\n return content\n}\n"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAuC,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEhC,SAASG,aAAaA,CAACC,GAAG,EAAEC,QAAQ,EAAE;EAC3C,IAAIC,OAAO,GAAG,EAAE;EAChB,MAAMC,cAAc,GAAGC,kBAAkB,CAACC,IAAI,CAACC,SAAS,CAACL,QAAQ,CAAC,CAAC;EAEnEM,MAAM,CAACC,IAAI,CAACR,GAAG,CAAC,CAACS,OAAO,CAAEC,GAAG,IAAK;IAChC,MAAMC,KAAK,GAAG,IAAAC,oBAAW,EAAC,CAACZ,GAAG,CAACU,GAAG,CAAC,CAAC,CAAC;IACrCR,OAAO,IAAI,UAAUQ,GAAG,IAAIC,KAAK,IAAI;EACvC,CAAC,CAAC;EAEFT,OAAO,IAAI,kCAAkC,IAAAU,oBAAW,EAAC,CAACT,cAAc,CAAC,CAAC,EAAE;EAC5E,OAAOD,OAAO;AAChB","ignoreList":[]}
package/lib/index.js CHANGED
@@ -3,48 +3,36 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.name = exports.hooks = exports.description = exports.commands = void 0;
6
7
  exports.prepareConfig = prepareConfig;
7
- exports.hooks = exports.validate = exports.commands = exports.description = exports.name = void 0;
8
-
8
+ exports.validate = void 0;
9
9
  var _commands = _interopRequireWildcard(require("./commands"));
10
-
11
10
  var _validate = _interopRequireDefault(require("./validate"));
12
-
13
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
-
15
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
16
-
17
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
18
-
19
- const name = 'beanstalk';
20
- exports.name = name;
21
- const description = 'Deploy Meteor app to AWS Elastic Beanstalk';
22
- exports.description = description;
23
- const commands = _commands;
24
- exports.commands = commands;
25
- const validate = {
11
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
13
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
14
+ const name = exports.name = 'beanstalk';
15
+ const description = exports.description = 'Deploy Meteor app to AWS Elastic Beanstalk';
16
+ const commands = exports.commands = _commands;
17
+ const validate = exports.validate = {
26
18
  app(config, utils) {
27
19
  if (config.app && config.app.type === 'aws-beanstalk') {
28
20
  return (0, _validate.default)(config, utils);
29
21
  }
30
-
31
22
  return [];
32
23
  }
33
-
34
24
  };
35
- exports.validate = validate;
36
-
37
25
  function prepareConfig(config) {
38
26
  if (!config.app || config.app.type !== 'aws-beanstalk') {
39
27
  return config;
40
28
  }
41
-
42
29
  const defaultBuildOptions = {
43
30
  serverOnly: true
44
31
  };
45
- config.app.buildOptions = config.app.buildOptions || defaultBuildOptions; // This will change 0 to 1. The validator will warn when the number is 0
46
- // To have 0 instances, `mup stop` should be used
32
+ config.app.buildOptions = config.app.buildOptions || defaultBuildOptions;
47
33
 
34
+ // This will change 0 to 1. The validator will warn when the number is 0
35
+ // To have 0 instances, `mup stop` should be used
48
36
  config.app.minInstances = config.app.minInstances || 1;
49
37
  config.app.maxInstances = config.app.maxInstances || config.app.minInstances;
50
38
  config.app.instanceType = config.app.instanceType || 't2.micro';
@@ -54,18 +42,14 @@ function prepareConfig(config) {
54
42
  config.app.oldVersions = config.app.oldVersions || 3;
55
43
  return config;
56
44
  }
57
-
58
45
  function isBeanstalkApp(api) {
59
46
  const config = api.getConfig();
60
-
61
47
  if (config.app && config.app.type === 'aws-beanstalk') {
62
48
  return true;
63
49
  }
64
-
65
50
  return false;
66
51
  }
67
-
68
- const hooks = {
52
+ const hooks = exports.hooks = {
69
53
  'post.setup': api => {
70
54
  if (isBeanstalkApp(api)) {
71
55
  return api.runCommand('beanstalk.setup');
@@ -107,5 +91,4 @@ const hooks = {
107
91
  }
108
92
  }
109
93
  };
110
- exports.hooks = hooks;
111
94
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.js"],"names":["name","description","commands","_commands","validate","app","config","utils","type","prepareConfig","defaultBuildOptions","serverOnly","buildOptions","minInstances","maxInstances","instanceType","env","PORT","METEOR_SIGTERM_GRACE_PERIOD_SECONDS","oldVersions","isBeanstalkApp","api","getConfig","hooks","runCommand"],"mappings":";;;;;;;;AAAA;;AACA;;;;;;;;AAEO,MAAMA,IAAI,GAAG,WAAb;;AACA,MAAMC,WAAW,GAAG,4CAApB;;AACA,MAAMC,QAAQ,GAAGC,SAAjB;;AAEA,MAAMC,QAAQ,GAAG;AACtBC,EAAAA,GAAG,CAACC,MAAD,EAASC,KAAT,EAAgB;AACjB,QAAID,MAAM,CAACD,GAAP,IAAcC,MAAM,CAACD,GAAP,CAAWG,IAAX,KAAoB,eAAtC,EAAuD;AACrD,aAAO,uBAAUF,MAAV,EAAkBC,KAAlB,CAAP;AACD;;AAED,WAAO,EAAP;AACD;;AAPqB,CAAjB;;;AAUA,SAASE,aAAT,CAAuBH,MAAvB,EAA+B;AACpC,MAAI,CAACA,MAAM,CAACD,GAAR,IAAeC,MAAM,CAACD,GAAP,CAAWG,IAAX,KAAoB,eAAvC,EAAwD;AACtD,WAAOF,MAAP;AACD;;AAED,QAAMI,mBAAmB,GAAG;AAC1BC,IAAAA,UAAU,EAAE;AADc,GAA5B;AAIAL,EAAAA,MAAM,CAACD,GAAP,CAAWO,YAAX,GAA0BN,MAAM,CAACD,GAAP,CAAWO,YAAX,IAA2BF,mBAArD,CAToC,CAWpC;AACA;;AACAJ,EAAAA,MAAM,CAACD,GAAP,CAAWQ,YAAX,GAA0BP,MAAM,CAACD,GAAP,CAAWQ,YAAX,IAA2B,CAArD;AACAP,EAAAA,MAAM,CAACD,GAAP,CAAWS,YAAX,GAA0BR,MAAM,CAACD,GAAP,CAAWS,YAAX,IAA2BR,MAAM,CAACD,GAAP,CAAWQ,YAAhE;AAEAP,EAAAA,MAAM,CAACD,GAAP,CAAWU,YAAX,GAA0BT,MAAM,CAACD,GAAP,CAAWU,YAAX,IAA2B,UAArD;AAEAT,EAAAA,MAAM,CAACD,GAAP,CAAWW,GAAX,GAAiBV,MAAM,CAACD,GAAP,CAAWW,GAAX,IAAkB,EAAnC;AACAV,EAAAA,MAAM,CAACD,GAAP,CAAWW,GAAX,CAAeC,IAAf,GAAsB,IAAtB;AACAX,EAAAA,MAAM,CAACD,GAAP,CAAWW,GAAX,CAAeE,mCAAf,GAAqD,EAArD;AAEAZ,EAAAA,MAAM,CAACD,GAAP,CAAWc,WAAX,GAAyBb,MAAM,CAACD,GAAP,CAAWc,WAAX,IAA0B,CAAnD;AAEA,SAAOb,MAAP;AACD;;AAED,SAASc,cAAT,CAAwBC,GAAxB,EAA6B;AAC3B,QAAMf,MAAM,GAAGe,GAAG,CAACC,SAAJ,EAAf;;AAEA,MAAIhB,MAAM,CAACD,GAAP,IAAcC,MAAM,CAACD,GAAP,CAAWG,IAAX,KAAoB,eAAtC,EAAuD;AACrD,WAAO,IAAP;AACD;;AAED,SAAO,KAAP;AACD;;AAEM,MAAMe,KAAK,GAAG;AACnB,gBAAeF,GAAD,IAAS;AACrB,QAAID,cAAc,CAACC,GAAD,CAAlB,EAAyB;AACvB,aAAOA,GAAG,CAACG,UAAJ,CAAe,iBAAf,CAAP;AACD;AACF,GALkB;AAMnB,iBAAgBH,GAAD,IAAS;AACtB,QAAID,cAAc,CAACC,GAAD,CAAlB,EAAyB;AACvB,aAAOA,GAAG,CAACG,UAAJ,CAAe,kBAAf,CAAP;AACD;AACF,GAVkB;AAWnB,eAAcH,GAAD,IAAS;AACpB,QAAID,cAAc,CAACC,GAAD,CAAlB,EAAyB;AACvB,aAAOA,GAAG,CAACG,UAAJ,CAAe,gBAAf,CAAP;AACD;AACF,GAfkB;AAgBnB,gBAAeH,GAAD,IAAS;AACrB,QAAID,cAAc,CAACC,GAAD,CAAlB,EAAyB;AACvB,aAAOA,GAAG,CAACG,UAAJ,CAAe,iBAAf,CAAP;AACD;AACF,GApBkB;AAqBnB,eAAcH,GAAD,IAAS;AACpB,QAAID,cAAc,CAACC,GAAD,CAAlB,EAAyB;AACvB,aAAOA,GAAG,CAACG,UAAJ,CAAe,gBAAf,CAAP;AACD;AACF,GAzBkB;AA0BnB,kBAAiBH,GAAD,IAAS;AACvB,QAAID,cAAc,CAACC,GAAD,CAAlB,EAAyB;AACvB,aAAOA,GAAG,CAACG,UAAJ,CAAe,mBAAf,CAAP;AACD;AACF,GA9BkB;AA+BnB,mBAAkBH,GAAD,IAAS;AACxB,QAAID,cAAc,CAACC,GAAD,CAAlB,EAAyB;AACvB,aAAOA,GAAG,CAACG,UAAJ,CAAe,oBAAf,CAAP;AACD;AACF,GAnCkB;AAoCnB,iBAAgBH,GAAD,IAAS;AACtB,QAAID,cAAc,CAACC,GAAD,CAAlB,EAAyB;AACvB,aAAOA,GAAG,CAACG,UAAJ,CAAe,kBAAf,CAAP;AACD;AACF;AAxCkB,CAAd","sourcesContent":["import * as _commands from './commands';\nimport validator from './validate';\n\nexport const name = 'beanstalk';\nexport const description = 'Deploy Meteor app to AWS Elastic Beanstalk';\nexport const commands = _commands;\n\nexport const validate = {\n app(config, utils) {\n if (config.app && config.app.type === 'aws-beanstalk') {\n return validator(config, utils);\n }\n\n return [];\n }\n};\n\nexport function prepareConfig(config) {\n if (!config.app || config.app.type !== 'aws-beanstalk') {\n return config;\n }\n\n const defaultBuildOptions = {\n serverOnly: true\n };\n\n config.app.buildOptions = config.app.buildOptions || defaultBuildOptions;\n\n // This will change 0 to 1. The validator will warn when the number is 0\n // To have 0 instances, `mup stop` should be used\n config.app.minInstances = config.app.minInstances || 1;\n config.app.maxInstances = config.app.maxInstances || config.app.minInstances;\n\n config.app.instanceType = config.app.instanceType || 't2.micro';\n\n config.app.env = config.app.env || {};\n config.app.env.PORT = 8081;\n config.app.env.METEOR_SIGTERM_GRACE_PERIOD_SECONDS = 30;\n\n config.app.oldVersions = config.app.oldVersions || 3;\n\n return config;\n}\n\nfunction isBeanstalkApp(api) {\n const config = api.getConfig();\n\n if (config.app && config.app.type === 'aws-beanstalk') {\n return true;\n }\n\n return false;\n}\n\nexport const hooks = {\n 'post.setup': (api) => {\n if (isBeanstalkApp(api)) {\n return api.runCommand('beanstalk.setup');\n }\n },\n 'post.deploy': (api) => {\n if (isBeanstalkApp(api)) {\n return api.runCommand('beanstalk.deploy');\n }\n },\n 'post.logs': (api) => {\n if (isBeanstalkApp(api)) {\n return api.runCommand('beanstalk.logs');\n }\n },\n 'post.start': (api) => {\n if (isBeanstalkApp(api)) {\n return api.runCommand('beanstalk.start');\n }\n },\n 'post.stop': (api) => {\n if (isBeanstalkApp(api)) {\n return api.runCommand('beanstalk.stop');\n }\n },\n 'post.restart': (api) => {\n if (isBeanstalkApp(api)) {\n return api.runCommand('beanstalk.restart');\n }\n },\n 'post.reconfig': (api) => {\n if (isBeanstalkApp(api)) {\n return api.runCommand('beanstalk.reconfig');\n }\n },\n 'post.status': (api) => {\n if (isBeanstalkApp(api)) {\n return api.runCommand('beanstalk.status');\n }\n }\n};\n"],"file":"index.js"}
1
+ {"version":3,"file":"index.js","names":["_commands","_interopRequireWildcard","require","_validate","_interopRequireDefault","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","name","exports","description","commands","validate","app","config","utils","type","validator","prepareConfig","defaultBuildOptions","serverOnly","buildOptions","minInstances","maxInstances","instanceType","env","PORT","METEOR_SIGTERM_GRACE_PERIOD_SECONDS","oldVersions","isBeanstalkApp","api","getConfig","hooks","runCommand"],"sources":["../src/index.js"],"sourcesContent":["import * as _commands from './commands';\nimport validator from './validate';\n\nexport const name = 'beanstalk';\nexport const description = 'Deploy Meteor app to AWS Elastic Beanstalk';\nexport const commands = _commands;\n\nexport const validate = {\n app(config, utils) {\n if (config.app && config.app.type === 'aws-beanstalk') {\n return validator(config, utils);\n }\n\n return [];\n }\n};\n\nexport function prepareConfig(config) {\n if (!config.app || config.app.type !== 'aws-beanstalk') {\n return config;\n }\n\n const defaultBuildOptions = {\n serverOnly: true\n };\n\n config.app.buildOptions = config.app.buildOptions || defaultBuildOptions;\n\n // This will change 0 to 1. The validator will warn when the number is 0\n // To have 0 instances, `mup stop` should be used\n config.app.minInstances = config.app.minInstances || 1;\n config.app.maxInstances = config.app.maxInstances || config.app.minInstances;\n\n config.app.instanceType = config.app.instanceType || 't2.micro';\n\n config.app.env = config.app.env || {};\n config.app.env.PORT = 8081;\n config.app.env.METEOR_SIGTERM_GRACE_PERIOD_SECONDS = 30;\n\n config.app.oldVersions = config.app.oldVersions || 3;\n\n return config;\n}\n\nfunction isBeanstalkApp(api) {\n const config = api.getConfig();\n\n if (config.app && config.app.type === 'aws-beanstalk') {\n return true;\n }\n\n return false;\n}\n\nexport const hooks = {\n 'post.setup': (api) => {\n if (isBeanstalkApp(api)) {\n return api.runCommand('beanstalk.setup');\n }\n },\n 'post.deploy': (api) => {\n if (isBeanstalkApp(api)) {\n return api.runCommand('beanstalk.deploy');\n }\n },\n 'post.logs': (api) => {\n if (isBeanstalkApp(api)) {\n return api.runCommand('beanstalk.logs');\n }\n },\n 'post.start': (api) => {\n if (isBeanstalkApp(api)) {\n return api.runCommand('beanstalk.start');\n }\n },\n 'post.stop': (api) => {\n if (isBeanstalkApp(api)) {\n return api.runCommand('beanstalk.stop');\n }\n },\n 'post.restart': (api) => {\n if (isBeanstalkApp(api)) {\n return api.runCommand('beanstalk.restart');\n }\n },\n 'post.reconfig': (api) => {\n if (isBeanstalkApp(api)) {\n return api.runCommand('beanstalk.reconfig');\n }\n },\n 'post.status': (api) => {\n if (isBeanstalkApp(api)) {\n return api.runCommand('beanstalk.status');\n }\n }\n};\n"],"mappings":"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","ignoreList":[]}
package/lib/policies.js CHANGED
@@ -3,10 +3,10 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.trailBucketPolicy = trailBucketPolicy;
6
+ exports.eventTargetRole = exports.deregisterEventTarget = exports.DeregisterEvent = void 0;
7
7
  exports.eventTargetRolePolicy = eventTargetRolePolicy;
8
- exports.gracefulShutdownAutomationDocument = exports.deregisterEventTarget = exports.DeregisterEvent = exports.passRolePolicy = exports.eventTargetRole = exports.serviceRole = exports.rolePolicy = void 0;
9
-
8
+ exports.serviceRole = exports.rolePolicy = exports.passRolePolicy = exports.gracefulShutdownAutomationDocument = void 0;
9
+ exports.trailBucketPolicy = trailBucketPolicy;
10
10
  function trailBucketPolicy(accountId, bucketName) {
11
11
  const policy = {
12
12
  Version: '2012-10-17',
@@ -35,14 +35,9 @@ function trailBucketPolicy(accountId, bucketName) {
35
35
  };
36
36
  return JSON.stringify(policy);
37
37
  }
38
-
39
- const rolePolicy = '{ "Version": "2008-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }';
40
- exports.rolePolicy = rolePolicy;
41
- const serviceRole = '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "elasticbeanstalk.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId": "elasticbeanstalk" } } } ] }';
42
- exports.serviceRole = serviceRole;
43
- const eventTargetRole = '{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sts:AssumeRole" }, { "Effect": "Allow", "Principal": { "Service": [ "ssm.amazonaws.com", "ec2.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }';
44
- exports.eventTargetRole = eventTargetRole;
45
-
38
+ const rolePolicy = exports.rolePolicy = '{ "Version": "2008-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }';
39
+ const serviceRole = exports.serviceRole = '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "elasticbeanstalk.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId": "elasticbeanstalk" } } } ] }';
40
+ const eventTargetRole = exports.eventTargetRole = '{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sts:AssumeRole" }, { "Effect": "Allow", "Principal": { "Service": [ "ssm.amazonaws.com", "ec2.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }';
46
41
  const passRolePolicy = (accountId, role) => {
47
42
  const policy = {
48
43
  Version: '2012-10-17',
@@ -54,9 +49,7 @@ const passRolePolicy = (accountId, role) => {
54
49
  };
55
50
  return JSON.stringify(policy);
56
51
  };
57
-
58
52
  exports.passRolePolicy = passRolePolicy;
59
-
60
53
  function eventTargetRolePolicy(accountId, env, region) {
61
54
  const policy = {
62
55
  Version: '2012-10-17',
@@ -81,10 +74,7 @@ function eventTargetRolePolicy(accountId, env, region) {
81
74
  };
82
75
  return JSON.stringify(policy);
83
76
  }
84
-
85
- const DeregisterEvent = '{ "source": [ "aws.elasticloadbalancing" ], "detail-type": [ "AWS API Call via CloudTrail" ], "detail": { "eventSource": [ "elasticloadbalancing.amazonaws.com" ], "eventName": [ "DeregisterTargets" ] } }';
86
- exports.DeregisterEvent = DeregisterEvent;
87
-
77
+ const DeregisterEvent = exports.DeregisterEvent = '{ "source": [ "aws.elasticloadbalancing" ], "detail-type": [ "AWS API Call via CloudTrail" ], "detail": { "eventSource": [ "elasticloadbalancing.amazonaws.com" ], "eventName": [ "DeregisterTargets" ] } }';
88
78
  const deregisterEventTarget = (envName, role, accountId, region) => ({
89
79
  Id: `mup-target-${envName}`,
90
80
  Arn: `arn:aws:ssm:${region}:${accountId}:automation-definition/mup-graceful-shutdown:$LATEST`,
@@ -96,9 +86,7 @@ const deregisterEventTarget = (envName, role, accountId, region) => ({
96
86
  InputTemplate: `{"InstanceId":[<instance>], "AutomationAssumeRole": ["arn:aws:iam::${accountId}:role/${role}"], "ServiceRole": ["arn:aws:iam::${accountId}:role/${role}"], "Commands": ["cd /mup_graceful_shutdown || exit 1", "ls", "PATH='/mup_graceful_shutdown'", <instance>]}`
97
87
  }
98
88
  });
99
-
100
89
  exports.deregisterEventTarget = deregisterEventTarget;
101
-
102
90
  const gracefulShutdownAutomationDocument = () => {
103
91
  const document = {
104
92
  description: 'Automation document for mup-aws-beanstalk graceful shutdown',
@@ -139,6 +127,5 @@ const gracefulShutdownAutomationDocument = () => {
139
127
  };
140
128
  return JSON.stringify(document);
141
129
  };
142
-
143
130
  exports.gracefulShutdownAutomationDocument = gracefulShutdownAutomationDocument;
144
131
  //# sourceMappingURL=policies.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/policies.js"],"names":["trailBucketPolicy","accountId","bucketName","policy","Version","Statement","Sid","Effect","Principal","Service","Action","Resource","Condition","StringEquals","JSON","stringify","rolePolicy","serviceRole","eventTargetRole","passRolePolicy","role","eventTargetRolePolicy","env","region","StringLike","DeregisterEvent","deregisterEventTarget","envName","Id","Arn","RoleArn","InputTransformer","InputPathsMap","instance","InputTemplate","gracefulShutdownAutomationDocument","document","description","schemaVersion","assumeRole","parameters","InstanceId","type","AutomationAssumeRole","default","Commands","ServiceRole","mainSteps","name","action","timeoutSeconds","inputs","DocumentName","InstanceIds","ServiceRoleArn","Parameters","commands"],"mappings":"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","sourcesContent":["export function trailBucketPolicy(accountId, bucketName) {\n const policy = {\n Version: '2012-10-17',\n Statement: [{\n Sid: 'AWSCloudTrailAclCheck20150319',\n Effect: 'Allow',\n Principal: {\n Service: 'cloudtrail.amazonaws.com'\n },\n Action: 's3:GetBucketAcl',\n Resource: `arn:aws:s3:::${bucketName}`\n },\n {\n Sid: 'AWSCloudTrailWrite20150319',\n Effect: 'Allow',\n Principal: {\n Service: 'cloudtrail.amazonaws.com'\n },\n Action: 's3:PutObject',\n Resource: `arn:aws:s3:::${bucketName}/AWSLogs/${accountId}/*`,\n Condition: {\n StringEquals: {\n 's3:x-amz-acl': 'bucket-owner-full-control'\n }\n }\n }\n ]\n };\n\n return JSON.stringify(policy);\n}\n\nexport const rolePolicy = '{ \"Version\": \"2008-10-17\", \"Statement\": [ { \"Effect\": \"Allow\", \"Principal\": { \"Service\": \"ec2.amazonaws.com\" }, \"Action\": \"sts:AssumeRole\" } ] }';\nexport const serviceRole = '{ \"Version\": \"2012-10-17\", \"Statement\": [ { \"Effect\": \"Allow\", \"Principal\": { \"Service\": \"elasticbeanstalk.amazonaws.com\" }, \"Action\": \"sts:AssumeRole\", \"Condition\": { \"StringEquals\": { \"sts:ExternalId\": \"elasticbeanstalk\" } } } ] }';\nexport const eventTargetRole = '{ \"Version\": \"2012-10-17\", \"Statement\": [{ \"Effect\": \"Allow\", \"Principal\": { \"Service\": \"events.amazonaws.com\" }, \"Action\": \"sts:AssumeRole\" }, { \"Effect\": \"Allow\", \"Principal\": { \"Service\": [ \"ssm.amazonaws.com\", \"ec2.amazonaws.com\" ] }, \"Action\": \"sts:AssumeRole\" } ] }';\nexport const passRolePolicy = (accountId, role) => {\n const policy = {\n Version: '2012-10-17',\n Statement: [\n {\n Effect: 'Allow',\n Action: 'iam:PassRole',\n Resource: `arn:aws:iam::${accountId}:role/${role}`\n }\n ]\n };\n\n return JSON.stringify(policy);\n};\n\nexport function eventTargetRolePolicy(accountId, env, region) {\n const policy = {\n Version: '2012-10-17',\n Statement: [\n {\n Action: 'ssm:SendCommand',\n Effect: 'Allow',\n Resource: `arn:aws:ec2:${region}:${accountId}:instance/*`,\n Condition: {\n StringLike: {\n 'ssm:resourceTag/elasticbeanstalk:environment-name': [\n env\n ]\n }\n }\n },\n {\n Action: 'ssm:SendCommand',\n Effect: 'Allow',\n Resource: `arn:aws:ssm:${region}:*:document/AWS-RunShellScript`\n },\n {\n Action: [\n 'ssm:StartAutomationExecution',\n 'ssm:DescribeInstanceInformation',\n 'ssm:ListCommands',\n 'ssm:ListCommandInvocations'\n ],\n Effect: 'Allow',\n Resource: [\n '*'\n ]\n }\n ]\n };\n\n return JSON.stringify(policy);\n}\n\nexport const DeregisterEvent = '{ \"source\": [ \"aws.elasticloadbalancing\" ], \"detail-type\": [ \"AWS API Call via CloudTrail\" ], \"detail\": { \"eventSource\": [ \"elasticloadbalancing.amazonaws.com\" ], \"eventName\": [ \"DeregisterTargets\" ] } }';\n\nexport const deregisterEventTarget = (envName, role, accountId, region) => ({\n Id: `mup-target-${envName}`,\n Arn: `arn:aws:ssm:${region}:${accountId}:automation-definition/mup-graceful-shutdown:$LATEST`,\n RoleArn: `arn:aws:iam::${accountId}:role/${role}`,\n InputTransformer: {\n InputPathsMap: {\n instance: '$.detail.requestParameters.targets[0].id'\n },\n InputTemplate: `{\"InstanceId\":[<instance>], \"AutomationAssumeRole\": [\"arn:aws:iam::${accountId}:role/${role}\"], \"ServiceRole\": [\"arn:aws:iam::${accountId}:role/${role}\"], \"Commands\": [\"cd /mup_graceful_shutdown || exit 1\", \"ls\", \"PATH='/mup_graceful_shutdown'\", <instance>]}`\n }\n});\n\nexport const gracefulShutdownAutomationDocument = () => {\n const document = {\n description: 'Automation document for mup-aws-beanstalk graceful shutdown',\n schemaVersion: '0.3',\n assumeRole: '{{ AutomationAssumeRole }}',\n parameters: {\n InstanceId: {\n type: 'StringList',\n description: '(Required) EC2 Instance(s) to run the command on'\n },\n AutomationAssumeRole: {\n type: 'String',\n description: '(Optional) The ARN of the role that allows Automation to perform the actions on your behalf.',\n default: ''\n },\n Commands: {\n type: 'StringList',\n description: 'Commands to run'\n },\n ServiceRole: {\n type: 'String',\n description: 'The ARN of the role for runCommand'\n }\n },\n mainSteps: [\n {\n name: 'runCommand',\n action: 'aws:runCommand',\n timeoutSeconds: 10,\n inputs: {\n DocumentName: 'AWS-RunShellScript',\n InstanceIds: '{{ InstanceId }}',\n ServiceRoleArn: '{{ ServiceRole }}',\n Parameters: {\n commands: '{{ Commands }}'\n }\n }\n }\n ]\n };\n\n return JSON.stringify(document);\n};\n"],"file":"policies.js"}
1
+ {"version":3,"file":"policies.js","names":["trailBucketPolicy","accountId","bucketName","policy","Version","Statement","Sid","Effect","Principal","Service","Action","Resource","Condition","StringEquals","JSON","stringify","rolePolicy","exports","serviceRole","eventTargetRole","passRolePolicy","role","eventTargetRolePolicy","env","region","StringLike","DeregisterEvent","deregisterEventTarget","envName","Id","Arn","RoleArn","InputTransformer","InputPathsMap","instance","InputTemplate","gracefulShutdownAutomationDocument","document","description","schemaVersion","assumeRole","parameters","InstanceId","type","AutomationAssumeRole","default","Commands","ServiceRole","mainSteps","name","action","timeoutSeconds","inputs","DocumentName","InstanceIds","ServiceRoleArn","Parameters","commands"],"sources":["../src/policies.js"],"sourcesContent":["export function trailBucketPolicy(accountId, bucketName) {\n const policy = {\n Version: '2012-10-17',\n Statement: [{\n Sid: 'AWSCloudTrailAclCheck20150319',\n Effect: 'Allow',\n Principal: {\n Service: 'cloudtrail.amazonaws.com'\n },\n Action: 's3:GetBucketAcl',\n Resource: `arn:aws:s3:::${bucketName}`\n },\n {\n Sid: 'AWSCloudTrailWrite20150319',\n Effect: 'Allow',\n Principal: {\n Service: 'cloudtrail.amazonaws.com'\n },\n Action: 's3:PutObject',\n Resource: `arn:aws:s3:::${bucketName}/AWSLogs/${accountId}/*`,\n Condition: {\n StringEquals: {\n 's3:x-amz-acl': 'bucket-owner-full-control'\n }\n }\n }\n ]\n };\n\n return JSON.stringify(policy);\n}\n\nexport const rolePolicy = '{ \"Version\": \"2008-10-17\", \"Statement\": [ { \"Effect\": \"Allow\", \"Principal\": { \"Service\": \"ec2.amazonaws.com\" }, \"Action\": \"sts:AssumeRole\" } ] }';\nexport const serviceRole = '{ \"Version\": \"2012-10-17\", \"Statement\": [ { \"Effect\": \"Allow\", \"Principal\": { \"Service\": \"elasticbeanstalk.amazonaws.com\" }, \"Action\": \"sts:AssumeRole\", \"Condition\": { \"StringEquals\": { \"sts:ExternalId\": \"elasticbeanstalk\" } } } ] }';\nexport const eventTargetRole = '{ \"Version\": \"2012-10-17\", \"Statement\": [{ \"Effect\": \"Allow\", \"Principal\": { \"Service\": \"events.amazonaws.com\" }, \"Action\": \"sts:AssumeRole\" }, { \"Effect\": \"Allow\", \"Principal\": { \"Service\": [ \"ssm.amazonaws.com\", \"ec2.amazonaws.com\" ] }, \"Action\": \"sts:AssumeRole\" } ] }';\nexport const passRolePolicy = (accountId, role) => {\n const policy = {\n Version: '2012-10-17',\n Statement: [\n {\n Effect: 'Allow',\n Action: 'iam:PassRole',\n Resource: `arn:aws:iam::${accountId}:role/${role}`\n }\n ]\n };\n\n return JSON.stringify(policy);\n};\n\nexport function eventTargetRolePolicy(accountId, env, region) {\n const policy = {\n Version: '2012-10-17',\n Statement: [\n {\n Action: 'ssm:SendCommand',\n Effect: 'Allow',\n Resource: `arn:aws:ec2:${region}:${accountId}:instance/*`,\n Condition: {\n StringLike: {\n 'ssm:resourceTag/elasticbeanstalk:environment-name': [\n env\n ]\n }\n }\n },\n {\n Action: 'ssm:SendCommand',\n Effect: 'Allow',\n Resource: `arn:aws:ssm:${region}:*:document/AWS-RunShellScript`\n },\n {\n Action: [\n 'ssm:StartAutomationExecution',\n 'ssm:DescribeInstanceInformation',\n 'ssm:ListCommands',\n 'ssm:ListCommandInvocations'\n ],\n Effect: 'Allow',\n Resource: [\n '*'\n ]\n }\n ]\n };\n\n return JSON.stringify(policy);\n}\n\nexport const DeregisterEvent = '{ \"source\": [ \"aws.elasticloadbalancing\" ], \"detail-type\": [ \"AWS API Call via CloudTrail\" ], \"detail\": { \"eventSource\": [ \"elasticloadbalancing.amazonaws.com\" ], \"eventName\": [ \"DeregisterTargets\" ] } }';\n\nexport const deregisterEventTarget = (envName, role, accountId, region) => ({\n Id: `mup-target-${envName}`,\n Arn: `arn:aws:ssm:${region}:${accountId}:automation-definition/mup-graceful-shutdown:$LATEST`,\n RoleArn: `arn:aws:iam::${accountId}:role/${role}`,\n InputTransformer: {\n InputPathsMap: {\n instance: '$.detail.requestParameters.targets[0].id'\n },\n InputTemplate: `{\"InstanceId\":[<instance>], \"AutomationAssumeRole\": [\"arn:aws:iam::${accountId}:role/${role}\"], \"ServiceRole\": [\"arn:aws:iam::${accountId}:role/${role}\"], \"Commands\": [\"cd /mup_graceful_shutdown || exit 1\", \"ls\", \"PATH='/mup_graceful_shutdown'\", <instance>]}`\n }\n});\n\nexport const gracefulShutdownAutomationDocument = () => {\n const document = {\n description: 'Automation document for mup-aws-beanstalk graceful shutdown',\n schemaVersion: '0.3',\n assumeRole: '{{ AutomationAssumeRole }}',\n parameters: {\n InstanceId: {\n type: 'StringList',\n description: '(Required) EC2 Instance(s) to run the command on'\n },\n AutomationAssumeRole: {\n type: 'String',\n description: '(Optional) The ARN of the role that allows Automation to perform the actions on your behalf.',\n default: ''\n },\n Commands: {\n type: 'StringList',\n description: 'Commands to run'\n },\n ServiceRole: {\n type: 'String',\n description: 'The ARN of the role for runCommand'\n }\n },\n mainSteps: [\n {\n name: 'runCommand',\n action: 'aws:runCommand',\n timeoutSeconds: 10,\n inputs: {\n DocumentName: 'AWS-RunShellScript',\n InstanceIds: '{{ InstanceId }}',\n ServiceRoleArn: '{{ ServiceRole }}',\n Parameters: {\n commands: '{{ Commands }}'\n }\n }\n }\n ]\n };\n\n return JSON.stringify(document);\n};\n"],"mappings":"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","ignoreList":[]}