Amazon Web Services ブログ

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

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

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

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

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

 

Lambda Function Integration

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

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

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

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

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

 

Load Data From S3

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

Amazon 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 Amazon S3 Bucketをご覧ください。

 

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

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

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

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