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

test(cdk): スナップショットシリアライザのデッドパターン削除と軽微な堅牢化

Aperta Adatta ai principianti
#274 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub
needs-triage
Lingua principale
TypeScript
Stelle
229
Fork
45
Merge medio
1m
PR unite (30g)
4

Descrizione

## 背景

`apps/cdk/test/snapshot-plugin.ts` は、`cdk synth` が出力する非決定的トークン(アセットハッシュ、Lambda Version 論理 ID 末尾のハッシュ等)を redact して CloudFormation スナップショットを安定させるシリアライザです。現在の合成テンプレートに照らすと、実際には何もマッチしていない置換パターン(デッド)が複数あり、加えて軽微な堅牢化の余地があります。

## 現状パターンと合成出力の突き合わせ

```ts
.replace(/([A-Fa-f0-9]{64}.zip)/, 'REDACTED')
.replace(/([A-Fa-f0-9]{64}.mjs)/, 'REDACTED')
.replace(/.*cdk-hnb659fds-container-assets-.*/, 'REDACTED')
.replace(/webapp-starter-[0-9a-z]*/, 'REDACTED')
.replace(/(.*CurrentVersion).*/, '$1REDACTED')
```

合成テンプレート(`cdk.out/*.template.json`)を確認した結果:

### 削除候補(デッド)

- **`webapp-starter-[0-9a-z]*`**: 合成出力に `webapp-starter-` 形の文字列は出現しない。`[0-9a-z]*` は 0 文字にマッチするため実質何も redact していない。削除してよい。
- **`.*cdk-hnb659fds-container-assets-.*`**: 合成テンプレートに `cdk-hnb659fds-container-assets-` を含む文字列が存在しない(この構成のコンテナイメージはデプロイ時ビルドで作成される ECR リポジトリを参照し、bootstrap の container-assets リポジトリを参照しないため)。デッド。削除を検討。

### 維持(誤って削除しないこと)

- **`.zip` / `.mjs`**: Lambda バンドルアセットの S3 キーのハッシュを redact。LIVE。
- **`(.*CurrentVersion).*`**: Lambda Version 論理 ID 末尾のハッシュを redact。アプリ/依存の変更で変わる値のため維持が必要。LIVE。

### 軽微な堅牢化(任意)

- `.zip` / `.mjs` パターンの `.` が未エスケープで任意 1 文字にマッチする → `\.` へ。
- 同パターンに `/g` が無く、1 つの文字列値に 64hex が 2 つ以上現れると 2 個目以降が漏れる(現状は該当文字列 0 件のため実害はなく、保険)。
- `(.*CurrentVersion).*` は貪欲マッチ。意図を明確化するなら `CurrentVersion[A-Za-z0-9]*$` 等へアンカー。

## 受け入れ条件

- デッドパターン削除後、`apps/cdk` の `test:unit`(vitest run)でスナップショット差分が発生しない(=当該パターンが何も変えていなかったことの確認)。
- 堅牢化を入れる場合はスナップショットを `-u` で再生成し、diff が意図どおりであることを確認。

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Inizia da apps/cdk/test/snapshot-plugin.ts e confronta i suoi pattern di serializzazione con l'output generato cdk.out/*.template.json. Esegui il comando apps/cdk test:unit (vitest run) dopo aver rimosso i pattern morti identificati; se è incluso un hardening, rigenera gli snapshot con -u ed esamina il diff. Il lavoro è concluso quando i test passano senza modifiche indesiderate agli snapshot.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
aws, node.js, typescript
Ambito
infrastructure, testing
Tipo di issue
Refactoring
Difficoltà
2/5
Tempo stimato
1-3 ore
Stato di attività
Tranquilla
Chiarezza
Specificata chiaramente
Idoneità per principianti
76/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.