13
2

More than 1 year has passed since last update.

AWS CDKでSecrets ManagerのgenerateSecretString, secretObjectValue, secretStringValueを作ってみる

Last updated at Posted at 2022-11-11

背景

cdksecrets managerを使ってパスワードや環境変数を登録するときに、

  1. generateSecretString
  2. secretObjectValue
  3. 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: コンソール画面

スクリーンショット 2022-11-11 17.09.11.png
  • generateStringKeyで定義したpasswordだけランダムな文字列を生成してくれる
  • generateStringKeyで生成してくれるキーはひとつだけ

generateSecretString: オプションあり

オプションでexcludeNumbersexcludeCharactersを使って生成する文字列を調整することができるので試しに生成してみた。

generateSecretString: コード

const generateSecretString = new aws_secretsmanager.Secret(this, 'GenerateSecretString', {
      generateSecretString: {
        secretStringTemplate: JSON.stringify({ username: 'postgres', say: 'hi mom' }),
        generateStringKey: 'password',
+       excludeNumbers: true,
      },
    });

generateSecretString: コンソール画面

スクリーンショット 2022-11-11 17.49.33.png

  • 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: コンソール画面

スクリーンショット 2022-11-11 17.39.50.png
  • secretObjectValueに渡したオブジェクトがそのまま保存される
  • ランダムな値を利用したいキーがある場合は、自前でランダムな文字列用意

secretStringValue

コード

const secretStringValue = new aws_secretsmanager.Secret(this, 'SecretStringValue', {
      secretStringValue: SecretValue.unsafePlainText('hi mom'),
    });

作成したシークレットの値をコンソール画面で表示

スクリーンショット 2022-11-11 17.44.42.png

  • 文字列のみ。key/value形式ではない。
13
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
2