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教科書 AWS認定デベロッパーアソシエイト テキスト&問題集 」という本を書きました。
「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。
「AWSではじめるLinux入門ガイド」という本を書きました。
開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
関連記事
-
-
EC2にSystems MangerからCloudWatchエージェントをインストール
CloudWatchエージェント EC2の標準メトリクスでは収集できないメモリの …
-
-
Amazon WorkSpaces Web Accessを有効化する
仕事がら、Amazon WorkSpacesをディレクトリも含めて一時的にセット …
-
-
ブログの画像を別アカウントのS3に移動するためにIAMロールでクロスアカウントアクセス
ずっと先延ばしにしていたのですが、このブログの画像はEC2から直接配信しています …
-
-
AWS OrganizationsでAWSアカウントを25作りたいのでPythonで作った
AWSアカウントを25作る必要があったので、Lambda Python 3.7で …
-
-
WordPressをAmazon CloudFrontで配信してついでにACM(AWS Certificate Manager)を使って常時SSL化する
当サイトの500と502の発生状況がドイヒーであるとの苦情をいただきまして、Am …
-
-
Amazon SNSサブスクリプションフィルターで優先度別のSQSキューにサブスクライブする
EC2のコンシューマーアプリケーションは優先度の高いキューのメッセージを先に処理 …
-
-
AWS Transfer Family S3向けのSFTP対応サーバー
S3バケットは作成済です。 IAMロールの作成 [crayon-6a921586 …
-
-
Organizations対応のAWS CloudTrailのAthenaテーブルでPartition Projectionを使用しました
パーティション向けのAlterテーブルの定期実行が面倒だと思っていたら、Part …
-
-
AWS Transit GatewayのVPN接続
上記のような構成で、オンプレミス側は東京リージョンのVPCでVyOSを起動して接 …
-
-
ALBの重み付けルーティングでカナリアリリースをしてみました
当ブログのAMIの更新と、ALBターゲットグループのヘルスチェックを変更したかっ …

