LoginSignup
0
0

More than 1 year has passed since last update.

[AWS Lambda Powertools Python]パラメータ機能のtransform動作を確認

Posted at

概要

AWS Lambda Powertools Python 1 の機能のうち、パラメータ機能(Parameters) 2 にはJSONとbase64を変換してくれる機能が含まれています。
簡単なサンプルで動作を確認します。

確認手順

対象はSSM Parameter Storeとします。

モジュール

aws-lambda-powertools 1.31.1
boto3                 1.24.96
botocore              1.27.96

パラメータ設定

AWS CLIで設定しました。

JSONテキストを設定

$ aws ssm put-parameter \
    --name "/my/json-parameter" \
    --value "{\"name\": \"AWS Lambda Powertools\", \"language\": \"Python\"}" \
    --type String

base64テキストを設定

Hello AWS Lambda Powertools!をbase64コマンドでエンコードした結果を設定しています

$ aws ssm put-parameter \
    --name "/my/base64-parameter" \
    --value "`echo -n 'Hello AWS Lambda Powertools!' | base64`" \
    --type String

ソースコード

transform 引数を指定しない場合と適切に指定した場合の結果を確認します。

parameter_transform.py
from aws_lambda_powertools.utilities import parameters

# JSON
value_json_raw = parameters.get_parameter("/my/json-parameter")
value_json_dict = parameters.get_parameter("/my/json-parameter", transform='json')

print(f'{value_json_raw=}')
print(f'{value_json_dict=}')

# base64
value_base64_raw = parameters.get_parameter("/my/base64-parameter")
value_base64_bin = parameters.get_parameter("/my/base64-parameter", transform='binary')

print(f'{value_base64_raw=}')
print(f'{value_base64_bin=}')

実行結果

  • value_json_raw...設定したJSONテキストそのままです
  • value_json_dict...JSONテキストが辞書型に変換されています
  • value_base64_raw...base64テキストそのままです
  • value_base64_bin...base64デコード結果のバイナリに変換されています
$ python parameter_transform.py
value_json_raw='{"name": "AWS Lambda Powertools", "language": "Python"}'
value_json_dict={'name': 'AWS Lambda Powertools', 'language': 'Python'}
value_base64_raw='SGVsbG8gQVdTIExhbWJkYSBQb3dlcnRvb2xzIQ=='
value_base64_bin=b'Hello AWS Lambda Powertools!'

変換エラーの捕捉

TransformParameterError 例外で捕捉できます。

parameter_transform_exception.py
from aws_lambda_powertools.utilities import parameters

try:
    value = parameters.get_parameter("/my/json-parameter", transform='binary')  # invalid transform
except parameters.exceptions.TransformParameterError as e:
    print(f'変換エラーです: {e=}')
$ python parameter_transform_exception.py
変換エラーです: e=TransformParameterError('Invalid base64-encoded string: number of data characters (37) cannot be 1 more than a multiple of 4')
  1. AWS Lambda Powertools Python

  2. Parameters

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