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 リファレンス
Updated about 1 year ago
What’s Next