CData API Server を使って Power Automate で Amazon Athena タスクを自動化
Microsoft Power Automate は、クラウドベースのローコード/ノーコードプラットフォームで、さまざまなアプリケーションやサービス間で反復タスクの自動化やビジネスプロセスの効率化を簡単に実現できます。
CData API Server は、オンプレミスやクラウドを問わず、複数のソースやアプリケーションからデータへのアクセスを可能にし、Power Automate の機能を拡張します。API Server の Amazon Athena コネクタ(または 250 種類以上の他のコネクタ)を使用すると、OData や Swagger などの業界標準のデータアクセスプロトコルを使用して、Power Automate でアクションや複雑なワークフローをネイティブに作成し、トリガーできます。
この記事では、Power Automate と CData API Server をセットアップし、Amazon Athena テーブルのリードが特定の条件に一致したときにメールや通知を送信するシンプルなトリガーを作成します。
それでは始めましょう!
前提条件
- CData API Server: こちらから無料トライアルをダウンロードできます。
- Microsoft Power Automate: こちらから無料トライアルにサインアップできます。
- データにアクセスできるアクティブな Amazon Athena アカウント。
概要
以下の手順で進めていきます。
- CData API Server をインストールし、Amazon Athena への接続を設定して、API Server 内で Amazon Athena のデータ の OData API エンドポイントを作成します。
- これらのエンドポイントを Power Automate で使用し、Amazon Athena テーブルから特定の条件が満たされたときにトリガーに基づいて自動的にメールを送信するフローを構築します。
Amazon Athena データ連携について
CData は、Amazon Athena のライブデータにアクセスし、統合するための最も簡単な方法を提供します。お客様は CData の接続機能を以下の目的で使用しています:
- IAM 認証情報、アクセスキー、インスタンスプロファイルなど、さまざまな方法で安全に認証できます。多様なセキュリティニーズに対応し、認証プロセスを簡素化します。
- 詳細なエラーメッセージにより、セットアップを効率化し、問題を迅速に解決できます。
- サーバーサイドでのクエリ実行により、パフォーマンスを向上させ、クライアントリソースへの負荷を最小限に抑えます。
ユーザーは、Tableau、Power BI、Excel などの分析ツールと Athena を統合し、お気に入りのツールから詳細な分析を行うことができます。
CData を使用した Amazon Athena のユニークなユースケースについては、ブログ記事をご覧ください:https://jp.cdata.com/blog/amazon-athena-use-cases
はじめに
ステップ 1:API Server のインストールと Amazon Athena への接続設定
1.1 API Server のインストール
まだインストールしていない場合は、CData API Server ページからお使いの OS 用のインストーラーをダウンロードしてください。インストールウィザードに従ってセットアップを完了します。
インストールが完了したら、以下の方法でサーバーを起動できます。
- Windows: CData API Server はデフォルトでサービスとして実行されます。サービスが実行されていることを確認し、ブラウザで http://localhost:8080/ を開いて API Server 管理コンソールにアクセスします。
- Linux/Mac: サーバーを手動で実行するか、サービスとして実行できます。手動で起動するには、インストールディレクトリに移動して java -jar apiserver.jar を実行します。
- また、root 権限で service.sh を実行して、API Server を Linux システムサービスとしてセットアップすることもできます。
1.2 CORS の有効化
Microsoft Power Automate と CData API Server が異なるドメインでホストされている場合、シームレスなクロスドメイン通信を可能にするために CORS(Cross-Origin Resource Sharing)を有効にする必要があります。API Server で CORS を有効にするには:
- 「Settings」に移動し、 アイコンをクリックして CORS 設定を編集します。
- Cross-Origin Resource Sharing (CORS) を有効にします。
- Allow all domains without '*' を有効にして、すべてのオリジンを許可します。
- Access-Control-Allow-Origin に Amazon Athena のオリジンドメインを入力するか、* を使用してすべてのドメインを許可します(パブリック API に適しています)。
- Access-Control-Allow-Credentials を有効にして、Cookie と認証ヘッダーを許可します。
- Access-Control-Allow-Methods に GET, PUT, POST, OPTIONS を入力します。
- Access-Control-Allow-Headers に Authorization, Content-Type を入力します。
- Access-Control-Max-Age(デフォルト:3600 秒)を設定して、プリフライトリクエストをキャッシュします。
- 「Save」をクリックします。
1.3 API Server で Amazon Athena 接続を追加
- 「Settings」に移動し、右上の Add Connection をクリックします。
- Amazon Athena を選択します。表示されない場合は、Only Installed をオフにしてすべてのコネクタを表示します。
- Install Connector をクリックして自動インストールします。手動セットアップの場合は、Manual Install を選択してダウンロードした ZIP ファイルをアップロードします。
- インストールが完了したら、Amazon Athena を再度クリックして接続設定を開き、以下の詳細を使用して設定します。
- DataSource:接続するAmazon Athena データソース。
- Database:接続するAmazon Athena データベース。
- AWSRegion:Amazon Athena データがホストされているリージョン。
- S3StagingDirectory:クエリの結果を保存するS3 フォルダ。
- IAM コンソールにサインインします。
- ナビゲーションペインでユーザーを選択します。
- ユーザーのアクセスキーを作成または管理するには、ユーザーを選択してからセキュリティ認証情報タブに移動します。
- ルートアカウントの認証情報を使用してAWS 管理コンソールにサインインします。
- アカウント名または番号を選択します。
- 表示されたメニューでMy Security Credentials を選択します。
- ルートアカウントのアクセスキーを管理または作成するには、Continue to Security Credentials をクリックし、[Access Keys]セクションを展開します。
- 「Save & Test」をクリックして接続設定を検証し完了します。
Amazon Athena 接続プロパティの取得・設定方法
それでは、早速Athena に接続していきましょう。
データに接続するには、以下の接続パラメータを指定します。
Database またはDataSource が設定されていない場合、CData 製品はAmazon Athena の利用可能なデータソースからすべてのデータベースのリスト化を試みます。そのため、両方のプロパティを設定することでCData 製品のパフォーマンスが向上します。
Amazon Athena の認証設定
CData 製品は幅広い認証オプションに対応しています。詳しくはヘルプドキュメントの「はじめに」を参照してみてください。
AWS キーを取得
IAM ユーザーの認証情報を取得するには、以下のステップお試しください。
AWS ルートアカウントの資格情報を取得するには、以下のステップをお試しください。
その他の認証オプションについては、ヘルプドキュメントの「Amazon Athena への認証」を参照してください。
1.4 ユーザーの追加と設定
作成した OData エンドポイントへの安全なアクセスを許可するために、CData API Server でユーザーを作成・設定します。各ユーザーには認証情報とロールベースのアクセス制御があり、適切なロールを持つ承認されたユーザーのみが接続されたデータをクエリできるようになります。
- ナビゲーションペインから「Users」に移動し、右上の Add User をクリックします。
- Username を入力し、ユーザーの安全な Password を設定します。
- Role を選択します:
- Admin: 設定や接続を含むすべての機能へのフルアクセス。
- Query: API エンドポイント経由のデータアクセスに限定(Power Automate での使用に適しています)。
- (オプション)レート制限を設定:
- Requests Per Hour: 1 時間あたりの許可される API コール数(デフォルト:1000)。
- Max Concurrent Requests: 許可される並列 API リクエスト数(デフォルト:10)。
- ユーザーの Privileges を定義:
- GET: データの取得を許可。
- POST: 新しいレコードの作成を許可。
- PUT, MERGE, PATCH: 既存レコードの更新を許可。
- DELETE: レコードの削除を許可。
- 「Add User」をクリックしてユーザーアカウントを保存し、有効化します。
ユーザーを追加すると、Authtoken が自動的に生成されます。このトークンは、パスワードの代わりに安全な認証方法として API リクエストで使用できます。
また、Authtoken を更新したり、無効にしたり、ユーザー設定で Token Expiration オプションを有効にして有効期限ルール(例:有効期限までの日数)を設定することもできます。
1.5 エンドポイント用のテーブルを追加
Amazon Athena のデータを OData 経由で Power Automate で利用できるようにするには、API Server を通じて目的のテーブルを公開する必要があります。手順は以下のとおりです。
- CData API Server で、左側のナビゲーションから「API」に移動し、右上の Add Table をクリックします。
- 先ほど設定した Amazon Athena 接続を選択し、「Next」をクリックします。
- Tables セクションを展開して、利用可能なエンティティとスキーマを参照します。個々のテーブルを選択するか、上部の TABLE NAME チェックボックスをクリックしてすべてを選択します。次に「Confirm」をクリックします。
1.6 Power Automate でエンドポイントにアクセス
API の設定が完了したので、Power Automate から OData エンドポイントに接続してタスクを自動化できます。以下は使用できる OData エンドポイントの URL 形式です。
| エンドポイント | URL | |
|---|---|---|
| エンティティ一覧 | http://address:port/api.rsc/ | |
| テーブルメタデータ(例:albums) | http://address:port/api.rsc/albums/$metadata?@json | |
| テーブルデータ(例:albums) | http://address:port/api.rsc/albums |
これらの OData エンドポイントは、URL を使用して Power Automate で直接利用できるようになりました。Power Automate は OData をサポートしているため、ワークフローの自動化、アクションのトリガー、Amazon Athena からのライブデータを自動化プロセスに統合することが簡単にできます。
CData API Server は完全な OData フィルタリング機能をサポートしています。カスタムクエリやフィルターされたビジュアライゼーションには、$select、$filter、$orderby、$top、$skip などの標準 OData クエリパラメータをリクエストに追加できます。
ステップ 2:Power Automate でメールトリガーを自動化
CData API Server が起動し、Amazon Athena データから利用可能な OData エンドポイントができました。次に、条件に基づいてメールトリガーを自動化する Power Automate フローを構築しましょう。
この例では、Amazon Athena の Opportunity テーブルからリードと商談データを読み取るフローを構築します。このフローは ExpectedRevenue カラムで最も高い値を持つリードを特定し、そのリードの詳細を含むメールを自動的に送信します。
ここでは、Windows 11 上の Outlook アプリと Power Automate Desktop を使用します。Windows マシンに Outlook がインストールされていない場合は、Microsoft 365 公式サイトからダウンロードするか、Microsoft Store からインストールできます。
2.1 API OData エンドポイントのフィルタリング
CData API Server は OData URL フィルター (OData ABNF) を完全にサポートしているため、URL でテーブル (リソース) を直接フィルターして、フローに取り込む前に結果を制限・ソートできます。これにより、読み込み時間が短縮され、効率が向上します。サポートされているフィルターオプションの完全なリストは こちらで確認できます。
この例では、フィルターされた URL は次のようになります: http://localhost:8080/api.rsc/public_Opportunity?$top=1&$orderby=ExpectedRevenue desc
このようにエンドポイント URL を構築できます。各部分の意味は以下のとおりです:
| URL パート | 説明 |
|---|---|
| http://localhost:8080 | CData API Server がホストされているホスト名とポートを含むベース URL |
| /api.rsc/ | CData が API リソースを公開するために使用するデフォルトのエンドポイントパスプレフィックス |
| public_Opportunity | クエリするテーブル名(リソース)— この場合は public_Opportunity テーブル |
| ? | フィルタリングやソートなどに使用されるクエリ文字列パラメータの開始を示す |
| $top=1 | フィルターされた結果セットから最初のレコードのみを返す |
| $orderby=ExpectedRevenue desc | 結果を ExpectedRevenue カラムで降順にソート |
2.2 Power Automate Desktop でフローを構築
- Power Automate Desktop を起動し、左上の New をクリックして新しいフローを追加します。
-
フローに名前を付け(例:Email-Trigger)、「Create」をクリックします。
- フローデザイナーダッシュボードで、Actions ペインの下から Region を検索し、ダブルクリックして追加します。わかりやすい名前を付けて「Save」をクリックします。
-
Invoke Web Service を検索し、ダブルクリックして追加して、以下を設定します:
- URL: 先ほど作成したフィルター済み OData URL を入力します。
- Method: GET
- Accept: application/json
- Content-Type: application/json
- Save response: Get text into variable (for web pages)
- 「Save」をクリックします。
-
Convert JSON to Custom Object を検索し、ダブルクリックして追加します。
- 青い {x} アイコンをクリックし、変数 %WebServiceResponse% を選択します。
- 「Save」をクリックします。
- Outlook を検索し、Launch Outlook を選択します。ダブルクリックしてフローに追加し、「Save」をクリックします。
-
Outlook を検索し、Send email message through Outlook を選択します。ダブルクリックして追加し、以下を設定します:
- Outlook instance: %OutlookInstance%
- Account: Outlook メールアドレスを入力します。
- Send email message from: Account
- To: 受信者のメールアドレスを入力します。
- Subject: メールの件名を追加します(例:New Opportunity with Highest Expected Revenue)
-
Body: 以下のシンプルな HTML コードを貼り付けます。ラベルとテーブル名は自分のものに置き換えてください:
Top Lead Details: Account ID: %JsonAsCustomObject['value'][0]['AccountId']% Name: %JsonAsCustomObject['value'][0]['Name']% Expected Revenue: %JsonAsCustomObject['value'][0]['ExpectedRevenue']% Close Date: %JsonAsCustomObject['value'][0]['CloseDate']% - Body is HTML: このオプションをオンにします。
- 「Save」をクリックします。
- Outlook を検索し、Close Outlook を選択します。ダブルクリックしてフローに追加し、「Save」をクリックします。
- End region を検索し、ダブルクリックしてフローに追加します。
-
最終的なフローは次のようになります:
-
上部の「Run」をクリックしてフローを開始します。プロセスは自動的に Outlook を開き、フローで指定された受信者にメールを送信します。メールは次のようになります:
2.3 フローのスケジュールと改善
これで、最も高い ExpectedRevenue を持つ新しいリードが見つかったときにメールを送信するフローができました。Power Automate Desktop には組み込みのスケジュール機能がないため、Windows タスク スケジューラまたは Power Automate(クラウド)を使用して、設定した間隔で継続的に実行する必要があります。
重複メールを避けるには、Power Automate の Write text to file アクションを使用して Id フィールドをファイル(例:lastLead.txt)に保存します。実行するたびに、Read text from file アクションを使用して現在の Id と比較します。一致した場合はメールをスキップし、新しいリードに対してのみアラートが送信されるようにします。
このフローは始まりにすぎません。CRM レコードの更新、高価値リードの Excel へのログ記録、リアルタイム Slack アラートの送信など、リード管理プロセスのさらに多くのステップを自動化するように拡張できます。
CData API Server を 30 日間無料でお試しください
ローコード/ノーコードプラットフォームで OData REST API を構築し、ライブデータとのシームレスな統合を実現しましょう。CData API Server を 30 日間無料でお試しいただき、Amazon Athena(または 250 種類以上の他のコネクタ)からのライブデータを使用して Power Automate でタスクを自動化する方法を体験してください。
こちらから無料トライアルを開始できます。