> ## 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의 Custom Events 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 Query Results Bucket**
* 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 Query Results Bucket** URL
    * **AWS Region**
    * **Athena Workgroup**(기본값: "primary")
  </Step>
</Steps>

### OneSignal Athena 연결 구성

<Steps>
  <Step title="통합으로 이동">
    OneSignal에서 **Data > Integrations**으로 이동하여 **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="연결 테스트">
    **연결 테스트**를 클릭하여 OneSignal이 Athena 인스턴스에 액세스하고 쿼리를 실행할 수 있는지 확인합니다.
  </Step>
</Steps>

### 대안: 역할 기반 액세스

보안 강화를 위해 액세스 키 대신 IAM 역할을 사용할 수 있습니다:

<Steps>
  <Step title="역할 기반 액세스 활성화">
    Athena 연결 설정에서 **역할 사용**을 선택하고 액세스 키를 비워 둡니다.
  </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, 이메일 또는 전화번호 열
    * **Event Timestamp**: 이벤트가 발생한 시간(선택 사항)
  </Step>

  <Step title="이벤트 페이로드 데이터 매핑">
    추가 열을 이벤트 페이로드 속성에 매핑합니다:

    * 사용자 지정 이벤트 속성(product\_id, price, category 등)
    * 컨텍스트 데이터(source, campaign 등)
    * 행동 지표(value, quantity 등)
  </Step>

  <Step title="동기화 설정 구성">
    이벤트 처리 빈도 및 전달 기본 설정을 설정합니다.
  </Step>
</Steps>

***

### 이벤트 데이터 매핑

{PLATFORM_0} {DATA_TYPE_0}를 OneSignal의 사용자 지정 이벤트 형식에 매핑합니다:

| OneSignal 필드  | {COLUMN_HEADER_0} | 설명                         | 필수  |
| ------------- | ----------------- | -------------------------- | --- |
| `name`        | `event_name`      | 이벤트 식별자                    | Yes |
| `external_id` | `user_id`         | 사용자 식별자                    | Yes |
| `timestamp`   | `event_timestamp` | 이벤트가 발생한 시간                | 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`으로 지원팀에 문의하거나 인앱 채팅을 사용하세요.
