背景
cdk
で secrets manager
を使ってパスワードや環境変数を登録するときに、
generateSecretString
secretObjectValue
secretStringValue
のパターンをそれぞれまとめてみました。
環境
Typescript: ^4.8.2
aws-cdk: ^2.44.0
generateSecretString オプションなし
generateSecretString: コード
const generateSecretString = new aws_secretsmanager.Secret(this, 'GenerateSecretString', {
generateSecretString: {
secretStringTemplate: JSON.stringify({ username: 'postgres', say: 'hi mom' }),
generateStringKey: 'password',
},
});
generateSecretString: コンソール画面
-
generateStringKey
で定義したpassword
だけランダムな文字列を生成してくれる -
generateStringKey
で生成してくれるキーはひとつだけ
generateSecretString: オプションあり
オプションでexcludeNumbers
やexcludeCharacters
を使って生成する文字列を調整することができるので試しに生成してみた。
generateSecretString: コード
const generateSecretString = new aws_secretsmanager.Secret(this, 'GenerateSecretString', {
generateSecretString: {
secretStringTemplate: JSON.stringify({ username: 'postgres', say: 'hi mom' }),
generateStringKey: 'password',
+ excludeNumbers: true,
},
});
generateSecretString: コンソール画面
- excludeNumbers(数字を除く)のとおり、数字がない文字列を生成している
- その他オプションは下記を参照
secretObjectValue
secretObjectValue: コード
import { randomBytes } from 'node:crypto';
import { SecretValue } from 'aws-cdk-lib';
const generateRandomString = () => randomBytes(10).toString('hex');
const secretObjectValue = new aws_secretsmanager.Secret(this, 'SecretObjectValue', {
secretObjectValue: {
username: SecretValue.unsafePlainText('postgres'),
say: SecretValue.unsafePlainText('hi mom'),
password: SecretValue.unsafePlainText(generateRandomString()),
password2: SecretValue.unsafePlainText(generateRandomString()),
},
});
secretObjectValue: コンソール画面
-
secretObjectValue
に渡したオブジェクトがそのまま保存される - ランダムな値を利用したいキーがある場合は、自前でランダムな文字列用意
secretStringValue
コード
const secretStringValue = new aws_secretsmanager.Secret(this, 'SecretStringValue', {
secretStringValue: SecretValue.unsafePlainText('hi mom'),
});
作成したシークレットの値をコンソール画面で表示
- 文字列のみ。key/value形式ではない。