Craft Secret Manager

Craft Secret Manager は機密データの管理機能です。Secret Managerを使うことで、Craft Functions内でAPIキー、パスワード、証明書などの機密情報を安全に扱うことができます。

シークレットを作成する

  • シークレット一覧画面で「作成」を選択します。
  • 以下の項目を入力します。
    • シークレット名: コード内で利用する名前を指定します。英数大文字およびアンダースコア _ のみ入力可能です。
    • データ: 機密データを入力します。作成後は管理画面からは閲覧できません。
  • 「保存」を選択します。

作成したシークレットの情報は変更できません。データを変更する場合はシークレットを削除して新たに作り直してください。

シークレットを削除する

  • シークレット一覧画面で対象のシークレットの [...] メニューから [シークレットの削除] を選択します。

Function内でSecretを利用する

MODULES.secret.get でSecretの値を取得します。

  • 引数には keys をキーに持つオブジェクトを渡します
    • keys の値として、Craft Secret Manager作成したSecretの名前を配列として渡します。
  • Secretの名前をキーにもつオブジェクトが返却されます。
//// KARTE_SECRET_KEY という名前のSecretの値を取得する
const { secret } = MODULES;
const secretValues = await secret.get({ keys: [ 'KARTE_SECRET_KEY' ] })

// "KARTE_SECRET_KEY is {{ Secret Managerで設定した値 }}"
logger.log(`KARTE_SECRET_KEY is ${secretValues.KARTE_SECRET_KEY}`)


//// 分割代入の例
const { KARTE_SECRET_KEY: secretKey } = await secret.get({ keys: [ 'KARTE_SECRET_KEY' ] })

// "KARTE_SECRET_KEY is {{ Secret Managerで設定した値 }}"
logger.log(`KARTE_SECRET_KEY is ${secretKey}`)

サンプルコード

KARTEのサーバーサイドAPI (API v2) を使う場合の例です。

  • Appのアクセストークンをシークレット KARTE_API_TOKEN として保存します
  • デプロイ時にpackagesで api モジュールを指定します
// ファンクション作成・編集時にpackagesでapiを取り込んでおく
import api from 'api';

export default async function (data, { MODULES }) {
  const { initLogger, secret } = MODULES;
  const logger = initLogger({logLevel: 'DEBUG'});

  // 管理画面で KARTE_API_TOKEN をあらかじめ設定しておく。
  const { KARTE_API_TOKEN: token } = await secret.get({ keys: [ 'KARTE_API_TOKEN' ] });
  
  // api() の引数はAPIv2リファレンスを参照。
  // https://developers.karte.io/reference/post_v2-track-event-write
  const insight = api('@dev-karte/vx.y#zzzzzzzzzzzzzz');
  insight.auth(token);

  // API呼び出しは省略。
  // ...
}

API リファレンス

https://developers.karte.io/reference/secret-manager