①SecretsManagerでシークレットを作成
RDSなどAWSリソースのシークレット情報を保存する場合はそのリソースを選択しますが、今回は軽い動作確認するだけなので「その他」を選択します。
保存したいシークレット情報を「key-value」で入力します。
シークレット名をtestにします。
動作確認するだけなので、今回はローテーションをしません。
設定のレビュー
レビュー画面の一番下にあるサンプルコードをコピーしておきます。
これで設定完了
②IAMの設定
IAMポリシーを作ります。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "secretsmanager:GetSecretValue",
"Resource": "arn:aws:secretsmanager:your-region:your-account-id:secret:your-secret-id"
}
]
}
このポリシーをLambda用のロールに付与します。
③Lambdaを作成(Python)
関数作成時に、②で作られたロールを選択します。
ソース例
import boto3
import json
from botocore.exceptions import ClientError
def get_secret():
secret_name = "test"
region_name = "ap-northeast-1"
# Secrets Managerクライアントの作成
client = boto3.client('secretsmanager', region_name=region_name)
try:
# シークレットを取得
response = client.get_secret_value(SecretId=secret_name)
print(response)
# シークレットが文字列の場合
if 'SecretString' in response:
secret = response['SecretString']
else:
# バイナリデータの場合
secret = response['SecretBinary']
# 必要に応じてデコード処理を行う
return json.loads(secret)
except ClientError as e:
# エラーハンドリング
print(f"Error retrieving secret: {e}")
return None
def lambda_handler(event, context):
secret = get_secret()
if secret:
# 認証情報を使用する処理
print("Secret retrieved successfully")
print(secret)
else:
print("Failed to retrieve secret")
Lambda側でテストを押すと、Secrect Managerからシークレット情報を取れました!