HAQM Web Services ブログ

HAQM Auroraアップデート – ストアードプロシジャーからLambda Functionの呼び出しと S3からのデータ読み込みに対応 –

多くの AWS serviceはそれ自体だけでもよく動作しますが、組み合わせることで更に良くなります!この大事な我々のモデルは、各サービスを選択し学習を行ない、経験を積み時間とともに他のサービスへ拡張していく事が可能です。一方で、サービスを組み合わせて使う機会は常に存在し、お客様の要望に基づきロードマップへいくつも反映しています。

本日、MySQL互換のリレーショナルデータベースである、HAQM Auroraの2つの新機能をご紹介します。

  • Lambda Function Invocation – HAQM Auroraデータベース 内のストアードプロシジャーからAWS Lambdaのfunctionを呼び出すことが可能になりました
  • Load Data From S3 –  HAQM Simple Storage Service (S3)のバケットに保存されたデータをHAQM Auroraデータベースにロード可能になりました

これら2つの新機能はHAQM Auroraと他のAWSサービスを連携するためにHAQM Auroraに適切な権限を付与する必要があります。IAM Policyや IAM Roleを作成し、作成したRoleをHAQM Auroraデータベースクラスタへ付与します。詳細な手順はドキュメントをご覧ください。

 

Lambda Function Integration

ハイレベルな機能を実現するために、リレーショナルデータベースではトリガーやストアードプロシジャーを組み合わせて利用します。トリガーは特定のテーブルへの操作の前後で実行することが出来ます。例えば、HAQM AuroraはMySQLと互換性があるため、INSERT, UPDATE, DELETE操作へのトリガーをサポートしています。ストアードプロシジャーは実行されたトリガーへのレスポンスの中で実行可能なスクリプトです。

Lambda functionを呼び出すストアードプロシジャーを利用可能になりました。この拡張された機能を使うことで、Auroraデータベースと他のAWSサービスを結びつけることが出来るようになりました。HAQM Simple Email Service (SES)を利用してemailを送信したり、 HAQM Simple Notification Service (SNS)を利用し問題の通知を行ったり、HAQM CloudWatchにメトリクスを送信したり、 HAQM DynamoDBのテーブルを更新するようなことが可能です。

その他にも、複雑なETLジョブやワークフロー、データベース内のテーブルに対する監査、パフォーマンスモニタリングや分析なども用途として考えられます。

ストアードプロシジャーからはmysql_lambda_asyncプロシジャーを呼び出す必要があります。このプロシジャーは非同期で与えられたLambda functionを実行するため、Lambda functionの完了を待たずに処理を終了します。Lambda functionには利用するAWSサービスやリソースに対する権限を付与しておく必要があります。

詳細は、 Invoking a Lambda Function from an HAQM Aurora DB Clusterをご覧ください。

 

Load Data From S3

他の形のインテグレーションとして、S3バケットに保存されたデータを直接Auroraにインポート可能になりました (今までは一度Ec2インスタンス上にダウンロードしたあとにインポートする必要がありました)。

HAQM Auroraクラスタからアクセス可能であれば、AWSのどのリージョンにデータが配置されていてもロード可能です。形式はテキストかXML形式に対応しています。

テキスト形式のデータをインポートするためには、新しい LOAD DATA FROM S3コマンドを利用します。このコマンドはMySQLのLOAD DATA INFILEとほぼ同様のオプションをサポートしています。しかし、圧縮形式のデータは現在サポートしていません。特定の行やフィールドデリミタやキャラクタセットを設定可能で、指定した行や列数を無視して取り込むことも可能です。

XML形式のデータをインポートするためには、新しいLOAD XML from S3コマンドを利用します。XMLは以下の様な形式になります。

<row column1="value1" column2="value2" />
...
<row column1="value1" column2="value2" />

<row>
  <column1>value1</column1>
  <column2>value2</column2>
</row>
...

また

<row>
  <field name="column1">value1</field>
  <field name="column2">value2</field>
</row>
...

の形式に対応しています。

詳細は、Loading Data Into a DB Cluster From Text Files in an HAQM S3 Bucketをご覧ください。

 

すぐにご利用いただけます

これらの新機能は本日からご利用頂けます!

それぞれの機能には追加で料金はかかりませんが、通常のHAQM Aurora, Lambda, S3のご利用料金が発生します。

Jeff;  (翻訳は星野が担当しました。原文はこちら)