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認定資格試験テキスト AWS認定AIプラクティショナー」という本を書きました。
「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。
「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。
「AWSではじめるLinux入門ガイド」という本を書きました。
開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
関連記事
-
-
CloudFormation StackSetsでOrganizations組織のアカウントに一気にIAMロールを作成した
Organizationsで管理している各アカウントにIAMロールを作成したい場 …
-
-
Redmineの添付ファイルをS3に同期する
RedmineをAWS上で構築するデザインを考えていて、せっかくなので冗長化しよ …
-
-
DynamoDB Accelerator(DAX)のサンプルアプリケーション(Python)を実行
DynamoDBデベロッパーガイドのDynamoDB Accelerator(D …
-
-
CloudWatchエンドポイントがIPv6に対応したのでCloudWatchエージェントからカスタムメトリクスを送信しました
追記 翌日のブログで、CloudWatchエージェントのアップデートにより、Cl …
-
-
Amazon Location Service入門ワークショップ-トラッカー
トラッカーでデバイスの位置や移動履歴を追跡できます。 関連記事 Amazon L …
-
-
EC2 Auto Recovery機能を設定しておいた
以前EC2インスタンスのリタイア対象になったこともあり、というより、やっておいて …
-
-
Lucidchart AWSアカウントからインポート機能で自動作図
SNSでLucidchartというサービスが話題になってました。 AWSの環境を …
-
-
Backlogの課題チケット更新内容をMicrosoft Teamsに通知する(AWS Lambda Python)
BacklogにSlack連携が追加されました。 ですが、私の所属している会社で …
-
-
Amazon EMR 「Hadoop を使用してビッグデータを分析」チュートリアルをやってみました
AWS認定データアナリティクス受験準備の一環で、Amazon EMRのチュートリ …
-
-
AWS GlueでAurora JDBC接続でS3へのジョブを実行
Aurora Serverless v1のMySQLタイプデータベースからS3へ …

