@brunwig/mup-aws-beanstalk 0.8.5 → 0.8.7
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/.yarn/install-state.gz +0 -0
- package/.yarnrc.yml +1 -0
- package/lib/assets/nginx.conf +6 -0
- package/lib/certificates.js +6 -0
- package/lib/certificates.js.map +1 -1
- package/lib/command-handlers.js +5 -0
- package/lib/command-handlers.js.map +1 -1
- package/lib/commands.js +6 -1
- package/lib/commands.js.map +1 -1
- package/lib/eb-config.js +15 -4
- package/lib/eb-config.js.map +1 -1
- package/lib/utils.js +58 -5
- package/lib/utils.js.map +1 -1
- package/lib/validate.js +1 -0
- package/lib/validate.js.map +1 -1
- package/package.json +2 -2
- package/package-lock.json +0 -6194
|
Binary file
|
package/.yarnrc.yml
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
nodeLinker: node-modules
|
package/lib/assets/nginx.conf
CHANGED
package/lib/certificates.js
CHANGED
|
@@ -29,6 +29,12 @@ async function ensureSSLConfigured(config, certificateArn) {
|
|
|
29
29
|
Namespace: 'aws:elbv2:listener:443',
|
|
30
30
|
OptionName: 'Protocol',
|
|
31
31
|
Value: 'HTTPS'
|
|
32
|
+
},
|
|
33
|
+
// Force SSLv3
|
|
34
|
+
{
|
|
35
|
+
Namespace: 'aws:elbv2:listener:443',
|
|
36
|
+
OptionName: 'SSLPolicy',
|
|
37
|
+
Value: 'ELBSecurityPolicy-TLS13-1-2-2021-06'
|
|
32
38
|
}];
|
|
33
39
|
const domains = config.app.sslDomains;
|
|
34
40
|
|
package/lib/certificates.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"certificates.js","names":["_aws","require","_utils","_ebConfig","_envReady","ensureSSLConfigured","config","certificateArn","app","environment","names","ebConfig","Namespace","OptionName","Value","domains","sslDomains","length","ConfigurationSettings","beanstalk","describeConfigurationSettings","EnvironmentName","ApplicationName","promise","current","OptionSettings","reduce","convertToObject","desired","needToUpdate","Object","keys","find","key","updateEnvironment","waitForEnvReady"],"sources":["../src/certificates.js"],"sourcesContent":["import { beanstalk } from './aws';\nimport { names } from './utils';\nimport { convertToObject } from './eb-config';\nimport { waitForEnvReady } from './env-ready';\n\nexport default async function ensureSSLConfigured(config, certificateArn) {\n const {\n app,\n environment\n } = names(config);\n\n const ebConfig = [{\n Namespace: 'aws:elbv2:listener:443',\n OptionName: 'SSLCertificateArns',\n Value: certificateArn\n }, {\n Namespace: 'aws:elbv2:listener:443',\n OptionName: 'DefaultProcess',\n Value: 'default'\n }, {\n Namespace: 'aws:elbv2:listener:443',\n OptionName: 'ListenerEnabled',\n Value: 'true'\n }, {\n Namespace: 'aws:elbv2:listener:443',\n OptionName: 'Protocol',\n Value: 'HTTPS'\n }];\n\n const domains = config.app.sslDomains;\n\n // we use domains to decide if we need to do something about SSL\n if (!domains || domains.length === 0) {\n return;\n }\n\n const { ConfigurationSettings } = await beanstalk\n .describeConfigurationSettings({\n EnvironmentName: environment,\n ApplicationName: app,\n })\n .promise();\n\n const current = ConfigurationSettings[0].OptionSettings.reduce(\n convertToObject,\n {}\n );\n const desired = ebConfig.reduce(convertToObject, {});\n\n const needToUpdate = Object.keys(desired).find(\n (key) => !current[key] || current[key].Value !== desired[key].Value\n );\n\n if (!needToUpdate) {\n return;\n }\n\n await beanstalk\n .updateEnvironment({\n EnvironmentName: environment,\n OptionSettings: ebConfig,\n })\n .promise();\n await waitForEnvReady(config, true);\n}\n"],"mappings":";;;;;;AAAA,IAAAA,IAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAF,OAAA;AACA,IAAAG,SAAA,GAAAH,OAAA;AAEe,eAAeI,mBAAmBA,CAACC,MAAM,EAAEC,cAAc,EAAE;EACxE,MAAM;IACJC,GAAG;IACHC;EACF,CAAC,GAAG,IAAAC,YAAK,EAACJ,MAAM,CAAC;EAEjB,MAAMK,QAAQ,GAAG,CAAC;IAChBC,SAAS,EAAE,wBAAwB;IACnCC,UAAU,EAAE,oBAAoB;IAChCC,KAAK,EAAEP;EACT,CAAC,EAAE;IACDK,SAAS,EAAE,wBAAwB;IACnCC,UAAU,EAAE,gBAAgB;IAC5BC,KAAK,EAAE;EACT,CAAC,EAAE;IACDF,SAAS,EAAE,wBAAwB;IACnCC,UAAU,EAAE,iBAAiB;IAC7BC,KAAK,EAAE;EACT,CAAC,EAAE;IACDF,SAAS,EAAE,wBAAwB;IACnCC,UAAU,EAAE,UAAU;IACtBC,KAAK,EAAE;EACT,CAAC,CAAC;EAEF,MAAMC,OAAO,GAAGT,MAAM,CAACE,GAAG,CAACQ,UAAU;;EAErC;EACA,IAAI,CAACD,OAAO,IAAIA,OAAO,CAACE,MAAM,KAAK,CAAC,EAAE;IACpC;EACF;EAEA,MAAM;IAAEC;EAAsB,CAAC,GAAG,MAAMC,cAAS,CAC9CC,6BAA6B,CAAC;IAC7BC,eAAe,EAAEZ,WAAW;IAC5Ba,eAAe,EAAEd;EACnB,CAAC,CAAC,CACDe,OAAO,CAAC,CAAC;EAEZ,MAAMC,OAAO,GAAGN,qBAAqB,CAAC,CAAC,CAAC,CAACO,cAAc,CAACC,MAAM,CAC5DC,yBAAe,EACf,CAAC,CACH,CAAC;EACD,MAAMC,OAAO,GAAGjB,QAAQ,CAACe,MAAM,CAACC,yBAAe,EAAE,CAAC,CAAC,CAAC;EAEpD,MAAME,YAAY,GAAGC,MAAM,CAACC,IAAI,CAACH,OAAO,CAAC,CAACI,IAAI,CAC3CC,GAAG,IAAK,CAACT,OAAO,CAACS,GAAG,CAAC,IAAIT,OAAO,CAACS,GAAG,CAAC,CAACnB,KAAK,KAAKc,OAAO,CAACK,GAAG,CAAC,CAACnB,KAChE,CAAC;EAED,IAAI,CAACe,YAAY,EAAE;IACjB;EACF;EAEA,MAAMV,cAAS,CACZe,iBAAiB,CAAC;IACjBb,eAAe,EAAEZ,WAAW;IAC5BgB,cAAc,EAAEd;EAClB,CAAC,CAAC,CACDY,OAAO,CAAC,CAAC;EACZ,MAAM,IAAAY,yBAAe,EAAC7B,MAAM,EAAE,IAAI,CAAC;AACrC","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"certificates.js","names":["_aws","require","_utils","_ebConfig","_envReady","ensureSSLConfigured","config","certificateArn","app","environment","names","ebConfig","Namespace","OptionName","Value","domains","sslDomains","length","ConfigurationSettings","beanstalk","describeConfigurationSettings","EnvironmentName","ApplicationName","promise","current","OptionSettings","reduce","convertToObject","desired","needToUpdate","Object","keys","find","key","updateEnvironment","waitForEnvReady"],"sources":["../src/certificates.js"],"sourcesContent":["import { beanstalk } from './aws';\nimport { names } from './utils';\nimport { convertToObject } from './eb-config';\nimport { waitForEnvReady } from './env-ready';\n\nexport default async function ensureSSLConfigured(config, certificateArn) {\n const {\n app,\n environment\n } = names(config);\n\n const ebConfig = [{\n Namespace: 'aws:elbv2:listener:443',\n OptionName: 'SSLCertificateArns',\n Value: certificateArn\n }, {\n Namespace: 'aws:elbv2:listener:443',\n OptionName: 'DefaultProcess',\n Value: 'default'\n }, {\n Namespace: 'aws:elbv2:listener:443',\n OptionName: 'ListenerEnabled',\n Value: 'true'\n }, {\n Namespace: 'aws:elbv2:listener:443',\n OptionName: 'Protocol',\n Value: 'HTTPS'\n },\n // Force SSLv3\n {\n Namespace: 'aws:elbv2:listener:443',\n OptionName: 'SSLPolicy',\n Value: 'ELBSecurityPolicy-TLS13-1-2-2021-06'\n }];\n\n const domains = config.app.sslDomains;\n\n // we use domains to decide if we need to do something about SSL\n if (!domains || domains.length === 0) {\n return;\n }\n\n const { ConfigurationSettings } = await beanstalk\n .describeConfigurationSettings({\n EnvironmentName: environment,\n ApplicationName: app,\n })\n .promise();\n\n const current = ConfigurationSettings[0].OptionSettings.reduce(\n convertToObject,\n {}\n );\n const desired = ebConfig.reduce(convertToObject, {});\n\n const needToUpdate = Object.keys(desired).find(\n (key) => !current[key] || current[key].Value !== desired[key].Value\n );\n\n if (!needToUpdate) {\n return;\n }\n\n await beanstalk\n .updateEnvironment({\n EnvironmentName: environment,\n OptionSettings: ebConfig,\n })\n .promise();\n await waitForEnvReady(config, true);\n}\n"],"mappings":";;;;;;AAAA,IAAAA,IAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAF,OAAA;AACA,IAAAG,SAAA,GAAAH,OAAA;AAEe,eAAeI,mBAAmBA,CAACC,MAAM,EAAEC,cAAc,EAAE;EACxE,MAAM;IACJC,GAAG;IACHC;EACF,CAAC,GAAG,IAAAC,YAAK,EAACJ,MAAM,CAAC;EAEjB,MAAMK,QAAQ,GAAG,CAAC;IAChBC,SAAS,EAAE,wBAAwB;IACnCC,UAAU,EAAE,oBAAoB;IAChCC,KAAK,EAAEP;EACT,CAAC,EAAE;IACDK,SAAS,EAAE,wBAAwB;IACnCC,UAAU,EAAE,gBAAgB;IAC5BC,KAAK,EAAE;EACT,CAAC,EAAE;IACDF,SAAS,EAAE,wBAAwB;IACnCC,UAAU,EAAE,iBAAiB;IAC7BC,KAAK,EAAE;EACT,CAAC,EAAE;IACDF,SAAS,EAAE,wBAAwB;IACnCC,UAAU,EAAE,UAAU;IACtBC,KAAK,EAAE;EACT,CAAC;EACD;EACA;IACEF,SAAS,EAAE,wBAAwB;IACnCC,UAAU,EAAE,WAAW;IACvBC,KAAK,EAAE;EACT,CAAC,CAAC;EAEF,MAAMC,OAAO,GAAGT,MAAM,CAACE,GAAG,CAACQ,UAAU;;EAErC;EACA,IAAI,CAACD,OAAO,IAAIA,OAAO,CAACE,MAAM,KAAK,CAAC,EAAE;IACpC;EACF;EAEA,MAAM;IAAEC;EAAsB,CAAC,GAAG,MAAMC,cAAS,CAC9CC,6BAA6B,CAAC;IAC7BC,eAAe,EAAEZ,WAAW;IAC5Ba,eAAe,EAAEd;EACnB,CAAC,CAAC,CACDe,OAAO,CAAC,CAAC;EAEZ,MAAMC,OAAO,GAAGN,qBAAqB,CAAC,CAAC,CAAC,CAACO,cAAc,CAACC,MAAM,CAC5DC,yBAAe,EACf,CAAC,CACH,CAAC;EACD,MAAMC,OAAO,GAAGjB,QAAQ,CAACe,MAAM,CAACC,yBAAe,EAAE,CAAC,CAAC,CAAC;EAEpD,MAAME,YAAY,GAAGC,MAAM,CAACC,IAAI,CAACH,OAAO,CAAC,CAACI,IAAI,CAC3CC,GAAG,IAAK,CAACT,OAAO,CAACS,GAAG,CAAC,IAAIT,OAAO,CAACS,GAAG,CAAC,CAACnB,KAAK,KAAKc,OAAO,CAACK,GAAG,CAAC,CAACnB,KAChE,CAAC;EAED,IAAI,CAACe,YAAY,EAAE;IACjB;EACF;EAEA,MAAMV,cAAS,CACZe,iBAAiB,CAAC;IACjBb,eAAe,EAAEZ,WAAW;IAC5BgB,cAAc,EAAEd;EAClB,CAAC,CAAC,CACDY,OAAO,CAAC,CAAC;EACZ,MAAM,IAAAY,yBAAe,EAAC7B,MAAM,EAAE,IAAI,CAAC;AACrC","ignoreList":[]}
|
package/lib/command-handlers.js
CHANGED
|
@@ -7,6 +7,7 @@ exports.clean = clean;
|
|
|
7
7
|
exports.debug = debug;
|
|
8
8
|
exports.deploy = deploy;
|
|
9
9
|
exports.events = events;
|
|
10
|
+
exports.fullLogs = fullLogs;
|
|
10
11
|
exports.logs = logs;
|
|
11
12
|
exports.logsEb = logsEb;
|
|
12
13
|
exports.logsNginx = logsNginx;
|
|
@@ -226,6 +227,10 @@ async function logs(api) {
|
|
|
226
227
|
console.log(`${instance} `, data[0] || data[1]);
|
|
227
228
|
});
|
|
228
229
|
}
|
|
230
|
+
async function fullLogs(api) {
|
|
231
|
+
const logsContent = await (0, _utils.downloadFullServerLogs)(api);
|
|
232
|
+
(0, _utils.logStep)(`=> downloadFullServerLogs: ${JSON.stringify(logsContent, null, '\t')}`);
|
|
233
|
+
}
|
|
229
234
|
async function logsNginx(api) {
|
|
230
235
|
const logsContent = await (0, _utils.getLogs)(api, ['nginx/error.log', 'nginx/access.log']);
|
|
231
236
|
logsContent.forEach(({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-handlers.js","names":["_chalk","_interopRequireDefault","require","_ssh","_aws","_certificates","_policies","_upload","_interopRequireWildcard","_prepareBundle","_utils","_versions","_envSettings","_ebConfig","_envReady","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","ownKeys","keys","getOwnPropertySymbols","o","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","value","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","setup","api","config","getConfig","appConfig","app","bucket","bucketName","appName","instanceProfile","serviceRole","serviceRoleName","trailBucketPrefix","trailName","deregisterRuleName","environment","environmentName","eventTargetRole","eventTargetRoleName","eventTargetPolicyName","eventTargetPassRoleName","automationDocument","names","logStep","Buckets","s3","listBuckets","promise","beanstalkBucketCreated","ensureBucketExists","region","console","log","ensureRoleExists","rolePolicy","ensureInstanceProfileExists","ensurePoliciesAttached","gracefulShutdown","ensureRoleAdded","accountId","getAccountId","policy","eventTargetRolePolicy","passPolicy","passRolePolicy","ensureInlinePolicyAttached","Applications","beanstalk","describeApplications","find","ApplicationName","params","Description","name","createApplication","existingBucket","findBucketWithPrefix","trailBucketName","Name","createUniqueName","trailBucketPolicy","trailBucketCreated","ensureBucketPolicyAttached","trailNameList","trailList","cloudTrail","describeTrails","createParams","S3BucketName","createTrail","createdDocument","ensureSsmDocument","gracefulShutdownAutomationDocument","createdRule","ensureCloudWatchRule","DeregisterEvent","target","deregisterEventTarget","createdTarget","ensureRuleTargetExists","deploy","runCommand","bundlePrefix","version","largestVersion","nextVersion","buildOptions","buildLocation","tmpBuildPath","path","bundlePath","resolvePath","willBuild","shouldRebuild","getOptions","injectFiles","archiveApp","key","upload","createApplicationVersion","VersionLabel","toString","createVersionDescription","SourceBundle","S3Bucket","S3Key","waitForEnvReady","toRemove","toUpdate","prepareUpdateEnvironment","verbose","dir","updateEnvironment","EnvironmentName","OptionSettings","OptionsToRemove","Environments","describeEnvironments","EnvironmentNames","finalEnvironments","chalk","green","CNAME","red","process","exitCode","logs","logsContent","getLogs","instance","data","logsNginx","logsEb","start","EnvironmentResources","describeEnvironmentResources","autoScalingGroup","AutoScalingGroups","minInstances","maxInstances","autoScaling","updateAutoScalingGroup","AutoScalingGroupName","MaxSize","MinSize","DesiredCapacity","waitForHealth","stop","restart","restartAppServer","clean","versions","oldVersions","envVersions","oldEnvVersions","promises","deleteApplicationVersion","DeleteSourceBundle","deleteObject","Bucket","Key","Promise","all","reconfig","deploying","commandHistory","entry","env","Status","desiredEbConfig","createDesiredConfig","getSettings","longEnvVars","envContent","createEnvFile","uploadEnvFile","platformArn","selectPlatformArn","awsPlatformBranchName","ebVersions","createEnvironment","PlatformArn","ConfigurationSettings","describeConfigurationSettings","scalingConfigChanged","scalingConfig","events","Events","envEvents","describeEvents","map","ev","EventDate","Message","join","status","result","describeEnvironmentHealth","AttributeNames","message","includes","InstanceHealthList","describeInstancesHealth","RequestCount","Duration","StatusCodes","Latency","ApplicationMetrics","coloredStatusText","Color","HealthStatus","Causes","cause","Status2xx","Status3xx","Status4xx","Status5xx","P999","P99","P95","P90","P85","P75","P50","P10","InstanceId","ssl","sslDomains","updateSSLConfig","domains","CertificateSummaryList","acm","listCertificates","found","DomainName","CertificateArn","Certificate","describeCertificate","SubjectAlternativeNames","certificateArn","requestCertificate","shift","emailsProvided","checks","certificate","validationOptions","DomainValidationOptions","ValidationEmails","resolve","setTimeout","ValidationDomain","ValidationStatus","yellow","email","shell","selected","description","pickInstance","getArgs","sshOptions","removeSSHAccess","connectToInstance","conn","Client","on","exec","pty","err","stream","end","exit","stdin","setRawMode","pipe","stdout","stderr","setWindow","rows","columns","connect","debug","executeSSHCommand","output","server","pem","sshKey","privateKey","loggedConnection","forwardPort","localAddress","localPort","remoteAddress","remotePort","onError","error","onReady","onConnection"],"sources":["../src/command-handlers.js"],"sourcesContent":["import chalk from 'chalk';\nimport { Client } from 'ssh2';\nimport {\n acm,\n s3,\n beanstalk,\n autoScaling,\n cloudTrail\n} from './aws';\nimport updateSSLConfig from './certificates';\nimport {\n rolePolicy,\n trailBucketPolicy,\n DeregisterEvent,\n deregisterEventTarget,\n serviceRole,\n eventTargetRolePolicy,\n eventTargetRole,\n gracefulShutdownAutomationDocument,\n passRolePolicy\n} from './policies';\nimport upload, { uploadEnvFile } from './upload';\nimport {\n archiveApp,\n injectFiles\n} from './prepare-bundle';\nimport {\n coloredStatusText,\n ensureBucketExists,\n ensureInstanceProfileExists,\n ensureRoleExists,\n ensureRoleAdded,\n ensurePoliciesAttached,\n ensureBucketPolicyAttached,\n getAccountId,\n getLogs,\n logStep,\n names,\n tmpBuildPath,\n shouldRebuild,\n ensureCloudWatchRule,\n ensureRuleTargetExists,\n ensureInlinePolicyAttached,\n findBucketWithPrefix,\n createUniqueName,\n createVersionDescription,\n ensureSsmDocument,\n selectPlatformArn,\n pickInstance,\n connectToInstance,\n executeSSHCommand\n} from './utils';\nimport {\n largestVersion,\n ebVersions,\n oldVersions,\n oldEnvVersions\n} from './versions';\nimport { createEnvFile } from './env-settings';\nimport {\n createDesiredConfig,\n prepareUpdateEnvironment,\n scalingConfig,\n scalingConfigChanged\n} from './eb-config';\n\nimport {\n waitForEnvReady,\n waitForHealth\n} from './env-ready';\n\nexport async function setup(api) {\n const config = api.getConfig();\n const appConfig = config.app;\n\n const {\n bucket: bucketName,\n app: appName,\n instanceProfile,\n serviceRole: serviceRoleName,\n trailBucketPrefix,\n trailName,\n deregisterRuleName,\n environment: environmentName,\n eventTargetRole: eventTargetRoleName,\n eventTargetPolicyName,\n eventTargetPassRoleName,\n automationDocument\n } = names(config);\n\n logStep('=> @Brunwig/mup-aws-beanstalk');\n logStep('=> Setting up');\n\n // Create bucket if needed\n const {\n Buckets\n } = await s3.listBuckets().promise();\n\n const beanstalkBucketCreated = await ensureBucketExists(Buckets, bucketName, appConfig.region);\n\n if (beanstalkBucketCreated) {\n console.log(' Created Bucket');\n }\n\n logStep('=> Ensuring IAM Roles and Instance Profiles are setup');\n\n // Create role and instance profile\n await ensureRoleExists(instanceProfile, rolePolicy);\n await ensureInstanceProfileExists(config, instanceProfile);\n await ensurePoliciesAttached(config, instanceProfile, [\n 'arn:aws:iam::aws:policy/AWSElasticBeanstalkWebTier',\n 'arn:aws:iam::aws:policy/AWSElasticBeanstalkMulticontainerDocker',\n 'arn:aws:iam::aws:policy/AWSElasticBeanstalkWorkerTier',\n ...appConfig.gracefulShutdown ? ['arn:aws:iam::aws:policy/service-role/AmazonEC2RoleforSSM'] : []\n ]);\n await ensureRoleAdded(config, instanceProfile, instanceProfile);\n\n // Create role used by enhanced health\n await ensureRoleExists(serviceRoleName, serviceRole);\n await ensurePoliciesAttached(config, serviceRoleName, [\n 'arn:aws:iam::aws:policy/service-role/AWSElasticBeanstalkEnhancedHealth',\n 'arn:aws:iam::aws:policy/service-role/AWSElasticBeanstalkService'\n ]);\n\n if (appConfig.gracefulShutdown) {\n const accountId = await getAccountId();\n const policy = eventTargetRolePolicy(accountId, environmentName, appConfig.region || 'us-east-1');\n const passPolicy = passRolePolicy(accountId, eventTargetRoleName);\n\n await ensureRoleExists(eventTargetRoleName, eventTargetRole, true);\n await ensureInlinePolicyAttached(eventTargetRoleName, eventTargetPolicyName, policy);\n await ensureInlinePolicyAttached(eventTargetRoleName, eventTargetPassRoleName, passPolicy);\n }\n\n // Create beanstalk application if needed\n const {\n Applications\n } = await beanstalk.describeApplications().promise();\n\n if (!Applications.find(app => app.ApplicationName === appName)) {\n const params = {\n ApplicationName: appName,\n Description: `App \"${appConfig.name}\" managed by Meteor Up`\n };\n\n await beanstalk.createApplication(params).promise();\n console.log(' Created Beanstalk application');\n }\n\n if (appConfig.gracefulShutdown) {\n logStep('=> Ensuring Graceful Shutdown is setup');\n\n const existingBucket = findBucketWithPrefix(Buckets, trailBucketPrefix);\n const trailBucketName = existingBucket ?\n existingBucket.Name :\n createUniqueName(trailBucketPrefix);\n const region = appConfig.region || 'us-east-1';\n const accountId = await getAccountId();\n const policy = trailBucketPolicy(accountId, trailBucketName);\n\n const trailBucketCreated = await ensureBucketExists(Buckets, trailBucketName, appConfig.region);\n await ensureBucketPolicyAttached(trailBucketName, policy);\n\n if (trailBucketCreated) {\n console.log(' Created bucket for Cloud Trail');\n }\n\n const params = {\n trailNameList: [\n trailName\n ]\n };\n\n const {\n trailList\n } = await cloudTrail.describeTrails(params).promise();\n\n if (trailList.length === 0) {\n const createParams = {\n Name: trailName,\n S3BucketName: trailBucketName\n };\n\n await cloudTrail.createTrail(createParams).promise();\n\n console.log(' Created CloudTrail trail');\n }\n\n const createdDocument = await ensureSsmDocument(\n automationDocument,\n gracefulShutdownAutomationDocument()\n );\n if (createdDocument) {\n console.log(' Created SSM Automation Document');\n }\n\n const createdRule = await ensureCloudWatchRule(deregisterRuleName, 'Used by Meteor Up for graceful shutdown', DeregisterEvent);\n\n if (createdRule) {\n console.log(' Created Cloud Watch rule');\n }\n\n const target = deregisterEventTarget(environmentName, eventTargetRoleName, accountId, region);\n const createdTarget = await ensureRuleTargetExists(deregisterRuleName, target, accountId);\n\n if (createdTarget) {\n console.log(' Created target for Cloud Watch rule');\n }\n }\n}\n\nexport async function deploy(api) {\n await api.runCommand('beanstalk.setup');\n\n const config = api.getConfig();\n const {\n app,\n bucket,\n bundlePrefix,\n environment\n } = names(config);\n\n\n const version = await largestVersion(api);\n const nextVersion = version + 1;\n\n // Mutates the config, so the meteor.build command will have the correct build location\n config.app.buildOptions.buildLocation = config.app.buildOptions.buildLocation ||\n tmpBuildPath(config.app.path, api);\n\n const bundlePath = api.resolvePath(config.app.buildOptions.buildLocation, 'bundle.zip');\n const willBuild = shouldRebuild(bundlePath, api.getOptions()['cached-build']);\n\n if (willBuild) {\n await api.runCommand('meteor.build');\n injectFiles(\n api,\n app,\n nextVersion,\n config.app\n );\n await archiveApp(config.app.buildOptions.buildLocation, api);\n }\n\n logStep('=> Uploading bundle');\n\n const key = `${bundlePrefix}${nextVersion}`;\n await upload(config.app, bucket, `${bundlePrefix}${nextVersion}`, bundlePath);\n\n logStep('=> Creating version');\n\n await beanstalk.createApplicationVersion({\n ApplicationName: app,\n VersionLabel: nextVersion.toString(),\n Description: createVersionDescription(api, config.app),\n SourceBundle: {\n S3Bucket: bucket,\n S3Key: key\n }\n }).promise();\n\n await api.runCommand('beanstalk.reconfig');\n await waitForEnvReady(config, true);\n\n logStep('=> Deploying new version');\n\n const {\n toRemove,\n toUpdate\n } = await prepareUpdateEnvironment(api);\n\n if (api.verbose) {\n console.log('EB Config changes:');\n console.dir({\n toRemove,\n toUpdate\n });\n }\n\n await beanstalk.updateEnvironment({\n EnvironmentName: environment,\n VersionLabel: nextVersion.toString(),\n OptionSettings: toUpdate,\n OptionsToRemove: toRemove\n }).promise();\n\n await waitForEnvReady(config, true);\n\n const {\n Environments\n } = await beanstalk.describeEnvironments({\n ApplicationName: app,\n EnvironmentNames: [environment]\n }).promise();\n\n await api.runCommand('beanstalk.clean');\n\n await api.runCommand('beanstalk.ssl');\n\n // Check if deploy succeeded\n const {\n Environments: finalEnvironments\n } = await beanstalk.describeEnvironments({\n ApplicationName: app,\n EnvironmentNames: [environment]\n }).promise();\n\n if (nextVersion.toString() === finalEnvironments[0].VersionLabel) {\n console.log(chalk.green(`App is running at ${Environments[0].CNAME}`));\n } else {\n console.log(chalk.red`Deploy Failed. Visit the Aws Elastic Beanstalk console to view the logs from the failed deploy.`);\n process.exitCode = 1;\n }\n}\n\nexport async function logs(api) {\n const logsContent = await getLogs(api, ['web.stdout.log', 'nodejs/nodejs.log']);\n\n logsContent.forEach(({\n instance,\n data\n }) => {\n console.log(`${instance} `, data[0] || data[1]);\n });\n}\n\nexport async function logsNginx(api) {\n const logsContent = await getLogs(api, ['nginx/error.log', 'nginx/access.log']);\n\n logsContent.forEach(({\n instance,\n data\n }) => {\n console.log(`${instance} `, data[0]);\n console.log(`${instance} `, data[1]);\n });\n}\n\nexport async function logsEb(api) {\n const logsContent = await getLogs(api, ['eb-engine.log', 'eb-activity.log']);\n\n logsContent.forEach(({\n data,\n instance\n }) => {\n console.log(`${instance} `, data[0] || data[1]);\n });\n}\n\nexport async function start(api) {\n const config = api.getConfig();\n const {\n environment\n } = names(config);\n\n logStep('=> Starting App');\n\n const {\n EnvironmentResources\n } = await beanstalk.describeEnvironmentResources({\n EnvironmentName: environment\n }).promise();\n\n const autoScalingGroup = EnvironmentResources.AutoScalingGroups[0].Name;\n\n const {\n minInstances,\n maxInstances\n } = config.app;\n\n await autoScaling.updateAutoScalingGroup({\n AutoScalingGroupName: autoScalingGroup,\n MaxSize: maxInstances,\n MinSize: minInstances,\n DesiredCapacity: minInstances\n }).promise();\n\n await waitForHealth(config);\n}\n\nexport async function stop(api) {\n const config = api.getConfig();\n const {\n environment\n } = names(config);\n\n logStep('=> Stopping App');\n\n const {\n EnvironmentResources\n } = await beanstalk.describeEnvironmentResources({\n EnvironmentName: environment\n }).promise();\n\n const autoScalingGroup = EnvironmentResources.AutoScalingGroups[0].Name;\n\n await autoScaling.updateAutoScalingGroup({\n AutoScalingGroupName: autoScalingGroup,\n MaxSize: 0,\n MinSize: 0,\n DesiredCapacity: 0\n }).promise();\n\n await waitForHealth(config, 'Grey');\n}\n\nexport async function restart(api) {\n const config = api.getConfig();\n const {\n environment\n } = names(config);\n\n logStep('=> Restarting App');\n\n await beanstalk.restartAppServer({\n EnvironmentName: environment\n }).promise();\n\n await waitForEnvReady(config, false);\n}\n\nexport async function clean(api) {\n const config = api.getConfig();\n const {\n app,\n bucket\n } = names(config);\n\n logStep('=> Finding old versions');\n const {\n versions\n } = await oldVersions(api);\n const envVersions = await oldEnvVersions(api);\n\n logStep('=> Removing old versions');\n\n const promises = [];\n for (let i = 0; i < versions.length; i++) {\n promises.push(beanstalk.deleteApplicationVersion({\n ApplicationName: app,\n VersionLabel: versions[i].toString(),\n DeleteSourceBundle: true\n }).promise());\n }\n\n for (let i = 0; i < envVersions.length; i++) {\n promises.push(s3.deleteObject({\n Bucket: bucket,\n Key: `env/${envVersions[i]}.txt`\n }).promise());\n }\n\n // TODO: remove bundles\n\n await Promise.all(promises);\n}\n\nexport async function reconfig(api) {\n const config = api.getConfig();\n const {\n app,\n environment,\n bucket\n } = names(config);\n const deploying = !!api.commandHistory.find(entry => entry.name === 'beanstalk.deploy');\n\n logStep('=> @Brunwig/mup-aws-beanstalk');\n logStep('=> Configuring Beanstalk environment');\n\n // check if env exists\n const {\n Environments\n } = await beanstalk.describeEnvironments({\n ApplicationName: app,\n EnvironmentNames: [environment]\n }).promise();\n\n if (!Environments.find(env => env.Status !== 'Terminated')) {\n const desiredEbConfig = createDesiredConfig(\n api.getConfig(),\n api.getSettings(),\n config.app.longEnvVars ? 1 : false\n );\n\n if (config.app.longEnvVars) {\n const envContent = createEnvFile(config.app.env, api.getSettings());\n\n await uploadEnvFile(bucket, 1, envContent);\n }\n\n const platformArn = await selectPlatformArn(api.getConfig().app.awsPlatformBranchName);\n\n const [version] = await ebVersions(api);\n await beanstalk.createEnvironment({\n ApplicationName: app,\n EnvironmentName: environment,\n Description: `Environment for ${config.app.name}, managed by Meteor Up`,\n VersionLabel: version.toString(),\n PlatformArn: platformArn,\n OptionSettings: desiredEbConfig.OptionSettings\n }).promise();\n\n console.log(' Created Environment');\n await waitForEnvReady(config, false);\n } else if (!deploying) {\n // If we are deploying, the environment will be updated\n // at the same time we update the environment version\n const {\n toRemove,\n toUpdate\n } = await prepareUpdateEnvironment(api);\n\n if (api.verbose) {\n console.log('EB Config changes:');\n console.dir({\n toRemove,\n toUpdate\n });\n }\n\n if (toRemove.length > 0 || toUpdate.length > 0) {\n await waitForEnvReady(config, true);\n await beanstalk.updateEnvironment({\n EnvironmentName: environment,\n OptionSettings: toUpdate,\n OptionsToRemove: toRemove\n }).promise();\n console.log(' Updated Environment');\n await waitForEnvReady(config, true);\n }\n }\n\n const {\n ConfigurationSettings\n } = await beanstalk.describeConfigurationSettings({\n EnvironmentName: environment,\n ApplicationName: app\n }).promise();\n\n if (scalingConfigChanged(ConfigurationSettings[0].OptionSettings, config)) {\n logStep('=> Configuring scaling');\n await beanstalk.updateEnvironment({\n EnvironmentName: environment,\n OptionSettings: scalingConfig(config.app).OptionSettings\n }).promise();\n await waitForEnvReady(config, true);\n }\n}\n\nexport async function events(api) {\n const {\n environment\n } = names(api.getConfig());\n\n const {\n Events: envEvents\n } = await beanstalk.describeEvents({\n EnvironmentName: environment\n }).promise();\n\n console.log(envEvents.map(ev => `${ev.EventDate}: ${ev.Message}`).join('\\n'));\n}\n\nexport async function status(api) {\n const {\n environment\n } = names(api.getConfig());\n\n let result;\n\n try {\n result = await beanstalk.describeEnvironmentHealth({\n AttributeNames: [\n 'All'\n ],\n EnvironmentName: environment\n }).promise();\n } catch (e) {\n if (e.message.includes('No Environment found for EnvironmentName')) {\n console.log(' AWS Beanstalk environment does not exist');\n return;\n }\n\n throw e;\n }\n\n const {\n InstanceHealthList\n } = await beanstalk.describeInstancesHealth({\n AttributeNames: [\n 'All'\n ],\n EnvironmentName: environment\n }).promise();\n\n const {\n RequestCount,\n Duration,\n StatusCodes,\n Latency\n } = result.ApplicationMetrics;\n\n console.log(`Environment Status: ${result.Status}`);\n console.log(`Health Status: ${coloredStatusText(result.Color, result.HealthStatus)}`);\n if (result.Causes.length > 0) {\n console.log('Causes: ');\n result.Causes.forEach(cause => console.log(` ${cause}`));\n }\n console.log('');\n console.log(`=== Metrics For Last ${Duration || 'Unknown'} Minutes ===`);\n console.log(` Requests: ${RequestCount}`);\n if (StatusCodes) {\n console.log(' Status Codes');\n console.log(` 2xx: ${StatusCodes.Status2xx}`);\n console.log(` 3xx: ${StatusCodes.Status3xx}`);\n console.log(` 4xx: ${StatusCodes.Status4xx}`);\n console.log(` 5xx: ${StatusCodes.Status5xx}`);\n }\n if (Latency) {\n console.log(' Latency');\n console.log(` 99.9%: ${Latency.P999}`);\n console.log(` 99% : ${Latency.P99}`);\n console.log(` 95% : ${Latency.P95}`);\n console.log(` 90% : ${Latency.P90}`);\n console.log(` 85% : ${Latency.P85}`);\n console.log(` 75% : ${Latency.P75}`);\n console.log(` 50% : ${Latency.P50}`);\n console.log(` 10% : ${Latency.P10}`);\n }\n console.log('');\n console.log('=== Instances ===');\n InstanceHealthList.forEach((instance) => {\n console.log(` ${instance.InstanceId}: ${coloredStatusText(instance.Color, instance.HealthStatus)}`);\n });\n if (InstanceHealthList.length === 0) {\n console.log(' 0 Instances');\n }\n}\n\nexport async function ssl(api) {\n const config = api.getConfig();\n\n await waitForEnvReady(config, true);\n\n if (!config.app || !config.app.sslDomains) {\n logStep('=> Updating Beanstalk SSL Config');\n await updateSSLConfig(config);\n return;\n }\n\n logStep('=> Checking Certificate Status');\n\n const domains = config.app.sslDomains;\n const {\n CertificateSummaryList\n } = await acm.listCertificates().promise();\n let found = null;\n\n for (let i = 0; i < CertificateSummaryList.length; i++) {\n const {\n DomainName,\n CertificateArn\n } = CertificateSummaryList[i];\n\n if (DomainName === domains[0]) {\n const {\n Certificate\n } = await acm.describeCertificate({ // eslint-disable-line no-await-in-loop\n CertificateArn\n }).promise();\n\n if (domains.join(',') === Certificate.SubjectAlternativeNames.join(',')) {\n found = CertificateSummaryList[i];\n }\n }\n }\n\n let certificateArn;\n\n if (!found) {\n logStep('=> Requesting Certificate');\n\n const result = await acm.requestCertificate({\n DomainName: domains.shift(),\n SubjectAlternativeNames: domains.length > 0 ? domains : null\n }).promise();\n\n certificateArn = result.CertificateArn;\n }\n\n if (found) {\n certificateArn = found.CertificateArn;\n }\n\n let emailsProvided = false;\n let checks = 0;\n let certificate;\n\n /* eslint-disable no-await-in-loop */\n while (!emailsProvided && checks < 5) {\n const {\n Certificate\n } = await acm.describeCertificate({\n CertificateArn: certificateArn\n }).promise();\n const validationOptions = Certificate.DomainValidationOptions[0];\n\n if (typeof validationOptions.ValidationEmails === 'undefined') {\n emailsProvided = true;\n certificate = Certificate;\n } else if (validationOptions.ValidationEmails.length > 0 || checks === 6) {\n emailsProvided = true;\n certificate = Certificate;\n } else {\n checks += 1;\n\n await new Promise((resolve) => {\n setTimeout(resolve, 1000 * 10);\n });\n }\n }\n\n if (certificate.Status === 'PENDING_VALIDATION') {\n console.log('Certificate is pending validation.');\n certificate.DomainValidationOptions.forEach(({\n DomainName,\n ValidationEmails,\n ValidationDomain,\n ValidationStatus\n }) => {\n if (ValidationStatus === 'SUCCESS') {\n console.log(chalk.green(`${ValidationDomain || DomainName} has been verified`));\n return;\n }\n\n console.log(chalk.yellow(`${ValidationDomain || DomainName} is pending validation`));\n\n if (ValidationEmails) {\n console.log('Emails with instructions have been sent to:');\n\n ValidationEmails.forEach((email) => {\n console.log(` ${email}`);\n });\n }\n\n console.log('Run \"mup beanstalk ssl\" after you have verified the domains, or to check the verification status');\n });\n } else if (certificate.Status === 'ISSUED') {\n console.log(chalk.green('Certificate has been issued'));\n logStep('=> Updating Beanstalk SSL config');\n await updateSSLConfig(config, certificateArn);\n }\n}\n\nexport async function shell(api) {\n const {\n selected,\n description\n } = await pickInstance(api.getConfig(), api.getArgs()[2]);\n\n if (!selected) {\n console.log(description);\n console.log('Run \"mup beanstalk shell <instance id>\"');\n process.exitCode = 1;\n\n return;\n }\n\n const {\n sshOptions,\n removeSSHAccess\n } = await connectToInstance(api, selected, 'mup beanstalk shell');\n const conn = new Client();\n conn.on('ready', () => {\n conn.exec('sudo node /home/webapp/meteor-shell.js', {\n pty: true\n }, (err, stream) => {\n if (err) {\n throw err;\n }\n stream.on('close', async () => {\n conn.end();\n await removeSSHAccess();\n process.exit();\n });\n\n process.stdin.setRawMode(true);\n process.stdin.pipe(stream);\n\n stream.pipe(process.stdout);\n stream.stderr.pipe(process.stderr);\n stream.setWindow(process.stdout.rows, process.stdout.columns);\n\n process.stdout.on('resize', () => {\n stream.setWindow(process.stdout.rows, process.stdout.columns);\n });\n });\n }).connect(sshOptions);\n}\n\nexport async function debug(api) {\n const config = api.getConfig();\n const {\n selected,\n description\n } = await pickInstance(config, api.getArgs()[2]);\n\n if (!selected) {\n console.log(description);\n console.log('Run \"mup beanstalk debug <instance id>\"');\n process.exitCode = 1;\n\n return;\n }\n\n const {\n sshOptions,\n removeSSHAccess\n } = await connectToInstance(api, selected, 'mup beanstalk debug');\n\n const conn = new Client();\n conn.on('ready', async () => {\n const result = await executeSSHCommand(\n conn,\n 'sudo pkill -USR1 -u webapp -n node || sudo pkill -USR1 -u nodejs -n node'\n );\n\n if (api.verbose) {\n console.log(result.output);\n }\n\n const server = {\n ...sshOptions,\n pem: api.resolvePath(config.app.sshKey.privateKey)\n };\n\n let loggedConnection = false;\n\n api.forwardPort({\n server,\n localAddress: '0.0.0.0',\n localPort: 9229,\n remoteAddress: '127.0.0.1',\n remotePort: 9229,\n onError(error) {\n console.error(error);\n },\n onReady() {\n console.log('Connected to server');\n console.log('');\n console.log('Debugger listening on ws://127.0.0.1:9229');\n console.log('');\n console.log('To debug:');\n console.log('1. Open chrome://inspect in Chrome');\n console.log('2. Select \"Open dedicated DevTools for Node\"');\n console.log('3. Wait a minute while it connects and loads the app.');\n console.log(' When it is ready, the app\\'s files will appear in the Sources tab');\n console.log('');\n console.log('Warning: Do not use breakpoints when debugging a production server.');\n console.log('They will pause your server when hit, causing it to not handle methods or subscriptions.');\n console.log('Use logpoints or something else that does not pause the server');\n console.log('');\n console.log('The debugger will be enabled until the next time the app is restarted,');\n console.log('though only accessible while this command is running');\n },\n onConnection() {\n if (!loggedConnection) {\n // It isn't guaranteed the debugger is connected, but not many\n // other tools will try to connect to port 9229.\n console.log('');\n console.log('Detected by debugger');\n loggedConnection = true;\n }\n }\n });\n }).connect(sshOptions);\n\n process.on('SIGINT', async () => {\n await removeSSHAccess();\n process.exit();\n });\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"command-handlers.js","names":["_chalk","_interopRequireDefault","require","_ssh","_aws","_certificates","_policies","_upload","_interopRequireWildcard","_prepareBundle","_utils","_versions","_envSettings","_ebConfig","_envReady","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","ownKeys","keys","getOwnPropertySymbols","o","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","value","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","setup","api","config","getConfig","appConfig","app","bucket","bucketName","appName","instanceProfile","serviceRole","serviceRoleName","trailBucketPrefix","trailName","deregisterRuleName","environment","environmentName","eventTargetRole","eventTargetRoleName","eventTargetPolicyName","eventTargetPassRoleName","automationDocument","names","logStep","Buckets","s3","listBuckets","promise","beanstalkBucketCreated","ensureBucketExists","region","console","log","ensureRoleExists","rolePolicy","ensureInstanceProfileExists","ensurePoliciesAttached","gracefulShutdown","ensureRoleAdded","accountId","getAccountId","policy","eventTargetRolePolicy","passPolicy","passRolePolicy","ensureInlinePolicyAttached","Applications","beanstalk","describeApplications","find","ApplicationName","params","Description","name","createApplication","existingBucket","findBucketWithPrefix","trailBucketName","Name","createUniqueName","trailBucketPolicy","trailBucketCreated","ensureBucketPolicyAttached","trailNameList","trailList","cloudTrail","describeTrails","createParams","S3BucketName","createTrail","createdDocument","ensureSsmDocument","gracefulShutdownAutomationDocument","createdRule","ensureCloudWatchRule","DeregisterEvent","target","deregisterEventTarget","createdTarget","ensureRuleTargetExists","deploy","runCommand","bundlePrefix","version","largestVersion","nextVersion","buildOptions","buildLocation","tmpBuildPath","path","bundlePath","resolvePath","willBuild","shouldRebuild","getOptions","injectFiles","archiveApp","key","upload","createApplicationVersion","VersionLabel","toString","createVersionDescription","SourceBundle","S3Bucket","S3Key","waitForEnvReady","toRemove","toUpdate","prepareUpdateEnvironment","verbose","dir","updateEnvironment","EnvironmentName","OptionSettings","OptionsToRemove","Environments","describeEnvironments","EnvironmentNames","finalEnvironments","chalk","green","CNAME","red","process","exitCode","logs","logsContent","getLogs","instance","data","fullLogs","downloadFullServerLogs","JSON","stringify","logsNginx","logsEb","start","EnvironmentResources","describeEnvironmentResources","autoScalingGroup","AutoScalingGroups","minInstances","maxInstances","autoScaling","updateAutoScalingGroup","AutoScalingGroupName","MaxSize","MinSize","DesiredCapacity","waitForHealth","stop","restart","restartAppServer","clean","versions","oldVersions","envVersions","oldEnvVersions","promises","deleteApplicationVersion","DeleteSourceBundle","deleteObject","Bucket","Key","Promise","all","reconfig","deploying","commandHistory","entry","env","Status","desiredEbConfig","createDesiredConfig","getSettings","longEnvVars","envContent","createEnvFile","uploadEnvFile","platformArn","selectPlatformArn","awsPlatformBranchName","ebVersions","createEnvironment","PlatformArn","ConfigurationSettings","describeConfigurationSettings","scalingConfigChanged","scalingConfig","events","Events","envEvents","describeEvents","map","ev","EventDate","Message","join","status","result","describeEnvironmentHealth","AttributeNames","message","includes","InstanceHealthList","describeInstancesHealth","RequestCount","Duration","StatusCodes","Latency","ApplicationMetrics","coloredStatusText","Color","HealthStatus","Causes","cause","Status2xx","Status3xx","Status4xx","Status5xx","P999","P99","P95","P90","P85","P75","P50","P10","InstanceId","ssl","sslDomains","updateSSLConfig","domains","CertificateSummaryList","acm","listCertificates","found","DomainName","CertificateArn","Certificate","describeCertificate","SubjectAlternativeNames","certificateArn","requestCertificate","shift","emailsProvided","checks","certificate","validationOptions","DomainValidationOptions","ValidationEmails","resolve","setTimeout","ValidationDomain","ValidationStatus","yellow","email","shell","selected","description","pickInstance","getArgs","sshOptions","removeSSHAccess","connectToInstance","conn","Client","on","exec","pty","err","stream","end","exit","stdin","setRawMode","pipe","stdout","stderr","setWindow","rows","columns","connect","debug","executeSSHCommand","output","server","pem","sshKey","privateKey","loggedConnection","forwardPort","localAddress","localPort","remoteAddress","remotePort","onError","error","onReady","onConnection"],"sources":["../src/command-handlers.js"],"sourcesContent":["import chalk from 'chalk';\nimport { Client } from 'ssh2';\nimport {\n acm,\n s3,\n beanstalk,\n autoScaling,\n cloudTrail\n} from './aws';\nimport updateSSLConfig from './certificates';\nimport {\n rolePolicy,\n trailBucketPolicy,\n DeregisterEvent,\n deregisterEventTarget,\n serviceRole,\n eventTargetRolePolicy,\n eventTargetRole,\n gracefulShutdownAutomationDocument,\n passRolePolicy\n} from './policies';\nimport upload, { uploadEnvFile } from './upload';\nimport {\n archiveApp,\n injectFiles\n} from './prepare-bundle';\nimport {\n coloredStatusText,\n ensureBucketExists,\n ensureInstanceProfileExists,\n ensureRoleExists,\n ensureRoleAdded,\n ensurePoliciesAttached,\n ensureBucketPolicyAttached,\n getAccountId,\n getLogs,\n downloadFullServerLogs,\n logStep,\n names,\n tmpBuildPath,\n shouldRebuild,\n ensureCloudWatchRule,\n ensureRuleTargetExists,\n ensureInlinePolicyAttached,\n findBucketWithPrefix,\n createUniqueName,\n createVersionDescription,\n ensureSsmDocument,\n selectPlatformArn,\n pickInstance,\n connectToInstance,\n executeSSHCommand\n} from './utils';\nimport {\n largestVersion,\n ebVersions,\n oldVersions,\n oldEnvVersions\n} from './versions';\nimport { createEnvFile } from './env-settings';\nimport {\n createDesiredConfig,\n prepareUpdateEnvironment,\n scalingConfig,\n scalingConfigChanged\n} from './eb-config';\n\nimport {\n waitForEnvReady,\n waitForHealth\n} from './env-ready';\n\nexport async function setup(api) {\n const config = api.getConfig();\n const appConfig = config.app;\n\n const {\n bucket: bucketName,\n app: appName,\n instanceProfile,\n serviceRole: serviceRoleName,\n trailBucketPrefix,\n trailName,\n deregisterRuleName,\n environment: environmentName,\n eventTargetRole: eventTargetRoleName,\n eventTargetPolicyName,\n eventTargetPassRoleName,\n automationDocument\n } = names(config);\n\n logStep('=> @Brunwig/mup-aws-beanstalk');\n logStep('=> Setting up');\n\n // Create bucket if needed\n const {\n Buckets\n } = await s3.listBuckets().promise();\n\n const beanstalkBucketCreated = await ensureBucketExists(Buckets, bucketName, appConfig.region);\n\n if (beanstalkBucketCreated) {\n console.log(' Created Bucket');\n }\n\n logStep('=> Ensuring IAM Roles and Instance Profiles are setup');\n\n // Create role and instance profile\n await ensureRoleExists(instanceProfile, rolePolicy);\n await ensureInstanceProfileExists(config, instanceProfile);\n await ensurePoliciesAttached(config, instanceProfile, [\n 'arn:aws:iam::aws:policy/AWSElasticBeanstalkWebTier',\n 'arn:aws:iam::aws:policy/AWSElasticBeanstalkMulticontainerDocker',\n 'arn:aws:iam::aws:policy/AWSElasticBeanstalkWorkerTier',\n ...appConfig.gracefulShutdown ? ['arn:aws:iam::aws:policy/service-role/AmazonEC2RoleforSSM'] : []\n ]);\n await ensureRoleAdded(config, instanceProfile, instanceProfile);\n\n // Create role used by enhanced health\n await ensureRoleExists(serviceRoleName, serviceRole);\n await ensurePoliciesAttached(config, serviceRoleName, [\n 'arn:aws:iam::aws:policy/service-role/AWSElasticBeanstalkEnhancedHealth',\n 'arn:aws:iam::aws:policy/service-role/AWSElasticBeanstalkService'\n ]);\n\n if (appConfig.gracefulShutdown) {\n const accountId = await getAccountId();\n const policy = eventTargetRolePolicy(accountId, environmentName, appConfig.region || 'us-east-1');\n const passPolicy = passRolePolicy(accountId, eventTargetRoleName);\n\n await ensureRoleExists(eventTargetRoleName, eventTargetRole, true);\n await ensureInlinePolicyAttached(eventTargetRoleName, eventTargetPolicyName, policy);\n await ensureInlinePolicyAttached(eventTargetRoleName, eventTargetPassRoleName, passPolicy);\n }\n\n // Create beanstalk application if needed\n const {\n Applications\n } = await beanstalk.describeApplications().promise();\n\n if (!Applications.find(app => app.ApplicationName === appName)) {\n const params = {\n ApplicationName: appName,\n Description: `App \"${appConfig.name}\" managed by Meteor Up`\n };\n\n await beanstalk.createApplication(params).promise();\n console.log(' Created Beanstalk application');\n }\n\n if (appConfig.gracefulShutdown) {\n logStep('=> Ensuring Graceful Shutdown is setup');\n\n const existingBucket = findBucketWithPrefix(Buckets, trailBucketPrefix);\n const trailBucketName = existingBucket ?\n existingBucket.Name :\n createUniqueName(trailBucketPrefix);\n const region = appConfig.region || 'us-east-1';\n const accountId = await getAccountId();\n const policy = trailBucketPolicy(accountId, trailBucketName);\n\n const trailBucketCreated = await ensureBucketExists(Buckets, trailBucketName, appConfig.region);\n await ensureBucketPolicyAttached(trailBucketName, policy);\n\n if (trailBucketCreated) {\n console.log(' Created bucket for Cloud Trail');\n }\n\n const params = {\n trailNameList: [\n trailName\n ]\n };\n\n const {\n trailList\n } = await cloudTrail.describeTrails(params).promise();\n\n if (trailList.length === 0) {\n const createParams = {\n Name: trailName,\n S3BucketName: trailBucketName\n };\n\n await cloudTrail.createTrail(createParams).promise();\n\n console.log(' Created CloudTrail trail');\n }\n\n const createdDocument = await ensureSsmDocument(\n automationDocument,\n gracefulShutdownAutomationDocument()\n );\n if (createdDocument) {\n console.log(' Created SSM Automation Document');\n }\n\n const createdRule = await ensureCloudWatchRule(deregisterRuleName, 'Used by Meteor Up for graceful shutdown', DeregisterEvent);\n\n if (createdRule) {\n console.log(' Created Cloud Watch rule');\n }\n\n const target = deregisterEventTarget(environmentName, eventTargetRoleName, accountId, region);\n const createdTarget = await ensureRuleTargetExists(deregisterRuleName, target, accountId);\n\n if (createdTarget) {\n console.log(' Created target for Cloud Watch rule');\n }\n }\n}\n\nexport async function deploy(api) {\n await api.runCommand('beanstalk.setup');\n\n const config = api.getConfig();\n const {\n app,\n bucket,\n bundlePrefix,\n environment\n } = names(config);\n\n\n const version = await largestVersion(api);\n const nextVersion = version + 1;\n\n // Mutates the config, so the meteor.build command will have the correct build location\n config.app.buildOptions.buildLocation = config.app.buildOptions.buildLocation ||\n tmpBuildPath(config.app.path, api);\n\n const bundlePath = api.resolvePath(config.app.buildOptions.buildLocation, 'bundle.zip');\n const willBuild = shouldRebuild(bundlePath, api.getOptions()['cached-build']);\n\n if (willBuild) {\n await api.runCommand('meteor.build');\n injectFiles(\n api,\n app,\n nextVersion,\n config.app\n );\n await archiveApp(config.app.buildOptions.buildLocation, api);\n }\n\n logStep('=> Uploading bundle');\n\n const key = `${bundlePrefix}${nextVersion}`;\n await upload(config.app, bucket, `${bundlePrefix}${nextVersion}`, bundlePath);\n\n logStep('=> Creating version');\n\n await beanstalk.createApplicationVersion({\n ApplicationName: app,\n VersionLabel: nextVersion.toString(),\n Description: createVersionDescription(api, config.app),\n SourceBundle: {\n S3Bucket: bucket,\n S3Key: key\n }\n }).promise();\n\n await api.runCommand('beanstalk.reconfig');\n await waitForEnvReady(config, true);\n\n logStep('=> Deploying new version');\n\n const {\n toRemove,\n toUpdate\n } = await prepareUpdateEnvironment(api);\n\n if (api.verbose) {\n console.log('EB Config changes:');\n console.dir({\n toRemove,\n toUpdate\n });\n }\n\n await beanstalk.updateEnvironment({\n EnvironmentName: environment,\n VersionLabel: nextVersion.toString(),\n OptionSettings: toUpdate,\n OptionsToRemove: toRemove\n }).promise();\n\n await waitForEnvReady(config, true);\n\n const {\n Environments\n } = await beanstalk.describeEnvironments({\n ApplicationName: app,\n EnvironmentNames: [environment]\n }).promise();\n\n await api.runCommand('beanstalk.clean');\n\n await api.runCommand('beanstalk.ssl');\n\n // Check if deploy succeeded\n const {\n Environments: finalEnvironments\n } = await beanstalk.describeEnvironments({\n ApplicationName: app,\n EnvironmentNames: [environment]\n }).promise();\n\n if (nextVersion.toString() === finalEnvironments[0].VersionLabel) {\n console.log(chalk.green(`App is running at ${Environments[0].CNAME}`));\n } else {\n console.log(chalk.red`Deploy Failed. Visit the Aws Elastic Beanstalk console to view the logs from the failed deploy.`);\n process.exitCode = 1;\n }\n}\n\nexport async function logs(api) {\n const logsContent = await getLogs(api, ['web.stdout.log', 'nodejs/nodejs.log']);\n\n logsContent.forEach(({\n instance,\n data\n }) => {\n console.log(`${instance} `, data[0] || data[1]);\n });\n}\n\nexport async function fullLogs(api) {\n const logsContent = await downloadFullServerLogs(api);\n logStep(`=> downloadFullServerLogs: ${JSON.stringify(logsContent, null, '\\t')}`);\n}\n\n\nexport async function logsNginx(api) {\n const logsContent = await getLogs(api, ['nginx/error.log', 'nginx/access.log']);\n\n logsContent.forEach(({\n instance,\n data\n }) => {\n console.log(`${instance} `, data[0]);\n console.log(`${instance} `, data[1]);\n });\n}\n\nexport async function logsEb(api) {\n const logsContent = await getLogs(api, ['eb-engine.log', 'eb-activity.log']);\n\n logsContent.forEach(({\n data,\n instance\n }) => {\n console.log(`${instance} `, data[0] || data[1]);\n });\n}\n\nexport async function start(api) {\n const config = api.getConfig();\n const {\n environment\n } = names(config);\n\n logStep('=> Starting App');\n\n const {\n EnvironmentResources\n } = await beanstalk.describeEnvironmentResources({\n EnvironmentName: environment\n }).promise();\n\n const autoScalingGroup = EnvironmentResources.AutoScalingGroups[0].Name;\n\n const {\n minInstances,\n maxInstances\n } = config.app;\n\n await autoScaling.updateAutoScalingGroup({\n AutoScalingGroupName: autoScalingGroup,\n MaxSize: maxInstances,\n MinSize: minInstances,\n DesiredCapacity: minInstances\n }).promise();\n\n await waitForHealth(config);\n}\n\nexport async function stop(api) {\n const config = api.getConfig();\n const {\n environment\n } = names(config);\n\n logStep('=> Stopping App');\n\n const {\n EnvironmentResources\n } = await beanstalk.describeEnvironmentResources({\n EnvironmentName: environment\n }).promise();\n\n const autoScalingGroup = EnvironmentResources.AutoScalingGroups[0].Name;\n\n await autoScaling.updateAutoScalingGroup({\n AutoScalingGroupName: autoScalingGroup,\n MaxSize: 0,\n MinSize: 0,\n DesiredCapacity: 0\n }).promise();\n\n await waitForHealth(config, 'Grey');\n}\n\nexport async function restart(api) {\n const config = api.getConfig();\n const {\n environment\n } = names(config);\n\n logStep('=> Restarting App');\n\n await beanstalk.restartAppServer({\n EnvironmentName: environment\n }).promise();\n\n await waitForEnvReady(config, false);\n}\n\nexport async function clean(api) {\n const config = api.getConfig();\n const {\n app,\n bucket\n } = names(config);\n\n logStep('=> Finding old versions');\n const {\n versions\n } = await oldVersions(api);\n const envVersions = await oldEnvVersions(api);\n\n logStep('=> Removing old versions');\n\n const promises = [];\n for (let i = 0; i < versions.length; i++) {\n promises.push(beanstalk.deleteApplicationVersion({\n ApplicationName: app,\n VersionLabel: versions[i].toString(),\n DeleteSourceBundle: true\n }).promise());\n }\n\n for (let i = 0; i < envVersions.length; i++) {\n promises.push(s3.deleteObject({\n Bucket: bucket,\n Key: `env/${envVersions[i]}.txt`\n }).promise());\n }\n\n // TODO: remove bundles\n\n await Promise.all(promises);\n}\n\nexport async function reconfig(api) {\n const config = api.getConfig();\n const {\n app,\n environment,\n bucket\n } = names(config);\n const deploying = !!api.commandHistory.find(entry => entry.name === 'beanstalk.deploy');\n\n logStep('=> @Brunwig/mup-aws-beanstalk');\n logStep('=> Configuring Beanstalk environment');\n\n // check if env exists\n const {\n Environments\n } = await beanstalk.describeEnvironments({\n ApplicationName: app,\n EnvironmentNames: [environment]\n }).promise();\n\n if (!Environments.find(env => env.Status !== 'Terminated')) {\n const desiredEbConfig = createDesiredConfig(\n api.getConfig(),\n api.getSettings(),\n config.app.longEnvVars ? 1 : false\n );\n\n if (config.app.longEnvVars) {\n const envContent = createEnvFile(config.app.env, api.getSettings());\n\n await uploadEnvFile(bucket, 1, envContent);\n }\n\n const platformArn = await selectPlatformArn(api.getConfig().app.awsPlatformBranchName);\n\n const [version] = await ebVersions(api);\n await beanstalk.createEnvironment({\n ApplicationName: app,\n EnvironmentName: environment,\n Description: `Environment for ${config.app.name}, managed by Meteor Up`,\n VersionLabel: version.toString(),\n PlatformArn: platformArn,\n OptionSettings: desiredEbConfig.OptionSettings\n }).promise();\n\n console.log(' Created Environment');\n await waitForEnvReady(config, false);\n } else if (!deploying) {\n // If we are deploying, the environment will be updated\n // at the same time we update the environment version\n const {\n toRemove,\n toUpdate\n } = await prepareUpdateEnvironment(api);\n\n if (api.verbose) {\n console.log('EB Config changes:');\n console.dir({\n toRemove,\n toUpdate\n });\n }\n\n if (toRemove.length > 0 || toUpdate.length > 0) {\n await waitForEnvReady(config, true);\n await beanstalk.updateEnvironment({\n EnvironmentName: environment,\n OptionSettings: toUpdate,\n OptionsToRemove: toRemove\n }).promise();\n console.log(' Updated Environment');\n await waitForEnvReady(config, true);\n }\n }\n\n const {\n ConfigurationSettings\n } = await beanstalk.describeConfigurationSettings({\n EnvironmentName: environment,\n ApplicationName: app\n }).promise();\n\n if (scalingConfigChanged(ConfigurationSettings[0].OptionSettings, config)) {\n logStep('=> Configuring scaling');\n await beanstalk.updateEnvironment({\n EnvironmentName: environment,\n OptionSettings: scalingConfig(config.app).OptionSettings\n }).promise();\n await waitForEnvReady(config, true);\n }\n}\n\nexport async function events(api) {\n const {\n environment\n } = names(api.getConfig());\n\n const {\n Events: envEvents\n } = await beanstalk.describeEvents({\n EnvironmentName: environment\n }).promise();\n\n console.log(envEvents.map(ev => `${ev.EventDate}: ${ev.Message}`).join('\\n'));\n}\n\nexport async function status(api) {\n const {\n environment\n } = names(api.getConfig());\n\n let result;\n\n try {\n result = await beanstalk.describeEnvironmentHealth({\n AttributeNames: [\n 'All'\n ],\n EnvironmentName: environment\n }).promise();\n } catch (e) {\n if (e.message.includes('No Environment found for EnvironmentName')) {\n console.log(' AWS Beanstalk environment does not exist');\n return;\n }\n\n throw e;\n }\n\n const {\n InstanceHealthList\n } = await beanstalk.describeInstancesHealth({\n AttributeNames: [\n 'All'\n ],\n EnvironmentName: environment\n }).promise();\n\n const {\n RequestCount,\n Duration,\n StatusCodes,\n Latency\n } = result.ApplicationMetrics;\n\n console.log(`Environment Status: ${result.Status}`);\n console.log(`Health Status: ${coloredStatusText(result.Color, result.HealthStatus)}`);\n if (result.Causes.length > 0) {\n console.log('Causes: ');\n result.Causes.forEach(cause => console.log(` ${cause}`));\n }\n console.log('');\n console.log(`=== Metrics For Last ${Duration || 'Unknown'} Minutes ===`);\n console.log(` Requests: ${RequestCount}`);\n if (StatusCodes) {\n console.log(' Status Codes');\n console.log(` 2xx: ${StatusCodes.Status2xx}`);\n console.log(` 3xx: ${StatusCodes.Status3xx}`);\n console.log(` 4xx: ${StatusCodes.Status4xx}`);\n console.log(` 5xx: ${StatusCodes.Status5xx}`);\n }\n if (Latency) {\n console.log(' Latency');\n console.log(` 99.9%: ${Latency.P999}`);\n console.log(` 99% : ${Latency.P99}`);\n console.log(` 95% : ${Latency.P95}`);\n console.log(` 90% : ${Latency.P90}`);\n console.log(` 85% : ${Latency.P85}`);\n console.log(` 75% : ${Latency.P75}`);\n console.log(` 50% : ${Latency.P50}`);\n console.log(` 10% : ${Latency.P10}`);\n }\n console.log('');\n console.log('=== Instances ===');\n InstanceHealthList.forEach((instance) => {\n console.log(` ${instance.InstanceId}: ${coloredStatusText(instance.Color, instance.HealthStatus)}`);\n });\n if (InstanceHealthList.length === 0) {\n console.log(' 0 Instances');\n }\n}\n\nexport async function ssl(api) {\n const config = api.getConfig();\n\n await waitForEnvReady(config, true);\n\n if (!config.app || !config.app.sslDomains) {\n logStep('=> Updating Beanstalk SSL Config');\n await updateSSLConfig(config);\n return;\n }\n\n logStep('=> Checking Certificate Status');\n\n const domains = config.app.sslDomains;\n const {\n CertificateSummaryList\n } = await acm.listCertificates().promise();\n let found = null;\n\n for (let i = 0; i < CertificateSummaryList.length; i++) {\n const {\n DomainName,\n CertificateArn\n } = CertificateSummaryList[i];\n\n if (DomainName === domains[0]) {\n const {\n Certificate\n } = await acm.describeCertificate({ // eslint-disable-line no-await-in-loop\n CertificateArn\n }).promise();\n\n if (domains.join(',') === Certificate.SubjectAlternativeNames.join(',')) {\n found = CertificateSummaryList[i];\n }\n }\n }\n\n let certificateArn;\n\n if (!found) {\n logStep('=> Requesting Certificate');\n\n const result = await acm.requestCertificate({\n DomainName: domains.shift(),\n SubjectAlternativeNames: domains.length > 0 ? domains : null\n }).promise();\n\n certificateArn = result.CertificateArn;\n }\n\n if (found) {\n certificateArn = found.CertificateArn;\n }\n\n let emailsProvided = false;\n let checks = 0;\n let certificate;\n\n /* eslint-disable no-await-in-loop */\n while (!emailsProvided && checks < 5) {\n const {\n Certificate\n } = await acm.describeCertificate({\n CertificateArn: certificateArn\n }).promise();\n const validationOptions = Certificate.DomainValidationOptions[0];\n\n if (typeof validationOptions.ValidationEmails === 'undefined') {\n emailsProvided = true;\n certificate = Certificate;\n } else if (validationOptions.ValidationEmails.length > 0 || checks === 6) {\n emailsProvided = true;\n certificate = Certificate;\n } else {\n checks += 1;\n\n await new Promise((resolve) => {\n setTimeout(resolve, 1000 * 10);\n });\n }\n }\n\n if (certificate.Status === 'PENDING_VALIDATION') {\n console.log('Certificate is pending validation.');\n certificate.DomainValidationOptions.forEach(({\n DomainName,\n ValidationEmails,\n ValidationDomain,\n ValidationStatus\n }) => {\n if (ValidationStatus === 'SUCCESS') {\n console.log(chalk.green(`${ValidationDomain || DomainName} has been verified`));\n return;\n }\n\n console.log(chalk.yellow(`${ValidationDomain || DomainName} is pending validation`));\n\n if (ValidationEmails) {\n console.log('Emails with instructions have been sent to:');\n\n ValidationEmails.forEach((email) => {\n console.log(` ${email}`);\n });\n }\n\n console.log('Run \"mup beanstalk ssl\" after you have verified the domains, or to check the verification status');\n });\n } else if (certificate.Status === 'ISSUED') {\n console.log(chalk.green('Certificate has been issued'));\n logStep('=> Updating Beanstalk SSL config');\n await updateSSLConfig(config, certificateArn);\n }\n}\n\nexport async function shell(api) {\n const {\n selected,\n description\n } = await pickInstance(api.getConfig(), api.getArgs()[2]);\n\n if (!selected) {\n console.log(description);\n console.log('Run \"mup beanstalk shell <instance id>\"');\n process.exitCode = 1;\n\n return;\n }\n\n const {\n sshOptions,\n removeSSHAccess\n } = await connectToInstance(api, selected, 'mup beanstalk shell');\n const conn = new Client();\n conn.on('ready', () => {\n conn.exec('sudo node /home/webapp/meteor-shell.js', {\n pty: true\n }, (err, stream) => {\n if (err) {\n throw err;\n }\n stream.on('close', async () => {\n conn.end();\n await removeSSHAccess();\n process.exit();\n });\n\n process.stdin.setRawMode(true);\n process.stdin.pipe(stream);\n\n stream.pipe(process.stdout);\n stream.stderr.pipe(process.stderr);\n stream.setWindow(process.stdout.rows, process.stdout.columns);\n\n process.stdout.on('resize', () => {\n stream.setWindow(process.stdout.rows, process.stdout.columns);\n });\n });\n }).connect(sshOptions);\n}\n\nexport async function debug(api) {\n const config = api.getConfig();\n const {\n selected,\n description\n } = await pickInstance(config, api.getArgs()[2]);\n\n if (!selected) {\n console.log(description);\n console.log('Run \"mup beanstalk debug <instance id>\"');\n process.exitCode = 1;\n\n return;\n }\n\n const {\n sshOptions,\n removeSSHAccess\n } = await connectToInstance(api, selected, 'mup beanstalk debug');\n\n const conn = new Client();\n conn.on('ready', async () => {\n const result = await executeSSHCommand(\n conn,\n 'sudo pkill -USR1 -u webapp -n node || sudo pkill -USR1 -u nodejs -n node'\n );\n\n if (api.verbose) {\n console.log(result.output);\n }\n\n const server = {\n ...sshOptions,\n pem: api.resolvePath(config.app.sshKey.privateKey)\n };\n\n let loggedConnection = false;\n\n api.forwardPort({\n server,\n localAddress: '0.0.0.0',\n localPort: 9229,\n remoteAddress: '127.0.0.1',\n remotePort: 9229,\n onError(error) {\n console.error(error);\n },\n onReady() {\n console.log('Connected to server');\n console.log('');\n console.log('Debugger listening on ws://127.0.0.1:9229');\n console.log('');\n console.log('To debug:');\n console.log('1. Open chrome://inspect in Chrome');\n console.log('2. Select \"Open dedicated DevTools for Node\"');\n console.log('3. Wait a minute while it connects and loads the app.');\n console.log(' When it is ready, the app\\'s files will appear in the Sources tab');\n console.log('');\n console.log('Warning: Do not use breakpoints when debugging a production server.');\n console.log('They will pause your server when hit, causing it to not handle methods or subscriptions.');\n console.log('Use logpoints or something else that does not pause the server');\n console.log('');\n console.log('The debugger will be enabled until the next time the app is restarted,');\n console.log('though only accessible while this command is running');\n },\n onConnection() {\n if (!loggedConnection) {\n // It isn't guaranteed the debugger is connected, but not many\n // other tools will try to connect to port 9229.\n console.log('');\n console.log('Detected by debugger');\n loggedConnection = true;\n }\n }\n });\n }).connect(sshOptions);\n\n process.on('SIGINT', async () => {\n await removeSSHAccess();\n process.exit();\n });\n}\n"],"mappings":"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","ignoreList":[]}
|
package/lib/commands.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.stop = exports.status = exports.start = exports.ssl = exports.shell = exports.setup = exports.restart = exports.reconfig = exports.logsNginx = exports.logsEb = exports.logs = exports.events = exports.deploy = exports.debug = exports.clean = void 0;
|
|
6
|
+
exports.stop = exports.status = exports.start = exports.ssl = exports.shell = exports.setup = exports.restart = exports.reconfig = exports.logsNginx = exports.logsEb = exports.logs = exports.fullLogs = exports.events = exports.deploy = exports.debug = exports.clean = void 0;
|
|
7
7
|
var commandHandlers = _interopRequireWildcard(require("./command-handlers"));
|
|
8
8
|
var _aws = _interopRequireDefault(require("./aws"));
|
|
9
9
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
@@ -48,6 +48,11 @@ const logs = exports.logs = {
|
|
|
48
48
|
},
|
|
49
49
|
handler: prepare(commandHandlers.logs)
|
|
50
50
|
};
|
|
51
|
+
const fullLogs = exports.fullLogs = {
|
|
52
|
+
name: 'fullLogs',
|
|
53
|
+
description: 'Download fullLogs',
|
|
54
|
+
handler: prepare(commandHandlers.fullLogs)
|
|
55
|
+
};
|
|
51
56
|
const logsNginx = exports.logsNginx = {
|
|
52
57
|
name: 'logs-nginx',
|
|
53
58
|
description: 'View Nginx logs',
|
package/lib/commands.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.js","names":["commandHandlers","_interopRequireWildcard","require","_aws","_interopRequireDefault","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","prepared","prepare","commandHandler","handler","api","configure","getConfig","app","setup","exports","description","deploy","builder","subYargs","option","boolean","logs","yargs","strict","alias","number","
|
|
1
|
+
{"version":3,"file":"commands.js","names":["commandHandlers","_interopRequireWildcard","require","_aws","_interopRequireDefault","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","prepared","prepare","commandHandler","handler","api","configure","getConfig","app","setup","exports","description","deploy","builder","subYargs","option","boolean","logs","yargs","strict","alias","number","fullLogs","name","logsNginx","logsEb","start","stop","restart","events","clean","ssl","reconfig","status","shell","positional","debug"],"sources":["../src/commands.js"],"sourcesContent":["import * as commandHandlers from './command-handlers';\nimport configure from './aws';\n\nlet prepared = false;\n\nfunction prepare(commandHandler) {\n return function handler(api) {\n if (!prepared) {\n configure(api.getConfig().app);\n prepared = true;\n }\n\n return commandHandler(api);\n };\n}\n\nexport const setup = {\n description: 'Prepare AWS to deploy app',\n handler: prepare(commandHandlers.setup)\n};\n\nexport const deploy = {\n description: 'Deploy app to AWS Elastic Beanstalk',\n builder(subYargs) {\n return subYargs.option('cached-build', {\n description: 'Use build from previous deploy',\n boolean: true\n });\n },\n handler: commandHandlers.deploy\n};\n\nexport const logs = {\n description: 'View app\\'s logs',\n builder(yargs) {\n return yargs\n .strict(false)\n .option('tail', {\n description: 'Number of lines to show from the end of the logs',\n alias: 't',\n number: true\n })\n .option('follow', {\n description: 'Follow log output',\n alias: 'f',\n boolean: true\n });\n },\n handler: prepare(commandHandlers.logs)\n};\n\nexport const fullLogs = {\n name: 'fullLogs',\n description: 'Download fullLogs',\n handler: prepare(commandHandlers.fullLogs)\n};\n\nexport const logsNginx = {\n name: 'logs-nginx',\n description: 'View Nginx logs',\n handler: prepare(commandHandlers.logsNginx)\n};\n\nexport const logsEb = {\n name: 'logs-eb',\n description: 'Logs from setting up server and installing npm dependencies',\n handler: prepare(commandHandlers.logsEb)\n};\n\n\nexport const start = {\n description: 'Start app',\n handler: prepare(commandHandlers.start)\n};\n\nexport const stop = {\n description: 'Stop app',\n handler: prepare(commandHandlers.stop)\n};\n\nexport const restart = {\n description: 'Restart app',\n handler: prepare(commandHandlers.restart)\n};\n\nexport const events = {\n description: 'Environment Events',\n handler: prepare(commandHandlers.events)\n};\n\nexport const clean = {\n description: 'Remove old bundles and app versions',\n handler: prepare(commandHandlers.clean)\n};\n\nexport const ssl = {\n description: 'Setup and view status of ssl certificate',\n handler: prepare(commandHandlers.ssl)\n};\n\nexport const reconfig = {\n description: 'Update env variables, instance count, and Meteor settings.json',\n handler: prepare(commandHandlers.reconfig)\n};\n\nexport const status = {\n description: 'View status of app',\n handler: prepare(commandHandlers.status)\n};\n\nexport const shell = {\n name: 'shell [instance-id]',\n description: 'Open production Meteor shell',\n builder(yargs) {\n yargs.positional('instance-id', {\n description: 'Instance id. If not provided, will show a list of instances'\n }).strict(false);\n },\n handler: prepare(commandHandlers.shell)\n};\n\nexport const debug = {\n name: 'debug [instance-id]',\n description: 'Connect your local Node developer tools',\n builder(yargs) {\n yargs.positional('instance-id', {\n description: 'Instance id. If not provided, will show a list of instances'\n }).strict(false);\n },\n handler: prepare(commandHandlers.debug)\n};\n"],"mappings":"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","ignoreList":[]}
|
package/lib/eb-config.js
CHANGED
|
@@ -18,6 +18,11 @@ var _upload = require("./upload");
|
|
|
18
18
|
var _utils = require("./utils");
|
|
19
19
|
var _versions = require("./versions");
|
|
20
20
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
21
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
22
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
23
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
24
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
25
|
+
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
21
26
|
function createDesiredConfig(mupConfig, settings, longEnvVarsVersion) {
|
|
22
27
|
const {
|
|
23
28
|
env,
|
|
@@ -133,8 +138,11 @@ function createDesiredConfig(mupConfig, settings, longEnvVarsVersion) {
|
|
|
133
138
|
});
|
|
134
139
|
});
|
|
135
140
|
}
|
|
136
|
-
const customOptions = customBeanstalkConfig.map(option => ({
|
|
137
|
-
Namespace: option.namespace
|
|
141
|
+
const customOptions = customBeanstalkConfig.map(option => _objectSpread(_objectSpread({
|
|
142
|
+
Namespace: option.namespace
|
|
143
|
+
}, option?.resource && {
|
|
144
|
+
ResourceName: option.resource
|
|
145
|
+
}), {}, {
|
|
138
146
|
OptionName: option.option,
|
|
139
147
|
Value: option.value
|
|
140
148
|
}));
|
|
@@ -176,13 +184,16 @@ function scalingConfig({
|
|
|
176
184
|
};
|
|
177
185
|
}
|
|
178
186
|
function convertToObject(result, option) {
|
|
179
|
-
|
|
187
|
+
const resourceKey = option.ResourceName ? `-${option.ResourceName}` : '';
|
|
188
|
+
const key = [`${option.Namespace}-${option.OptionName}${resourceKey}`];
|
|
189
|
+
result[key] = option;
|
|
180
190
|
return result;
|
|
181
191
|
}
|
|
182
192
|
function mergeConfigs(config1, config2) {
|
|
183
193
|
config1 = config1.reduce(convertToObject, {});
|
|
184
194
|
config2.forEach(option => {
|
|
185
|
-
const
|
|
195
|
+
const resourceKey = option.ResourceName ? `-${option.ResourceName}` : '';
|
|
196
|
+
const key = [`${option.Namespace}-${option.OptionName}${resourceKey}`];
|
|
186
197
|
config1[key] = option;
|
|
187
198
|
});
|
|
188
199
|
return Object.values(config1);
|
package/lib/eb-config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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":[]}
|
|
1
|
+
{"version":3,"file":"eb-config.js","names":["_lodash","require","_aws","_download","_interopRequireDefault","_envSettings","_upload","_utils","_versions","e","__esModule","default","ownKeys","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_toPropertyKey","value","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","createDesiredConfig","mupConfig","settings","longEnvVarsVersion","env","instanceType","customBeanstalkConfig","app","instanceProfile","serviceRole","names","config","OptionSettings","Namespace","OptionName","Value","settingsString","JSON","stringify","toString","METEOR_SETTINGS_ENCODED","encodeURIComponent","envName","customOptions","map","option","namespace","resource","ResourceName","mergeConfigs","scalingConfigChanged","currentConfig","minInstances","maxInstances","currentMinInstances","currentMaxInstances","item","scalingConfig","convertToObject","result","resourceKey","key","config1","config2","reduce","values","diffConfig","current","desired","toRemove","difference","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 ...(option?.resource && { ResourceName: option.resource }),\n OptionName: option.option,\n Value: option.value\n }));\n\n config.OptionSettings = mergeConfigs(config.OptionSettings, customOptions);\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 const resourceKey = option.ResourceName ? `-${option.ResourceName}` : '';\n const key = [`${option.Namespace}-${option.OptionName}${resourceKey}`];\n result[key] = option;\n\n return result;\n}\n\nexport function mergeConfigs(config1, config2) {\n config1 = config1.reduce(convertToObject, {});\n\n config2.forEach((option) => {\n const resourceKey = option.ResourceName ? `-${option.ResourceName}` : '';\n const key = [`${option.Namespace}-${option.OptionName}${resourceKey}`];\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":[]}
|