CDK развертывает только первый стек - для других получение сообщения «Нет стеков, соответствующих имени (именам)»

У меня возникла странная проблема с CDK. У меня есть три окружения для служб, определенных как стеки. Ранее я развернул все три из них (каждый в отдельной учетной записи). Каждый стек отображается в CloudFormation.

Я прекрасно могу развернуть первый стек (cdk deploy myapp-service-development). Однако когда я запускаю cdk deploy myapp-service-test, я получаю сообщение об ошибке No stacks match the name(s) myapp-service-test. Когда я комментирую первый стек (developemt), я могу развернуть следующий стек (test) и так далее.

Команда cdk ls дает мне только первый стек, определенный в файле ниже:

#!/usr/bin/env node
import { devEnv, testEnv, prodEnv } from "@my-app/configuration";
import { MyStack } from "../src/infrastructure/index.js";
import * as cdk from "aws-cdk-lib";

const app = new cdk.App();

new MyStack(app, `myapp-service-development`, {
  stackName: "service",
  env: devEnv, // this is { account: "someAccountId", region: "eu-central-1"}
});

new MyStack(app, "myapp-service-test", {
  stackName: "service",
  env: testEnv,
});

new MyStack(app, `myapp-service-production`, {
  stackName: "service",
  env: prodEnv,
});


Когда вы запускаете cdk deploy myapp-service-test, как вы указываете, что хотите использовать учетные данные для тестовой среды? Я установил приложение, используя ваш код. Когда я запускаю npx cdk --profile=<dev profile> --region=<dev region> deploy myapp-service-development, npx cdk --profile=<test profile> --region=<test region> deploy myapp-service-test и npx cdk --profile=<prod profile> --region=<prod region> deploy myapp-service-prod, все работает как положено, при начальном и последующих развертываниях. npx cdk ls тоже работает как положено, отображая все стопки.

Doug Naphas 01.07.2024 00:36

Это может быть ограничением в CDK, поскольку все ваши стеки имеют одно и то же имя.

gshpychka 01.07.2024 09:04

@DougNaphas Честно говоря, понятия не имею, почему он начал так себя вести. У меня есть другие сервисы в монорепо с такой же настройкой, которые работают отлично. Я указываю учетные данные, как и вы. На данный момент я нашел обходной путь, который публикую

florian norbert bepunkt 01.07.2024 12:18
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
106
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это мой текущий обходной путь, который позволяет мне развертывать отдельные стеки.

#!/usr/bin/env node
import { devEnv, testEnv, prodEnv } from "@my-app/configuration";
import { MyStack } from "../src/infrastructure/index.js";
import * as cdk from "aws-cdk-lib";

const app = new cdk.App();

const bundlingStacks = app.node.tryGetContext("aws:cdk:bundling-stacks") as Array<string>;
const buildAllStacks = bundlingStacks.includes("**");

if (buildAllStacks || bundlingStacks.includes(`easypliant-${serviceName}-development`)) {
  new MyStack(app, `myapp-service-development`, {
    stackName: "service",
    env: devEnv, // this is { account: "someAccountId", region: "eu-central-1"}
  });
}

if (buildAllStacks || bundlingStacks.includes(`easypliant-${serviceName}-test`)) {
  new MyStack(app, "myapp-service-test", {
    stackName: "service",
    env: testEnv,
  });
}

if (buildAllStacks || bundlingStacks.includes(`easypliant-${serviceName}-production`)) {
  new MyStack(app, `myapp-service-production`, {
    stackName: "service",
    env: prodEnv,
  });
}

Другие вопросы по теме