AWS CDKでSecrets ManagerにRDSの情報を格納する方法
| 項目 | バージョン |
|---|---|
| CDK | 2.27.0 |
AWS CDKでSecrets ManagerにRDSの情報を格納する方法です。
Secrets Managerデプロイ
aws_secretsmanagerで新しいシークレットをデプロイしてみます。
import { Stack, StackProps, aws_secretsmanager } from 'aws-cdk-lib';
import * as ec2 from 'aws-cdk-lib/aws-ec2';
import { Construct } from 'constructs';
export class Sample001Stack extends Stack {
constructor(scope: Construct, id: string, props?: StackProps) {
super(scope, id, props);
const vpc = ec2.Vpc.fromLookup(this, 'Vpc', {
vpcId: 'vpc-xxxxxxxxxxxxxxxxx'
}) // 既存VPC
// Secrets Manager
const newSecret = new aws_secretsmanager.Secret(
this,
'DBCredentialsSecret',
{
secretName: 'rds-credentials',
generateSecretString: {
excludePunctuation: true,
includeSpace: false,
generateStringKey: 'password',
secretStringTemplate: JSON.stringify({
username: 'hoge',
})
}
}
);
}
}
これでデプロイします。
cdk deploy
新しいシークレットが作成されます。
RDSの情報をシークレットマネージャに格納する
RDSデプロイ時にcredentialsオプションにシークレットのインスタンス変数を指定すると、RDS情報が格納されます。
credentials: rds.Credentials.fromSecret(newSecret) // newSecret変数
tsを修正します。
import { Stack, StackProps, aws_secretsmanager } from 'aws-cdk-lib';
import * as ec2 from 'aws-cdk-lib/aws-ec2';
import { Construct } from 'constructs';
import * as rds from 'aws-cdk-lib/aws-rds';
export class Sample001Stack extends Stack {
constructor(scope: Construct, id: string, props?: StackProps) {
super(scope, id, props);
const vpc = ec2.Vpc.fromLookup(this, 'Vpc', {
vpcId: 'vpc-xxxxxxxxxxxxxxxxx'
}) // 既存VPC
// Secrets Manager
const newSecret = new aws_secretsmanager.Secret(
this,
'DBCredentialsSecret',
{
secretName: 'secret-test',
generateSecretString: {
excludePunctuation: true,
includeSpace: false,
generateStringKey: 'password',
secretStringTemplate: JSON.stringify({
username: 'hoge',
})
}
}
);
// RDS(postgreSQL)
const postgres = new rds.DatabaseInstance(this, 'Instance', {
engine: rds.DatabaseInstanceEngine.postgres({
version: rds.PostgresEngineVersion.VER_12, // ver12指定
}),
vpc, // multi AZ at least 2
vpcSubnets: {
subnetType: ec2.SubnetType.PRIVATE_ISOLATED,
},
credentials: rds.Credentials.fromSecret(newSecret) // シークレットにRDS情報格納
});
}
}
これでデプロイします。
cdk deploy
RDSが作成されます。
シークレットにRDS情報が格納されます。
これでRDS情報がシークレットに追加されます。
参考サイト
aws-cdk-lib.aws_rds module · AWS CDK
Language | Package
aws-cdk-lib.aws_secretsmanager module · AWS CDK
Language | Package

KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES20xx),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^




コメント