今日は、雑に「RDS Data API」について調べてみるの日。
目次
雑とは
1時間ぐらいで調べてた情報をサクッとまとめた内容。
とある日
最近出たアップデートで、今後有用そうだったのでRDS Data API について調べてみる。
Amazon Aurora PostgreSQL が RDS Data API をサポート開始
わかったこと
- RDSへの Web サービスインターフェイス
- Data API への呼び出しはすべて同期
- クラスターに対して有効化必要
- DB クラスター内のライターインスタンスに対してのみ実行
- Performance Insights は、Data API を使用して作成したデータベース クエリの監視をサポートしていません
- AWS CLIやAWS SDKから実行できる
- AWS Secrets Manager からシークレットの値を取得する
RDS Data APIとは
Web サービスインターフェイス
RDS Data API (Data API) を使用すると、Aurora DB クラスターへの Web サービスインターフェイスを操作できます。Data API では、DB クラスターへの永続的な接続は必要ありません。代わりに、安全な HTTP エンドポイントと AWS SDK との統合が提供されます。エンドポイントを使用すると、接続を管理せずに SQL ステートメントを実行できます。
使い方
RDS データ API の使用 - Amazon Aurora
SQL
aws rds-data execute-statement --resource-arn "arn:aws:rds:us-east-1:123456789012:cluster:mydbcluster" \ --database "mydb" --secret-arn "arn:aws:secretsmanager:us-east-1:123456789012:secret:mysecret" \ --sql "select * from mytable"
Serverless v2 とプロビジョニングされた Amazon Aurora PostgreSQL で RDS Data API がサポートされました | DevelopersIO
バッチ
aws rds-data batch-execute-statement --resource-arn "arn:aws:rds:us-east-1:123456789012:cluster:mydbcluster" \ --database "mydb" --secret-arn "arn:aws:secretsmanager:us-east-1:123456789012:secret:mysecret" \ --sql "insert into mytable values (:id, :val)" \ --parameter-sets "[[{\"name\": \"id\", \"value\": {\"longValue\": 1}},{\"name\": \"val\", \"value\": {\"stringValue\": \"ValueOne\"}}], [{\"name\": \"id\", \"value\": {\"longValue\": 2}},{\"name\": \"val\", \"value\": {\"stringValue\": \"ValueTwo\"}}], [{\"name\": \"id\", \"value\": {\"longValue\": 3}},{\"name\": \"val\", \"value\": {\"stringValue\": \"ValueThree\"}}]]"
AWS SDK
import boto3 rdsData = boto3.client('rds-data') cluster_arn = 'arn:aws:rds:us-east-1:123456789012:cluster:mydbcluster' secret_arn = 'arn:aws:secretsmanager:us-east-1:123456789012:secret:mysecret' response1 = rdsData.execute_statement( resourceArn = cluster_arn, secretArn = secret_arn, database = 'mydb', sql = 'select * from employees limit 3') print (response1['records']) [ [ { 'longValue': 1 }, { 'stringValue': 'ROSALEZ' }, { 'stringValue': 'ALEJANDRO' }, { 'stringValue': '2016-02-15 04:34:33.0' } ], [ { 'longValue': 1 }, { 'stringValue': 'DOE' }, { 'stringValue': 'JANE' }, { 'stringValue': '2014-05-09 04:34:33.0' } ], [ { 'longValue': 1 }, { 'stringValue': 'STILES' }, { 'stringValue': 'JOHN' }, { 'stringValue': '2017-09-20 04:34:33.0' } ] ]
参考資料
- RDS データ API の有効化
- ようこそ - RDS データ API
- Amazon Aurora Serverless v2 および Amazon Aurora プロビジョニングされたクラスター用の Data API の紹介 | AWS データベースのブログ
- Amazon Aurora、待望のRDS Data APIを導入しサーバーレス・ワークロードの簡素化へ
〆
制限はそこそこあるがAPIベースで処理できるので助かる人は多そう。