> ## 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 S3

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

export const PLATFORM_0 = "S3 CSV"

export const DATA_TYPE_0 = "file columns"

export const COLUMN_HEADER_0 = "CSV Column Example"

export const PROPERTIES_DESCRIPTION_0 = "Event properties as JSON string"

## 概要

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

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

***

## 要件

### OneSignal

* **カスタムイベント**機能が有効になっている（現在ベータ版 - `support@onesignal.com`にお問い合わせください）

### Amazon S3

* S3バケットアクセスを持つ**AWSアカウント**
* ロールとポリシーを作成するための**IAM権限**
* OneSignal要件に従ってフォーマットされたイベントデータを含む**CSVファイル**
* `.csv`拡張子を持つ**UTF-8エンコード**されたカンマ区切りファイル

***

## セットアップ

### イベントCSVファイルを準備する

S3バケットには、OneSignalが処理できるイベントデータを含む適切にフォーマットされたCSVファイルが含まれている必要があります：

**ファイル形式要件：**

* `.csv`ファイル拡張子を持つ非圧縮、UTF-8エンコード、カンマ区切りCSV
* ヘッダー行を含める（OneSignalはヘッダーをイベントフィールド名として使用します）
* null値は文字列`#N/A`で表します
* カンマを含む値は二重引用符で囲む必要があります
* 二重引用符を含む値は、2番目の二重引用符でエスケープする必要があります

**ファイル構造：**
OneSignalは各**フォルダーパスを一意のデータソース**として扱い、ファイル名をそのパス内のデータのバージョンと見なします。イベントを処理する際、OneSignalは常にタイムスタンプに基づいて選択されたフォルダーパス内の最新のデータを選択します。

S3のイベントデータを更新する場合、既存のファイルを置き換えるか、新しいバージョンを追加できます。OneSignalは新しいイベントを処理し、カスタムイベントAPIに送信します。

### OneSignal用のIAMロールを作成する

OneSignalは、AWSセキュリティのベストプラクティスに従って、ロールベース認証を使用してS3バケットに接続します。

<Steps>
  <Step title="IAMロールを作成する">
    OneSignalのAWSアカウントID（`341876425553`）にS3バケットへの読み取り専用アクセスを提供するIAMロールをAWSアカウントに作成します：

    ```bash theme={null}
    aws iam create-role \
      --role-name OneSignalS3DataImport \
      --assume-role-policy-document '{
        "Version": "2012-10-17",
        "Statement": [{
          "Effect": "Allow",
          "Principal": {"AWS": "arn:aws:iam::341876425553:root"},
          "Action": "sts:AssumeRole"
        }]
      }'
    ```

    <Info>
      OneSignal構成に必要になるため、返されたロールARNを保存してください。
    </Info>
  </Step>

  <Step title="S3権限を付与する">
    新しく作成したロールにS3バケットへの読み取り専用アクセスを付与します：

    ```bash theme={null}
    aws iam put-role-policy \
      --role-name OneSignalS3DataImport \
      --policy-name OneSignalS3Access \
      --policy-document '{
        "Version": "2012-10-17",
        "Statement": [{
          "Effect": "Allow",
          "Action": [
            "s3:ListBucket",
            "s3:GetObject",
            "s3:GetObjectVersion",
            "s3:GetBucketLocation"
          ],
          "Resource": [
            "arn:aws:s3:::YOUR_BUCKET_NAME",
            "arn:aws:s3:::YOUR_BUCKET_NAME/*"
          ]
        }]
      }'
    ```

    <Warning>
      `YOUR_BUCKET_NAME`を実際のS3バケット名に置き換えてください。
    </Warning>
  </Step>
</Steps>

### OneSignal S3接続を構成する

<Steps>
  <Step title="データソースに移動する">
    在 OneSignal 中，前往 **数据 > 集成**，然后点击 **添加集成**。
  </Step>

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

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

    * **Region:** S3バケットのリージョン
    * **Bucket Name:** S3バケット名
    * **Role ARN:** ステップ1のIAMロールARN
    * **Prefix:** イベントCSVファイルを含むフォルダーパス（オプション）
  </Step>

  <Step title="セキュリティハンドシェイクを完了する">
    OneSignalは一意の外部IDを生成し、次の画面に表示します。この外部IDを要求するようにIAMロールを更新します：

    ```bash theme={null}
    aws iam update-assume-role-policy \
      --role-name OneSignalS3DataImport \
      --policy-document '{
        "Version": "2012-10-17",
        "Statement": [{
          "Effect": "Allow",
          "Principal": {"AWS": "arn:aws:iam::341876425553:root"},
          "Action": "sts:AssumeRole",
          "Condition": {"StringEquals": {"sts:ExternalId": "GENERATED_EXTERNAL_ID"}}
        }]
      }'
    ```

    <Info>
      `GENERATED_EXTERNAL_ID`をOneSignalダッシュボードに表示されている外部IDに置き換えてください。
    </Info>
  </Step>

  <Step title="接続をテストする">
    OneSignalで**Test Connection**をクリックして、セットアップが正しく機能していることを確認します。
  </Step>
</Steps>

***

## CSV処理モード

OneSignalは、S3バケットからイベントCSVファイルを読み取る際に2つのモードをサポートしています：

### 最新（デフォルト）

OneSignalは、構成されたS3プレフィックスとフォルダーグループ内の最新のファイルのみを処理します。単一のファイルは、処理するイベントの完全なセットとして解釈されます。このモードは次の場合に適しています：

* 単一のファイルに期間のすべてのイベントが含まれている場合
* 更新されたイベントデータを含む新しいバージョンのファイルが時間の経過とともに追加される場合
* イベントの完全なバッチを一度に処理したい場合

### すべてをマージ

OneSignalは、構成されたS3プレフィックスとフォルダーグループ内のすべてのファイルを取得し、イベントを処理する前に単一のデータセットにマージします。このモードは次の場合に役立ちます：

* イベントデータが複数のファイルに分割されている場合
* 複数のソースからイベントを処理したい場合
* 新しいイベントを含むファイルが段階的に追加されている場合

<Warning>
  すべてをマージモードでは、すべてのCSVファイルが完全に同じ列名と順序を持つ必要があります。
</Warning>

***

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

接続後、CSVの列をOneSignalのカスタムイベントフィールドにマッピングする必要があります：

<Steps>
  <Step title="検出されたフィールドを確認する">
    OneSignalは、イベントCSVファイルから列を自動的に検出し、マッピングを提案します。
  </Step>

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

    * **Event Name**（必須）：イベントの名前/タイプ
    * **External ID**（必須）：外部ユーザーID
    * **Event Timestamp**（オプション）：イベントが発生した時刻。指定しない場合は現在と見なされます。
  </Step>

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

***

### 事件数据映射

将您的 {PLATFORM_0} {DATA_TYPE_0} 映射到 OneSignal 的自定义事件格式：

| OneSignal 字段  | {COLUMN_HEADER_0} | 描述                         | 必需 |
| ------------- | ----------------- | -------------------------- | -- |
| `name`        | `event_name`      | 事件标识符                      | 是  |
| `external_id` | `user_id`         | 用户标识符                      | 是  |
| `timestamp`   | `event_timestamp` | 事件发生时间                     | 否  |
| `properties`  | `event_data`      | {PROPERTIES_DESCRIPTION_0} | 否  |

***

## 制限事項

* **SQLクエリ：** S3ソースは、イベントデータに対するSQLクエリや高度な変換をサポートしていません
* **ファイルサイズ：** 個々のCSVファイルは1GBを超えないようにしてください
* **更新頻度：** 最小同期間隔は15分です
* **ファイルタイプ：** CSVファイルのみがサポートされています（JSON、Parquetなどはサポートされていません）

***

## FAQ

### CSVファイルにフォーマットエラーがある場合はどうなりますか？

OneSignalは、不正な形式の行をスキップし、統合ダッシュボードに詳細なエラーログを提供します。一般的な問題には、必須列の欠落、無効なタイムスタンプ形式、および列数の不一致が含まれます。

### OneSignalはどのくらいの頻度で新しいファイルをチェックしますか？

OneSignalは、構成された同期頻度に基づいてS3バケットをチェックし、最小間隔は15分です。

***

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

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