AWS SDK for Python (Boto3) で AWS Systems Manager パラメータストアから情報を取得する

2018.07.05

AWS Systems Manager パラメータストアは、 機密情報を管理することができるサービスです。 パラメータストアを使うことでコードからクレデンシャルデータを分離することができます。今回はBoto3でパラメータストアから情報を取得する方法をご紹介します。

パラメータストアに情報を入れる

はじめにサンプルコードを使うためにパラメータストアに情報を入れます。 パラメータストアに情報を入れる際はマネジメントコンソールやAWS CLIを使うと思いますので今回はAWS CLIでデータを入れます。以下の例では--type "SecureString"オプションでAWS KMSにより暗号化しています。

$ 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()

実行結果

$ python get-parameters.py
PASSWORD

まとめ

get_parameters()は汎用的に使用する関数なのでご紹介しました。AWS Systems Manager パラメータストアを使用することでコードにパスワードやクレデンシャル情報を書かずに済みます。簡単に使用することができますので使用してみてください。

参考URL