【问题标题】:Deploy EB through AWS SDK通过 AWS 开发工具包部署 EB
【发布时间】:2026-01-31 06:05:02
【问题描述】:

我目前的部署过程:

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

我可以仅使用 AWS SDK (nodeJS) 将代码部署到 EB 实例吗?

【问题讨论】:

    标签: node.js amazon-web-services amazon-elastic-beanstalk


    【解决方案1】:

    找到自己。 您需要将 ZIP 文件上传到 S3。 然后您需要为 EB 应用程序创建应用程序版本(带有唯一标签和 S3Key,ZIP 文件所在的位置)。 然后你需要用新的 Versionlabel 更新 EB 环境(如果需要,不要忘记指定 Node 启动脚本)。

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

    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());
    

    【讨论】:

    • 感谢您的这篇文章,我能够使用 python 和 boto3 使我的 EBS 部署工作:)