generative-ai-use-cases-jp を同一 AWS アカウントで 2 つデプロイしたい
Tips 的な備忘録記事です。
GitHub で公開されている generative-ai-use-cases-jp があります。会社の中で複数の部署が存在するときに、Kendra Index を別々に保持して、データを分離したいときがあります。このときに、何も考えずにデプロイを行うと 1 個の AWS アカウントの中で、AWS CDK の Stack ID が重複し、個別にデプロイができません。
そこで、次のファイルを変更することで AWS CDK の Stack ID を変更でき、個別にデプロイができます。
Git Clone してきたディレクトリで、 /package/cdk/bin/generative-ai-use-cases.ts を開きます。次のようなファイルになっているはずです。
#!/usr/bin/env node
import 'source-map-support/register';
import * as cdk from 'aws-cdk-lib';
import { IConstruct } from 'constructs';
import { GenerativeAiUseCasesStack } from '../lib/generative-ai-use-cases-stack';
class DeletionPolicySetter implements cdk.IAspect {
constructor(private readonly policy: cdk.RemovalPolicy) {}
visit(node: IConstruct): void {
if (node instanceof cdk.CfnResource) {
node.applyRemovalPolicy(this.policy);
}
}
}
const app = new cdk.App();
const stack = new GenerativeAiUseCasesStack(app, 'GenerativeAiUseCasesStack');
cdk.Aspects.of(stack).add(new DeletionPolicySetter(cdk.RemovalPolicy.DESTROY));
GenerativeAiUseCasesStack の部分を好きな ID に変更することで、同一の AWS アカウント上で 2 つのデプロイが可能です。
変更前
const stack = new GenerativeAiUseCasesStack(app, 'GenerativeAiUseCasesStack');
変更後
const stack = new GenerativeAiUseCasesStack(app, '好きなID');
この後、次のコマンドを実行しデプロイを行うことで、個別に構成が可能です。
npm ci
npm run cdk:deploy