aws-samples / aws-samples/serverless-full-stack-webapp-starter-kit

マルチ環境デプロイ対応(CDK context経由の環境名プレフィックス)

Offen Anfängerfreundlich
#108 0 Kommentare 1 Reaktion 0 zugewiesene Personen Auf GitHub ansehen
enhancement
Vorherrschende Sprache
TypeScript
Sterne
229
Forks
45
Ø Merge
1 Min.
Gemergte PRs (30 T.)
4

Beschreibung

## 概要

同一AWSアカウント内に複数環境(dev, staging等)をデプロイできない。CDK contextで環境名を指定し、スタック名にプレフィックスを付与するパターンを追加する。

環境名未指定時の動作は一切変わらないため、既存ユーザーに影響なし。

## 現状の問題

`cdk/bin/cdk.ts` でスタック名がハードコードされているため、同一アカウントに2つ目の環境をデプロイしようとするとスタック名が衝突する。

```typescript
// 現在のコード
const virginia = new UsEast1Stack(app, 'ServerlessWebappStarterKitUsEast1Stack', { ... });
new MainStack(app, 'ServerlessWebappStarterKitStack', { ... });
```

## 修正案

`cdk/bin/cdk.ts` にCDK context経由の環境名指定を追加する。両方のスタックにプレフィックスを付与する必要がある(`crossRegionReferences` でSSMパラメータ経由のクロスリージョン参照があるため、片方だけでは不整合が起きる)。

```typescript
const app = new cdk.App();
const envName = app.node.tryGetContext('env') as string | undefined;
const prefix = envName ? `${envName}-` : '';

const virginia = new UsEast1Stack(app, `${prefix}ServerlessWebappStarterKitUsEast1Stack`, {
// ...既存のprops
});
new MainStack(app, `${prefix}ServerlessWebappStarterKitStack`, {
// ...既存のprops
});

// 環境名タグ(指定時のみ)
if (envName) {
cdk.Tags.of(app).add('Environment', envName);
}
```

## 使い方

```bash
# デフォルト(プレフィックスなし、現在と同じ動作)
npx cdk deploy --all

# 環境名指定
npx cdk deploy --all -c env=dev
```

## 検証方法

- 環境名未指定時に現在と同じスタック名(`ServerlessWebappStarterKitStack`, `ServerlessWebappStarterKitUsEast1Stack`)でデプロイされること
- `-c env=dev` 指定時に `dev-ServerlessWebappStarterKitStack`, `dev-ServerlessWebappStarterKitUsEast1Stack` でデプロイされること
- 同一アカウントに複数環境が共存できること(クロスリージョン参照が正しく解決されること)

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Beginnen Sie in cdk/bin/cdk.ts und prüfen Sie, wie die beiden Stack-Namen und die vorhandenen Cross-Region-Referenzen konfiguriert sind. Führen Sie die dokumentierten CDK-Deploy-Befehle mit und ohne -c env=dev aus. Als erledigt gilt die Aufgabe, wenn die Standardnamen unverändert bleiben, die Namen mit dev-Präfix für beide Stacks erzeugt werden und mehrere Umgebungen mit korrekt aufgelösten Cross-Region-Referenzen koexistieren können.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
aws, typescript
Bereich
cloud, infrastructure
Issue-Typ
Feature
Schwierigkeit
2/5
Geschätzter Aufwand
1-3 Stunden
Aktivitätsstatus
Ruhig
Klarheit
Klar beschrieben
Anfängerfreundlichkeit
74/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.