/ #Lambda Powertools #sqs 

パラメータストアをLambdaPowertoolsで使う

もくじ

SSM のパラメーターストアを使ってますか?

外部連携の認証キーとかを保存しておいて、Lambda で使う!とかの用途で使うと思いますが、

この記事は Lambda Powertools を使うと、実装が多少楽になるよ、という内容と具体的な動作を確認してみます。

何が嬉しいの?

今回は書くソースコードの量が少し少なくなる程度だと思っているので、これの目的のために Lambda Powertools を使うというよりは、

Lambda Powertools を使っていて、Parameter ストアを使う場合は使うといいよ! 的な嬉しさです。

前提

  • ローカルから SSM の Parameter ストアにアクセスできる権限がある

では 動作の確認していきましょう!

今回は Parameter ストアにアクセスするだけなので、CDK とかは使いません(笑)

環境をつくる

下記のコマンドで仮想環境を作って、Lambda Powertools をインストールします

# とりあえず仮想環境を作る
$ python3 -m venv .venv
$ source .venv/bin/activate

# インストール
$ pip install aws-lambda-powertools

Parameter ストアに登録する

アクセスするための値を ssm に登録します

# 登録
$ aws ssm put-parameter --name "/test/hogehoge" --value "HOOOOOGEEEEEE" --type SecureString

# 確認
$ aws ssm get-parameter --name "/test/hogehoge"
# こんな感じで設定されている
{
    "Parameter": {
        "Name": "/test/hogehoge",
        "Type": "SecureString",
        "Value": "dummy",
        "Version": 1,
        "LastModifiedDate": "dummy",
        "ARN": "dummy",
        "DataType": "text"
    }
}

今回は/test/hogehogeHOOOOOGEEEEEEという値を暗号化して登録しました!

Parameter を使う

今回はコードが少ないので、python のインタプリタを使って動作確認します。

$ python

対話形式のコンソールを呼び出して下記2行叩く。

>>> from aws_lambda_powertools.utilities import parameters
>>> parameters.get_parameter("/test/hogehoge", decrypt=True)
'HOOOOOGEEEEEE' # <- こんな出力が返ってくる

まさかの 2 行で動作確認終わり

ちなみは暗号化されてない値を使うときはdecrypt=Trueは不要です。

パラメーターは削除しておきましょう

# 削除
$ aws ssm delete-parameter --name "/test/hogehoge"

# 確認
$ aws ssm get-parameter --name "/test/hogehoge"
# こんな内容が表示されればOK
An error occurred (ParameterNotFound) when calling the GetParameter operation:

余談。。。

やるきになればboto3でも 2 行でとってこれる

# python インタプリタ
>>> import boto3
>>> boto3.client("ssm").get_parameter(Name="/test/hogehoge",WithDecryption=True)["Parameter"]["Value"]
'HOOOOOGEEEEEE'

その上で、下記のようなユースケースの場合はLambdaPowertoolsのほうが幸せになれるかもしれません。

  • Parameter ストアに保存した値が頻繁に変わるような場合。LambdaPowertoolsは値をメモリーにキャッシュさせて定期的に(例えば 30 秒毎とか)Parameter を更新させるような処理ができる
  • ストアの値が json 形式だったり base64 の値だった場合。取得と同時に変形させることができる。

最後のこの機能(from aws_lambda_powertools.utilities import parameters)は ssm 以外にも DynamoDB でも使えるので、それが結構便利そうなので別の記事でまとめようと思います!

以上でした!

Author

Sisii

インフラが好きなエンジニアぶってるなにか