如何从 aws-sdk 中的 s3 存储桶创建 Elastic Beanstalk 实例?

Posted

技术标签:

【中文标题】如何从 aws-sdk 中的 s3 存储桶创建 Elastic Beanstalk 实例?【英文标题】:How to create Elastic Beanstalk instance from s3 bucket in the aws-sdk? 【发布时间】:2021-09-21 19:01:47 【问题描述】:

我正在尝试从 aws javascript sdk 部署一个弹性 beanstalk 实例,并希望代码源来自 s3 存储桶。我可以看到您可以通过网络界面执行此操作,但无法通过 sdk 解决。

到目前为止,我已经创建了一个新环境(此时应用程序已经存在),但该环境没有要运行的源代码。

const elasticBeanstalkClient = new ElasticBeanstalkClient( 
  region: "eu-west-2",
  credentials: 
    accessKeyId: awsAccessKeyId,
    secretAccessKey: awsAccessKeySecret
   
);

const createEnvironmentCommand = new CreateEnvironmentCommand(
  ApplicationName: applicationName,
  EnvironmentName: environmentName,
  SolutionStackName: "64bit Amazon Linux 2 v5.4.2 running Node.js 14",
  VersionLabel: versionLabel
)

return elasticBeanstalkClient.send(createEnvironmentCommand);

CreateEnvironmentCommand 似乎没有我可以看到的源值。我应该如何告诉环境是从 s3 源创建的?

【问题讨论】:

【参考方案1】:

我可以看到您可以通过网络界面执行此操作,但无法通过 sdk 解决。

EB 控制台在后台做了很多事情,让您看起来可以做到。使用 CDK,您必须自己做所有事情。这意味着您必须先createApplicationVersion。执行此操作时,您可以指定 S3 位置。

【讨论】:

谢谢,这真的很有帮助。所以我必须先调用 CreateEnvironmentCommand,然后再调用 createApplicationVersion?你知道我是否必须调用另一种方法来将应用程序链接到该环境,或者我是否需要通过将一些值传递给createApplicationVersion来做到这一点? @Stretch0 创建CreateApplicationVersionRequest 时,指定versionLabel。然后在您的CreateEnvironmentCommand 中您可以引用标签。 完美,成功了。感谢您的帮助@Marcin

以上是关于如何从 aws-sdk 中的 s3 存储桶创建 Elastic Beanstalk 实例?的主要内容,如果未能解决你的问题,请参考以下文章

Ruby v2 的 aws-sdk:在我将对象放入 S3 存储桶后检查成功状态

如何从 Elastic Beanstalk 实例访问 S3 存储桶中的 docker 配置文件

从 node.js 将图像上传到 s3 存储桶

如何使用 aws-sdk 获取 AWS S3 上文件的 URL?

如何使用 aws-sdk 将文件同步上传到 S3?

如何测试 AWS S3 上是不是存在存储桶