momentoSaaS / FaaS

Momento (Node)でのAPIキーの設定方法

この記事は、「Momento Advent Calendar 2023」の19日目の記事です。Momentoを使う際には、CredentialProviderにAPIキーを渡す方法が2つあります。fromEnvironmentVariableは、SDKが環境変数を読み込むアプリケーションに適しており、fromStringはAPIキーの値そのものを渡す方法です。環境変数にAPIキーを保存している場合はfromEnvironmentVariableを、APIキーを暗号化して管理している場合はfromStringを使用すると良いです。また、MomentoではAPIキーのローテーションも可能です。

広告ここから
広告ここまで

この記事は「Momento Advent Calendar 2023」19日目の記事です。

Momentoを使う際、CredentialProviderにAPIキーを渡す方法が2種類あります。この2種の違いに気付けず、すこし時間を取られたことがありましたので、短いですが覚書としてまとめました。

fromEnvironmentVariableはSDKが環境変数を読みに行く

Next.jsなどのアプリケーションでは、環境変数を.env.env.localなどに保存します。Momentoの場合、ここでAPIキーを保存することになります。(今回は便宜上APIキーのリフレッシュについては割愛します)

MOMENTO_API_KEY=eyJlbmRwb2ludCxxxxx

CredentialProvider.fromEnvironmentVariableを利用する場合、process.env.MOMENTO_API_KEYではなく「環境変数の名前」を渡す必要があります。



import { CacheClient, Configurations, CredentialProvider } from '@gomomento/sdk';

    const cacheClient = await CacheClient.create({
        configuration: Configurations.Laptop.v1(),
        credentialProvider: CredentialProvider.fromEnvironmentVariable({
            environmentVariableName: "MOMENT_API_KEY",
        }),
        defaultTtlSeconds: 60,
    });

環境変数名を渡すことで、SDK側が環境変数( process.env )からデータを取得してくれます。基本的にはこの方法で問題ないのですが、Cloudflare Workers / Pages functionsなど、環境変数に設定したデータを取得する方法が異なるインフラではうまく動作しません。

fromStringでAPIキーの値を直接設定する

もう一つの方法はfromStringを使うやり方です。こちらはprocess.env.MOMENTO_API_KEYのようにAPIキーの値そのものを渡します。

    const cacheClient = await CacheClient.create({
        configuration: Configurations.Laptop.v1(),
        credentialProvider: CredentialProvider.fromString({
            apiKey: process.env.MOMENT_API_KEY as string
        }),
        defaultTtlSeconds: 60,
    });

AWSやGCPなどでAPIキーを暗号化して管理している場合、環境変数にはAPIキー情報が保存されていないことがあります。そういった場合にも、こちらの実装方法を使うと良さそうです。

おわりに

短いですが、2つの使い分けを簡単にまとめました。MomentoはAPIキーのローテーションもできる様子ですので、できるのならば、AWSのSecrets Managerなどを使って定期的にAPIキーを交換しても良いかもしれません。この辺りもトライでき次第紹介したいと思います。

ブックマークや限定記事(予定)など

WP Kyotoサポーター募集中

WordPressやフロントエンドアプリのホスティング、Algolia・AWSなどのサービス利用料を支援する「WP Kyotoサポーター」を募集しています。
月額または年額の有料プランを契約すると、ブックマーク機能などのサポーター限定機能がご利用いただけます。

14日間のトライアルも用意しておりますので、「このサイトよく見るな」という方はぜひご検討ください。

広告ここから
広告ここまで

Related Category posts