[AWS]パラメータストアを使ってみよう

AWS

コード管理していくうえで、APIキーなどのうっかり流出を防ごうとしてみる

パラメーターストアとは

Systems Manager > アプリケーション管理に組み込まれている機能の一部。
値の保管場所的な感じで、設定値やAPIキーなどを登録しておいて、サービスから使いたいときに呼び出す仕組みらしい。
※私のイメージは、.infファイルとか、.hファイルな感じって思ってる

Let’s Try!!

パラメータ作成

1.Systems Manager > アプリケーション管理 > パラメータストアにてパラメータ作成を押す

2.パラメータを登録しよう

名前 :ARN(呼び出し名になる)
利用枠:少ない文字列なんかは標準で十分だと思う
タイプ:パスワードとかは「安全な文字列」とかかもしれないけど。
データ:テキストだしなー
値  :ここが本命

3.作成できるとこんな感じ

Lambdaから呼び出し+権限付与

1.ドキュメント見ながらpythonで作成
SSM — Boto3 Docs 1.26.69 documentation (amazonaws.com)

import json
import boto3
import pprint

def lambda_handler(event, context):

    client = boto3.client('ssm', region_name='ap-northeast-1')
    ParamName = 'ParamTest'
    
    response = client.get_parameter(
        Name=ParamName,
        WithDecryption=False
    )
    
    pprint.pprint(ParamName + " に登録されている値は " + response['Parameter']['Value'])
    
    return {
        'statusCode': 200,
        'body': json.dumps('Hello from Lambda!')
    }


2.意気揚々と実行したら、エラー!! そうですよね、権限渡してませんね。

is not authorized to perform: ssm:GetParameter on resource: arn:aws:ssm:us-east-1:**********:parameter/ParamTest because no identity-based policy allows the ssm:GetParameter action

3.IAMで必要な権限のポリシーを作成する
<ID>のところは実際に12桁のアカウントIDが入ってます

4.lambdaにて関数作成した際のデフォルトロールに作ったポリシーをアタッチする

5.再度実行

ちゃんと出た!!

まとめ

こうしておけば、プログラム共有してもうっかりパスワードとか共有せずに済みそう!!
SecretManagerとの使い分けもやってみたいけど、あれはお金かかるしなー・・・w
そのうちやってみよう

おわり。

コメント

タイトルとURLをコピーしました