首页 > 解决方案 > 如何分离 Elastic Beanstalk 环境?

问题描述

我正在 EB 之上构建一个服务,它将托管几个不同的应用程序。我希望能够分离每个应用程序,以便它们之间没有冲突。

例如,我的 app1 和 app2 都带有暂存环境。当我尝试将 staging env 部署到 app2 时,我收到一个错误Environment staging already exists,因为它存在于 app1 下。

有没有办法为每个应用程序创建一个完全独立的实例,以避免此类冲突,也可能使事情更安全,以便应用程序无法访问彼此的环境?

如果有任何帮助,我正在使用 Javascript aws-sdk 来创建这样的环境:

const createElasticBeanstalkEnvironment = async  ({
  applicationName,
  versionLabel,
  environmentName
}) => {
  const describeEnvironmentsCommand = new DescribeEnvironmentsCommand({
    EnvironmentNames: [environmentName],
    ApplicationName: applicationName,
    IncludeDeleted: false
  });

  const { Environments = [] } = await elasticBeanstalkClient.send(describeEnvironmentsCommand);

  const isExistingEnvironment = Environments.length > 0;

  if( isExistingEnvironment ) {
    const updateEnvironmentCommand = new UpdateEnvironmentCommand({
      ApplicationName: applicationName,
      EnvironmentName: environmentName,
      VersionLabel: versionLabel,
      // ...
    });

    return elasticBeanstalkClient.send(updateEnvironmentCommand);
  }

  const createEnvironmentCommand = new CreateEnvironmentCommand({
    ApplicationName: applicationName,
    EnvironmentName: environmentName,
    VersionLabel: versionLabel,
    // ...
  });

  return elasticBeanstalkClient.send(createEnvironmentCommand);
}

你可以看到我正在检查环境是否存在,如果不存在,那么我创建它。我的代码describeEnvironments返回 false,因为该应用程序不存在它,但是当我调用时,CreateEnvironmentCommand我得到它已经存在的错误(尽管在另一个环境下)

标签: javascriptnode.jsamazon-web-servicesamazon-elastic-beanstalkaws-sdk

解决方案


推荐阅读