通过AWS SDK部署EB

我目前的部署过程:

  1. 从代码创buildzip文件
  2. 使用EB CLI和.elasticbeanstalk / config.yml将代码上传到EB实例我在config.yml中指定应用程序名称,环境名称和工件(zip文件)。

我能否仅使用AWS SDK(nodeJS)将代码部署到EB实例?

发现自己。 你需要上传ZIP文件到S3。 然后,您需要为EB应用程序创build应用程序版本(使用ZIP文件的唯一标签和S3Key)。 然后,您需要使用新的版本标签来更新EB环境(如果需要,不要忘记指定节点启动脚本)。

也许这个代码会对某人有所帮助:

var aws = require('aws-sdk'); var s3 = new aws.S3(); var eb = new aws.ElasticBeanstalk(); var zipFileName = 'myCodeZipArchive.zip'; var appName = 'app-name'; var envName = 'env-name'; var s3bucket = 'my-app-source-bucket'; var label = `${appName}_${envName}_${new Date().toISOString()}`; s3.upload({ Bucket: s3bucket, Key: label, Body: fs.createReadStream(zipFileName) }).promise().then(() => eb.createApplicationVersion({ ApplicationName: appName, VersionLabel: label, SourceBundle: { S3Bucket: s3bucket, S3Key: label } }).promise()).then(() => eb.updateEnvironment({ ApplicationName: appName, EnvironmentName: envName, OptionSettings: [{ Namespace: 'aws:elasticbeanstalk:container:nodejs', OptionName: 'NodeCommand', Value: 'npm start' }], VersionLabel: label }).promise());