AWS SDK for Python (Boto3) で AWS Systems Manager パラメータストアから情報を取得する
AWS Systems Manager パラメータストアは、 機密情報を管理することができるサービスです。 パラメータストアを使うことでコードからクレデンシャルデータを分離することができます。今回はBoto3でパラメータストアから情報を取得する方法をご紹介します。
パラメータストアに情報を入れる
はじめにサンプルコードを使うためにパラメータストアに情報を入れます。
パラメータストアに情報を入れる際はマネジメントコンソールやAWS CLIを使うと思いますので今回はAWS CLIでデータを入れます。以下の例では--type "SecureString"オプションでAWS KMSにより暗号化しています。
1 | $ aws ssm put-parameter --name "RDS-MASTER-PASSWORD" --value 'PASSWORD' --type "SecureString" |
サンプルコード
get_parameters()は単純にパラメータストアからデータをgetする関数です。
WithDecryption=Trueにより複合化しパラメータストアに保存されているパラメータ名に対する値を返しています。
このサンプルコードを実行すると復号化された文字列 PASSWORD が取得できます。
| import boto3 | |
| # SSM region | |
| REGION = 'us-west-2' | |
| # Function for get_parameters | |
| def get_parameters(param_key): | |
| ssm = boto3.client('ssm', region_name=REGION) | |
| response = ssm.get_parameters( | |
| Names=[ | |
| param_key, | |
| ], | |
| WithDecryption=True | |
| ) | |
| return response['Parameters'][0]['Value'] | |
| def main(): | |
| # parameter name | |
| param_key = "RDS-MASTER-PASSWORD" | |
| # get parameter value | |
| param_value = get_parameters(param_key) | |
| print(param_value) | |
| if __name__ == '__main__': | |
| main() |
実行結果
1 2 | $ python get-parameters.pyPASSWORD |
まとめ
get_parameters()は汎用的に使用する関数なのでご紹介しました。AWS Systems Manager パラメータストアを使用することでコードにパスワードやクレデンシャル情報を書かずに済みます。簡単に使用することができますので使用してみてください。