Как разделить эластичные среды бобовых стеблей?

#javascript #node.js #amazon-web-services #amazon-elastic-beanstalk #aws-sdk

Вопрос:

Я создаю сервис поверх EB, в котором будет размещено несколько различных приложений. Я хочу иметь возможность разделять каждое приложение, чтобы между ними не было конфликтов.

Например, у меня есть приложения app1 и app2 с промежуточными средами. Когда я пытаюсь развернуть промежуточную 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 , я получаю сообщение об ошибке, что он уже существует (хотя и под другим env)

Комментарии:

1. Что произойдет, если вы зарегистрируете / просмотрите список версий из ответа на команду describeApplicationVersionsCommand? Что произойдет, если вы используете что-то вроде «env1:Имя приложения» и «env2:имя приложения», чтобы у них не было одного и того же имени приложения? Я подозреваю, что проверка вашего существования неверна, но я обычно развертываю с помощью консоли.

2. Я действительно рассматривал возможность добавления префикса к каждой среде с ее именем приложения, но я полагаю, что это может вызвать дополнительные проблемы, поскольку длина каждого имени среды довольно велика. Имена приложений уже могут быть довольно длинными, если они извлечены из github приложений.

3. Я добавил вопрос о тестировании обнаружения версии-возможно, версия существует, но ваш тест ее не улавливает?

4. Кроме того, вы можете использовать сокращение для различных сред, таких как «cluster1:» или «промежуточный».:

5. Они не имеют одного и того же имени приложения. У них одно и то же имя среды, и, судя по тому, что я вижу, среды являются общими для приложений