Aurora Serverless Data APIを有効にしてLambdaからクエリを実行
2021/09/28
目次
Aurora Serverless作成
MySQLを作成しました。
作成時にData APIを有効にしました。
LambdaのIAMロール
1 2 3 4 5 6 7 8 9 10 |
{ "Sid": "RDSDataServiceAccess", "Effect": "Allow", "Action": [ "rds-data:ExecuteStatement", "rds-data:ExecuteSql" ], "Resource": "arn:aws:rds:us-east-1:123456789012:cluster:cluster-id" } |
IAMロールに設定するIAMポリシーです。
rds-dataは、RDSDataServiceのAPIアクションを許可する必要があるのですね。
今回の検証ではExecuteStatementのみでOKです。
ExecuteSqlというのを足してますが、これはboto3のexecute_sqlを実行してみたかったのですが、結果から言うとexecute_sqlは非推奨でした。
他にはSecrets Managerへの権限が必要です。
Secrets Manager
Aurora Serverlessで作成したMySQLに対してシークレットを作成しようと思ったらできてました。
Data APIに必須だからですかね。
便利ですね。
Lambda関数
コードを短くするためと再利用の必要がなかったので直接書いてますが、必要に応じて変数化しますよね。
デモ用のコードです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import json import boto3 def lambda_handler(event, context): rds_data_client = boto3.client('rds-data') response = rds_data_client.execute_sql( dbClusterOrInstanceArn='arn:aws:rds:us-east-1:123456789012:cluster:cluster-id', awsSecretStoreArn='arn:aws:secretsmanager:us-east-1:123456789012:secret:secret-name', database='demo', sqlStatements='select * from user' ) print (response['records']) |
An error occurred (BadRequestException) when calling the ExecuteSql operation: This API is deprecated and not available. Use ExecuteStatement API instead
ExecuteSqlは非推奨なのでExecuteStatementを使用しましょうというエラーでした。
ということでExecuteStatement版です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import json import boto3 def lambda_handler(event, context): rds_data_client = boto3.client('rds-data') response = rds_data_client.execute_statement( resourceArn='arn:aws:rds:us-east-1:123456789012:cluster:cluster-id', secretArn='arn:aws:secretsmanager:us-east-1:123456789012:secret:secret-name', database='demo', sql='select * from user' ) print (response['records']) |
成功しました。
1 2 |
[[{'longValue': 1}, {'stringValue': 'yamashita'}], [{'longValue': 2}, {'stringValue': 'mitsuhiro'}]] |
こんなレスポンスでした。
最後までお読みいただきましてありがとうございました!
「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。

「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。

「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。

「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。

「AWSではじめるLinux入門ガイド」という本を書きました。


開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
-
「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト – プロフェッショナル」を執筆しました
「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテク …
-
-
AWS Toolkit for Eclipseで「Error Message: Unable to find a region via the region provider chain. Must provide an explicit region in the builder or setup environment to supply a region.」
AWS Toolkit for Eclipseをセットアップ(2021年版)の環 …
-
-
ブログのアーキテクチャをコストベースで見直しました
当ブログはAWSで構築しています。 アーキテクチャをコストを最重視して見直しまし …
-
-
Cloud9初回アクセス時にCodeCommitのリポジトリを自動でクローンする
CloudFormationからCloud9環境を作成する際に、Reposito …
-
-
AWS Systems Manager Session ManagerでLinuxインスタンスのRun Asサポートを有効にする
AWS Systems Manager Session Managerの設定画面 …
-
-
AWS CodeStarのプロジェクトテンプレートLambda+Pythonによって生成されるもの
勉強会のデモで、AWS CodeStarのプロジェクトテンプレートLambda+ …
-
-
GoogleForm,GASからAPI Gateway, Lambdaで入力情報をDynamoDBに格納する
vol.26 AWS認定試験テキスト認定クラウドプラクティショナーのデモ(Dyn …
-
-
Cloud9 Python3でpipも3にする
このブログは、2019/10/20に書いた、 Cloud9のAMIがCloud9 …
-
-
AWS Systems Manager AutomationでEC2の自動停止
Systems Manager Automationがない時代に、Lambdaを …
-
-
WordPress(EC2)の画像のS3へのオフロードをMedia Cloudで
タイトル通りですが、画像をwebサーバー(EC2)からではなく、S3バケットから …