Aurora Severless Data API を使ってみての気づき
この記事は何?
Aurora Severless Data API を利用した開発活動中に気づいたことを随時記載します。
Data API については、昨年(2019年)に東京リージョンでリリースされたばかりであるため、日本語の情報が少ない状況です。この記事が今後利用される方のお役に立てば幸いです。
RDS 利用環境
- リージョン:ap-northeast-1
- ロール:サーバーレス
- エンジン:Aurora PostgreSQL
Aurora Severless (PostgreSQLエンジン)を使ってみての気づき
最小キャパシティーを1Aurora Capacity Unit (ACU) から設定できるのはMySQLエンジンのみ。
最小キャパシティーを1Aurora Capacity Unit (ACU) から設定できるのはMySQLエンジンのみ。
PostgreSQLエンジンの最小キャパシティーは2ACU。
「Amazon Aurora Serverless が 1 ユニットのキャパシティーと新しいスケーリングオプションのサポートを開始」という発表を聞いて、選択するエンジンに関わらず1ACUから設定できると考えていたのですが
MySQL と互換性のある Aurora Serverless DB クラスターの最小キャパシティーを 1 Aurora Capacity Unit (ACU) に設定できるようになりました。
とのことです
プレースホルダーに渡す値のデータ型が少ない。ARRAY型、JSON型は2020年5月時点で非サポート。
ExecuteStatementアクションの公式ドキュメントを読むと、リクエストシンタックスには一見ARRAY型をサポートしているような記載がありますが、次の注意書きがありました。
Note
Array parameters are not supported.
気になったので試しに、boto3からプレースホルダーへARRAY型の値を渡すようにExecuteStatementを実行したところ、「Array parameters are not supported」エラーが発生しました。調べたところ、GitHubでも Issues として Open になっており、AWSのエンジニアが次のようにコメントしていることから今後ARRAY型をサポートするものと考えます。
The SDK team has already things set up, its up-to the service team the time they take to implement it. Will update if they implement the feature.
ワークアラウンドな対応となりますが、次のような記述をすることでARRAY型のプレースホルダーへ値を渡すことが可能です。
tags = ['tag1', 'tag2']
rds_client = boto3.client('rds-data')
parameters = {
'secretArn': 'your_secret_arn',
'resourceArn': 'your_resource_arn',
'sql': INSERT INTO sample_tbl (id, tags) VALUES (:id, :tags::text[]),
'parameters': [
{'name':'id', 'value':{'stringValue': '001'},
{'name':'tags', 'value':{'stringValue': '{' + ','.join(tags) + '}'}}
],
'database': 'your_database_name',
}
response = rds_client.execute_statement(**parameters)
トランザクションのタイムアウト値は3分。
BeginTransactionアクションの公式ドキュメントによると、発行したトランザクションIDが使用されない場合、トランザクションは3分間でタイムアウトします。コミットされる前にタイムアウトする場合は、自動でロールバックが実行されます。
また、一度使用されたトランザクションは最大24時間有効で、24時間後に自動で終了し、ロールバックが実行されます。
Important
A transaction can run for a maximum of 24 hours. A transaction is terminated and rolled back automatically after 24 hours.
A transaction times out if no calls use its transaction ID in three minutes. If a transaction times out before it's committed, it's rolled back automatically.
Author And Source
この問題について(Aurora Severless Data API を使ってみての気づき), 我々は、より多くの情報をここで見つけました https://qiita.com/speaktech/items/f67bc8d6d476ba61a88e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .