> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.onesignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Amazon Athena

> Amazon AthenaからOneSignalにカスタムイベントを同期して、ユーザーの行動に基づいて自動化されたJourneysとパーソナライズされたメッセージングキャンペーンをトリガーします。

export const PLATFORM_0 = "Athena"

export const DATA_TYPE_0 = "table columns"

export const COLUMN_HEADER_0 = "Athena Column"

export const PROPERTIES_DESCRIPTION_0 = "Event metadata from S3 data lake"

## 概要

OneSignal + Amazon Athena統合により、AthenaデータレイクからOneSignalのカスタムイベントAPIに直接カスタムイベントを自動的に同期できます。これにより、AWSデータインフラストラクチャに保存された実際のユーザーの行動に基づいて、自動化されたJourneysとパーソナライズされたメッセージングキャンペーンをトリガーできます。

購入、製品表示、サブスクリプションの変更、またはカスタムユーザーアクションなどのイベントを同期して、プッシュ通知、メール、アプリ内メッセージ、SMSを介してオンボーディングシーケンス、再エンゲージメントキャンペーン、トランザクションメッセージ、ターゲットを絞ったプロモーションを自動的にトリガーできます。

***

## 要件

* Access to [Event Streams](/docs/en/event-streams) for outbound message events (Plan limitations and overages apply)
* Access to [Custom Events](/docs/en/custom-events) for inbound event syncing (Plan limitations and overages apply)
* [Updated Account Plan](https://onesignal.com/pricing) (not available on free apps)

### Amazon Athena

* Athenaアクセス権を持つ**AWSアカウント**
* 設定された**Athena Workgroup**（デフォルト：「primary」）
* Athenaクエリ出力用の**S3クエリ結果バケット**
* Athena、S3、AWS Glueアクセス用の**IAM権限**
* S3に保存され、AWS Glueでカタログ化された**イベントデータ**

***

## セットアップ

### AWS権限の設定

OneSignalは、Athenaを介してイベントデータをクエリするための特定の権限が必要です。以下の権限を含むIAMポリシーを作成します：

<Steps>
  <Step title="IAMポリシーを作成する">
    以下の権限を含むIAMポリシーを作成します：

    ```json theme={null}
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "athena:StartQueryExecution",
                    "athena:GetQueryExecution",
                    "athena:GetQueryResultsStream",
                    "athena:GetQueryResults",
                    "athena:CreatePreparedStatement",
                    "athena:DeletePreparedStatement",
                    "glue:GetTable",
                    "glue:GetTables",
                    "glue:GetDatabase",
                    "glue:GetDatabases",
                    "s3:PutObject",
                    "s3:GetObject",
                    "s3:ListBucket",
                    "s3:GetBucketLocation"
                ],
                "Resource": [
                    "arn:aws:glue:<region>:<aws-account-id>:table/<database>/*",
                    "arn:aws:glue:<region>:<aws-account-id>:database/<database>",
                    "arn:aws:glue:<region>:<aws-account-id>:catalog",
                    "arn:aws:athena:<region>:<aws-account-id>:workgroup/<workgroup>",
                    "arn:aws:s3:::<query-results-bucket>",
                    "arn:aws:s3:::<query-results-bucket>/*",
                    "arn:aws:s3:::<event-data-bucket>",
                    "arn:aws:s3:::<event-data-bucket>/*"
                ]
            }
        ]
    }
    ```

    <Info>
      プレースホルダーを実際のAWSリージョン、アカウントID、データベース名、ワークグループ、バケット名に置き換えてください。
    </Info>
  </Step>

  <Step title="IAMユーザーまたはロールを作成する">
    OneSignal用のIAMユーザーを作成し、上記で作成したポリシーをアタッチするか、ロールベースのアクセスを使用する準備をします。
  </Step>

  <Step title="接続の詳細をメモする">
    以下の情報を収集します：

    * **AWS Access Key ID**と**Secret Access Key**（IAMユーザーを使用する場合）
    * **S3クエリ結果バケット**のURL
    * **AWSリージョン**
    * **Athena Workgroup**（デフォルト：「primary」）
  </Step>
</Steps>

### OneSignal Athena接続を設定する

<Steps>
  <Step title="統合に移動する">
    In OneSignal, go to **Data > Integrations** and click **Add Integration**.
  </Step>

  <Step title="Amazon Athenaを選択する">
    利用可能な統合のリストから**Amazon Athena**を選択します。
  </Step>

  <Step title="接続の詳細を入力する">
    Athena接続情報を提供します：

    * **AWS Access Key ID**：IAMユーザーのアクセスキー
    * **AWS Secret Access Key**：IAMユーザーのシークレットキー
    * **AWS Region**：Athenaリージョン
    * **S3 Query Results Bucket**：クエリ出力のURL
    * **Athena Workgroup**：ワークグループ名
  </Step>

  <Step title="接続をテストする">
    **Test Connection**をクリックして、OneSignalがAthenaインスタンスにアクセスしてクエリを実行できることを確認します。
  </Step>
</Steps>

### 代替：ロールベースのアクセス

セキュリティを強化するために、アクセスキーの代わりにIAMロールを使用できます：

<Steps>
  <Step title="ロールベースのアクセスを有効にする">
    Athena接続設定で、**Use Role**をチェックし、アクセスキーを空白のままにします。
  </Step>

  <Step title="IAMロールを作成する">
    AWSコンソールで、以下を使用してIAMロールを作成します：

    * **Trusted Entity**：Another AWS Account
    * **Account ID**：`341876425553`（OneSignalのAWSアカウント）
    * **External ID**：OneSignalに表示されているID（初回接続試行後に表示されます）
    * **Permissions**：上記で作成したIAMポリシー
  </Step>

  <Step title="接続を完了する">
    OneSignalでRole ARNを入力し、接続をテストします。
  </Step>
</Steps>

***

## イベントデータマッピング

接続したら、AthenaテーブルをOneSignalカスタムイベントフィールドにマッピングする必要があります：

<Steps>
  <Step title="イベントテーブルを選択する">
    OneSignalに同期したいイベントデータを含むテーブルまたはビューを選択します。
  </Step>

  <Step title="必須のイベントフィールドをマッピングする">
    カスタムイベントに必須のフィールドをマッピングします：

    * **Event Name**：イベントタイプを含む列（例：「purchase」、「signup」）
    * **User Identifier**：External User ID、Email、またはPhone Number列
    * **Event Timestamp**：イベントが発生した時刻（オプション）
  </Step>

  <Step title="イベントペイロードデータをマッピングする">
    追加の列をイベントペイロードプロパティにマッピングします：

    * カスタムイベントプロパティ（product\_id、price、categoryなど）
    * コンテキストデータ（source、campaignなど）
    * 行動メトリクス（value、quantityなど）
  </Step>

  <Step title="同期設定を構成する">
    イベント処理頻度と配信設定を設定します。
  </Step>
</Steps>

***

### Event data mapping

Map your {PLATFORM_0} {DATA_TYPE_0} to OneSignal's custom events format:

| OneSignal Field | {COLUMN_HEADER_0} | Description                | Required |
| --------------- | ----------------- | -------------------------- | -------- |
| `name`          | `event_name`      | Event identifier           | Yes      |
| `external_id`   | `user_id`         | User identifier            | Yes      |
| `timestamp`     | `event_timestamp` | When event occurred        | No       |
| `properties`    | `event_data`      | {PROPERTIES_DESCRIPTION_0} | No       |

***

## 制限事項

* **クエリパフォーマンス**：Athenaはクエリとスキャンされたデータごとに課金されます - イベントテーブルを最適化してください
* **S3依存関係**：適切に設定されたS3バケットとGlueカタログが必要です
* **データの鮮度**：イベント同期頻度は、S3データの更新頻度に依存します

***

## FAQ

### Athenaクエリが失敗した場合はどうなりますか？

OneSignalはクエリエラーをログに記録し、失敗したクエリを再試行します。永続的な失敗が発生する場合は、IAM権限とS3バケットアクセスを確認してください。

### OneSignalはどのくらいの頻度でイベントを同期しますか？

OneSignalは、設定された同期頻度に基づいて新しいイベントをチェックします。最小間隔は15分です。

***

## サポートが必要ですか？

Athena統合のセットアップについてサポートが必要な場合は、`support@onesignal.com`にお問い合わせいただくか、アプリ内チャットをご利用ください。
