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
関連記事
-
-
EC2 Amazon Linux 2 にAmazon LinuxからWordPressを移行
このブログを新しいインスタンスに移行することにしました。 2015年5月にAma …
-
-
Cloud9でCodeWhispererを使用する
アクセス権限 Cloud9のEC2に設定するIAMロールのIAMポリシーで co …
-
-
AWS Managed Microsoft ADを構築してユーザー追加まで
事前準備 DNSホスト名と名前解決を有効にしたVPCを作成して、2つのAZにパブ …
-
-
Microsoft TeamsのOutgoing Webhooksを使ってAWS Lambda(Python), Amazon API Gatewayとbot
Microsoft Teamsの検証その2、Slackで実装しているbotも対応 …
-
-
VPCピア接続ではピア先VPCのセキュリティグループIDを指定できる
タイトルどおりです。 できることは知ってたのですが、試したことがなかったので、確 …
-
-
Former2で既存リソースのCloudFormationテンプレート出力を試してみた
JAWS DAYS 2020の資料確認のお手伝いを少ししてまして、「ゼロからはじ …
-
-
Windows EC2インスタンスでEBSとインスタンスストアを使用する
Amazon EBS基本のデモ(「AWS認定試験テキスト AWS認定 クラウドプ …
-
-
Amazon S3オブエジェクトへのリクエストをCloudTrail, Athenaで識別
こちらCloudTrail を使用した Amazon S3 リクエストの識別に書 …
-
-
LMA(amazon-transcribe-live-meeting-assistant)を海外とのインタビューミーティングで使ってみました
amazon-transcribe-live-meeting-assistant …
-
-
Amazon Route 53プライベートホストゾーン設定
Amazon Route 53プライベートホストゾーンを作成してみました。 Ro …