@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.
- package/lib/assets/health-check.js +1 -4
- package/lib/assets/health-check.js.map +1 -1
- package/lib/aws.js +15 -30
- package/lib/aws.js.map +1 -1
- package/lib/certificates.js +2 -9
- package/lib/certificates.js.map +1 -1
- package/lib/command-handlers.js +36 -122
- package/lib/command-handlers.js.map +1 -1
- package/lib/commands.js +19 -51
- package/lib/commands.js.map +1 -1
- package/lib/download.js +0 -4
- package/lib/download.js.map +1 -1
- package/lib/eb-config.js +9 -26
- package/lib/eb-config.js.map +1 -1
- package/lib/env-ready.js +0 -18
- package/lib/env-ready.js.map +1 -1
- package/lib/env-settings.js +1 -4
- package/lib/env-settings.js.map +1 -1
- package/lib/index.js +13 -30
- package/lib/index.js.map +1 -1
- package/lib/policies.js +7 -20
- package/lib/policies.js.map +1 -1
- package/lib/prepare-bundle.js +12 -46
- package/lib/prepare-bundle.js.map +1 -1
- package/lib/recheck.js +1 -4
- package/lib/recheck.js.map +1 -1
- package/lib/upload.js +1 -17
- package/lib/upload.js.map +1 -1
- package/lib/utils.js +33 -122
- package/lib/utils.js.map +1 -1
- package/lib/validate.js +1 -7
- package/lib/validate.js.map +1 -1
- package/lib/versions.js +6 -21
- package/lib/versions.js.map +1 -1
- package/package-lock.json +6194 -0
- package/package.json +3 -2
package/lib/eb-config.js.map
CHANGED
|
@@ -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
|
}
|
package/lib/env-ready.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
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":[]}
|
package/lib/env-settings.js
CHANGED
|
@@ -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));
|
package/lib/env-settings.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
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.
|
|
8
|
-
|
|
8
|
+
exports.validate = void 0;
|
|
9
9
|
var _commands = _interopRequireWildcard(require("./commands"));
|
|
10
|
-
|
|
11
10
|
var _validate = _interopRequireDefault(require("./validate"));
|
|
12
|
-
|
|
13
|
-
function
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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;
|
|
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,"
|
|
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.
|
|
6
|
+
exports.eventTargetRole = exports.deregisterEventTarget = exports.DeregisterEvent = void 0;
|
|
7
7
|
exports.eventTargetRolePolicy = eventTargetRolePolicy;
|
|
8
|
-
exports.
|
|
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
|
|
40
|
-
exports.
|
|
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
|
package/lib/policies.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
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":[]}
|