1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Momento】MOMENTO_AUTH_TOKENをデコードするスクリプトを書いてみた

Last updated at Posted at 2023-06-16

はじめに

この記事では 手を動かしながらMomentoが提供する初の真のサーバーレスキャッシュMomentoを学習していく記事です。主な内容としては実践したときのメモを中心に書きます。(忘れやすいことなど)
誤りなどがあれば書き直していく予定です。

今回はMomentoではなく、Momento SDKのコードを読み、Momentoで利用するMOMENTO_AUTH_TOKENをデコードして中身を見てみました。

そもそもMomentoとは

Momentoが提供する真のサーバーレスキャッシュサービスです。
Momentoの主な特徴としては以下のようなものがあります。

  • 月50GB無料
  • データの送受信に対して$0.5/GB
  • メモリーインスタンスへの課金なし
  • Elasticache for Redis と比較して60%低いコストで利用できる
  • Pub/Sub型
  • 様々なデータ型に対応
  • 複数のプログラミング言語に対応※

Momentoを利用すると開発者への負担を減らしつつ可用性を向上させてキャッシュコストを削減できます。

※料金体系:https://jp.gomomento.com/pricing

はじめかた

以下のURLから始めることができます。
https://docs.momentohq.com/getting-started

Momento を操作するSDK

Momento にはキャッシュを操作する為のSDKがOSSで提供されており、中身は全てGitHubで公開されています。さらに管理用インターフェイスには専用のCLI、momento cliがあります。

今回はMomentoではなく、Momento SDKのコードを読み、Momentoで利用するMOMENTO_AUTH_TOKENをデコードして中身を見てみました。

なぜ中身を見ようと思ったのか

理由は簡単です。
他のキャッシュサービスではリーダーエンドポイントとアクセストークンによる接続であることに対してMomentoはAUTH_TOKENだけあれば、接続できるところです。

例えば、Redisの場合はリーダーエンドポイントとアクセストークンのセットでアクセスが可能です。
また、ものによってはIDとパスワードで認証することもあるでしょう。

少なくともキャッシュアクセスにはペアとなる文字列情報が必要になるというのが私の頭の中にあり、単一のトークンでアクセスできるということに違和感がありました。

リージョン情報は? APIキーは? キャッシュの識別は?
色々疑問に思ったのでSDKのソースを読んだところ、疑問が解決しました。

MomentoのAuth Tokenをデコードしてみた

事前準備

momento_auth_token_decoder - GitHubをDesktop にCloneします。

cd ~/Desktop
git clone https://github.com/ymd65536/momento_auth_token_decoder.git

ディレクトリを変更します。

cd ./momento_auth_token_decoder

getting startedを参考にMomento のトークンを作成します。

環境変数MOMENTO_AUTH_TOKENを作成してYOUR_AUTH_TOKENを取得したMomento のトークンに置き換えます。

export MOMENTO_AUTH_TOKEN=YOUR_AUTH_TOKEN

スクリプトの実行

環境変数にあるMomento のトークンをデコードします。

python ./example/decoder/main.py
{
  "endpoint": "cell-{リージョン名}-1.prod.a.momentohq.com",
  "api_key": "キーの羅列"
}

※シークレット情報が含まれる為、一部書き換えています。

まとめ

Momentoには以下のような特徴があることがわかりました。

  • 低コストでアプリケーションにキャッシュを導入することができること
  • サーバーレスキャッシュの為、インスタンスの管理が不要であること
  • 接続にはMOMENTO_AUTH_TOKENが必要であること

そして、今回分かったこととしてMOMENTO_AUTH_TOKENはbase64でエンコードがなされており
デコードするとエンドポイントやAPIキーがわかることです。

実は実装をよく見るとエンドポイントにプレフィックスをつけていることもわかります。おそらく、Momentoにアクセスした後、どのキャッシュにアクセスするかを認識する為の識別だと思われます。

紹介

動画

記事

サーバレスキャッシュサービス Momento を AWS 環境で検証

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?