@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.
Binary file
package/.yarnrc.yml ADDED
@@ -0,0 +1 @@
1
+ nodeLinker: node-modules
@@ -17,6 +17,12 @@ upstream healthcheck {
17
17
  server {
18
18
  listen 8080;
19
19
 
20
+ # added by gb
21
+
22
+ server_tokens off;
23
+
24
+ # added by gb - END
25
+
20
26
  if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})T(\d{2})") {
21
27
  set $year $1;
22
28
  set $month $2;
@@ -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
 
@@ -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":[]}
@@ -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',
@@ -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","logsNginx","name","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 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":";;;;;;AAAA,IAAAA,eAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,IAAA,GAAAC,sBAAA,CAAAF,OAAA;AAA8B,SAAAE,uBAAAC,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAG,yBAAAH,CAAA,6BAAAI,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAD,wBAAA,YAAAA,CAAAH,CAAA,WAAAA,CAAA,GAAAM,CAAA,GAAAD,CAAA,KAAAL,CAAA;AAAA,SAAAJ,wBAAAI,CAAA,EAAAK,CAAA,SAAAA,CAAA,IAAAL,CAAA,IAAAA,CAAA,CAAAC,UAAA,SAAAD,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAE,OAAA,EAAAF,CAAA,QAAAM,CAAA,GAAAH,wBAAA,CAAAE,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAC,GAAA,CAAAP,CAAA,UAAAM,CAAA,CAAAE,GAAA,CAAAR,CAAA,OAAAS,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAf,CAAA,oBAAAe,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAe,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAd,CAAA,EAAAe,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAf,CAAA,CAAAe,CAAA,YAAAN,CAAA,CAAAP,OAAA,GAAAF,CAAA,EAAAM,CAAA,IAAAA,CAAA,CAAAa,GAAA,CAAAnB,CAAA,EAAAS,CAAA,GAAAA,CAAA;AAE9B,IAAIW,QAAQ,GAAG,KAAK;AAEpB,SAASC,OAAOA,CAACC,cAAc,EAAE;EAC/B,OAAO,SAASC,OAAOA,CAACC,GAAG,EAAE;IAC3B,IAAI,CAACJ,QAAQ,EAAE;MACb,IAAAK,YAAS,EAACD,GAAG,CAACE,SAAS,CAAC,CAAC,CAACC,GAAG,CAAC;MAC9BP,QAAQ,GAAG,IAAI;IACjB;IAEA,OAAOE,cAAc,CAACE,GAAG,CAAC;EAC5B,CAAC;AACH;AAEO,MAAMI,KAAK,GAAAC,OAAA,CAAAD,KAAA,GAAG;EACnBE,WAAW,EAAE,2BAA2B;EACxCP,OAAO,EAAEF,OAAO,CAAC1B,eAAe,CAACiC,KAAK;AACxC,CAAC;AAEM,MAAMG,MAAM,GAAAF,OAAA,CAAAE,MAAA,GAAG;EACpBD,WAAW,EAAE,qCAAqC;EAClDE,OAAOA,CAACC,QAAQ,EAAE;IAChB,OAAOA,QAAQ,CAACC,MAAM,CAAC,cAAc,EAAE;MACrCJ,WAAW,EAAE,gCAAgC;MAC7CK,OAAO,EAAE;IACX,CAAC,CAAC;EACJ,CAAC;EACDZ,OAAO,EAAE5B,eAAe,CAACoC;AAC3B,CAAC;AAEM,MAAMK,IAAI,GAAAP,OAAA,CAAAO,IAAA,GAAG;EAClBN,WAAW,EAAE,kBAAkB;EAC/BE,OAAOA,CAACK,KAAK,EAAE;IACb,OAAOA,KAAK,CACTC,MAAM,CAAC,KAAK,CAAC,CACbJ,MAAM,CAAC,MAAM,EAAE;MACdJ,WAAW,EAAE,kDAAkD;MAC/DS,KAAK,EAAE,GAAG;MACVC,MAAM,EAAE;IACV,CAAC,CAAC,CACDN,MAAM,CAAC,QAAQ,EAAE;MAChBJ,WAAW,EAAE,mBAAmB;MAChCS,KAAK,EAAE,GAAG;MACVJ,OAAO,EAAE;IACX,CAAC,CAAC;EACN,CAAC;EACDZ,OAAO,EAAEF,OAAO,CAAC1B,eAAe,CAACyC,IAAI;AACvC,CAAC;AAEM,MAAMK,SAAS,GAAAZ,OAAA,CAAAY,SAAA,GAAG;EACvBC,IAAI,EAAE,YAAY;EAClBZ,WAAW,EAAE,iBAAiB;EAC9BP,OAAO,EAAEF,OAAO,CAAC1B,eAAe,CAAC8C,SAAS;AAC5C,CAAC;AAEM,MAAME,MAAM,GAAAd,OAAA,CAAAc,MAAA,GAAG;EACpBD,IAAI,EAAE,SAAS;EACfZ,WAAW,EAAE,6DAA6D;EAC1EP,OAAO,EAAEF,OAAO,CAAC1B,eAAe,CAACgD,MAAM;AACzC,CAAC;AAGM,MAAMC,KAAK,GAAAf,OAAA,CAAAe,KAAA,GAAG;EACnBd,WAAW,EAAE,WAAW;EACxBP,OAAO,EAAEF,OAAO,CAAC1B,eAAe,CAACiD,KAAK;AACxC,CAAC;AAEM,MAAMC,IAAI,GAAAhB,OAAA,CAAAgB,IAAA,GAAG;EAClBf,WAAW,EAAE,UAAU;EACvBP,OAAO,EAAEF,OAAO,CAAC1B,eAAe,CAACkD,IAAI;AACvC,CAAC;AAEM,MAAMC,OAAO,GAAAjB,OAAA,CAAAiB,OAAA,GAAG;EACrBhB,WAAW,EAAE,aAAa;EAC1BP,OAAO,EAAEF,OAAO,CAAC1B,eAAe,CAACmD,OAAO;AAC1C,CAAC;AAEM,MAAMC,MAAM,GAAAlB,OAAA,CAAAkB,MAAA,GAAG;EACpBjB,WAAW,EAAE,oBAAoB;EACjCP,OAAO,EAAEF,OAAO,CAAC1B,eAAe,CAACoD,MAAM;AACzC,CAAC;AAEM,MAAMC,KAAK,GAAAnB,OAAA,CAAAmB,KAAA,GAAG;EACnBlB,WAAW,EAAE,qCAAqC;EAClDP,OAAO,EAAEF,OAAO,CAAC1B,eAAe,CAACqD,KAAK;AACxC,CAAC;AAEM,MAAMC,GAAG,GAAApB,OAAA,CAAAoB,GAAA,GAAG;EACjBnB,WAAW,EAAE,0CAA0C;EACvDP,OAAO,EAAEF,OAAO,CAAC1B,eAAe,CAACsD,GAAG;AACtC,CAAC;AAEM,MAAMC,QAAQ,GAAArB,OAAA,CAAAqB,QAAA,GAAG;EACtBpB,WAAW,EAAE,gEAAgE;EAC7EP,OAAO,EAAEF,OAAO,CAAC1B,eAAe,CAACuD,QAAQ;AAC3C,CAAC;AAEM,MAAMC,MAAM,GAAAtB,OAAA,CAAAsB,MAAA,GAAG;EACpBrB,WAAW,EAAE,oBAAoB;EACjCP,OAAO,EAAEF,OAAO,CAAC1B,eAAe,CAACwD,MAAM;AACzC,CAAC;AAEM,MAAMC,KAAK,GAAAvB,OAAA,CAAAuB,KAAA,GAAG;EACnBV,IAAI,EAAE,qBAAqB;EAC3BZ,WAAW,EAAE,8BAA8B;EAC3CE,OAAOA,CAACK,KAAK,EAAE;IACbA,KAAK,CAACgB,UAAU,CAAC,aAAa,EAAE;MAC9BvB,WAAW,EAAE;IACf,CAAC,CAAC,CAACQ,MAAM,CAAC,KAAK,CAAC;EAClB,CAAC;EACDf,OAAO,EAAEF,OAAO,CAAC1B,eAAe,CAACyD,KAAK;AACxC,CAAC;AAEM,MAAME,KAAK,GAAAzB,OAAA,CAAAyB,KAAA,GAAG;EACnBZ,IAAI,EAAE,qBAAqB;EAC3BZ,WAAW,EAAE,yCAAyC;EACtDE,OAAOA,CAACK,KAAK,EAAE;IACbA,KAAK,CAACgB,UAAU,CAAC,aAAa,EAAE;MAC9BvB,WAAW,EAAE;IACf,CAAC,CAAC,CAACQ,MAAM,CAAC,KAAK,CAAC;EAClB,CAAC;EACDf,OAAO,EAAEF,OAAO,CAAC1B,eAAe,CAAC2D,KAAK;AACxC,CAAC","ignoreList":[]}
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
- result[`${option.Namespace}-${option.OptionName}`] = option;
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 key = [`${option.Namespace}-${option.OptionName}`];
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);
@@ -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":[]}