Skip to content

파일 스토리지 통합

이 페이지에서는 클라우드 데이터 수집을 설정하여 Amazon S3, Google Cloud Storage 또는 Azure Blob Storage에서 Braze로 데이터를 동기화하는 방법에 대해 설명합니다.

작동 방식

Cloud Data Ingestion(CDI)을 사용하여 클라우드 계정의 하나 이상의 스토리지 버킷을 Braze와 직접 통합할 수 있습니다. 버킷에 새 파일을 추가하면 클라우드 공급자가 알림을 게시하고, Braze Cloud Data Ingestion이 데이터를 동기화합니다.

알림 메커니즘은 공급자에 따라 다릅니다:

  • Amazon S3: 새 파일이 S3에 게시되면 Amazon Simple Queue Service(SQS) 대기줄에 메시지가 게시되고, Braze가 해당 메시지를 소비하여 새 파일을 수집합니다.
  • Google Cloud Storage(GCS): 버킷에 새 파일이 확정되면 GCS가 Pub/Sub 주제에 OBJECT_FINALIZE 알림을 게시합니다. Braze는 Pub/Sub 구독에서 해당 알림을 소비하여 새 파일을 수집합니다.
  • Azure Blob Storage: 컨테이너에 새 파일이 생성되면 Azure Event Grid의 이벤트 구독이 Azure Storage 대기줄에 Blob Created 이벤트를 게시합니다. Braze는 대기줄에서 해당 메시지를 읽어 새 파일을 수집합니다.

Cloud Data Ingestion은 다음을 지원합니다:

  • JSON 파일
  • CSV 파일
  • Parquet 파일
  • 속성, 커스텀 이벤트, 구매 이벤트, 사용자 삭제 및 카탈로그 데이터

클라우드 데이터 수집 설정하기

설정 단계는 파일 스토리지 제공업체에 따라 다릅니다. 제공업체에 해당하는 탭을 선택한 다음 이어지는 섹션에서 공통 구성을 완료합니다.

통합에는 다음 리소스가 필요합니다:

  • 데이터 저장을 위한 S3 버킷
  • 새 파일 알림을 위한 SQS 대기줄
  • Braze 액세스를 위한 IAM 역할

AWS 정의

용어 정의
Amazon Resource Name(ARN) ARN은 AWS 리소스의 고유 식별자입니다.
Identity and Access Management(IAM) IAM은 AWS 리소스에 대한 액세스를 안전하게 제어할 수 있는 웹 서비스입니다. 이 튜토리얼에서는 IAM 정책을 생성하고 IAM 역할에 할당하여 S3 버킷을 Braze 클라우드 데이터 수집과 통합합니다.
Amazon Simple Queue Service(SQS) SQS는 분산 소프트웨어 시스템과 컴포넌트를 통합할 수 있는 호스팅 대기줄입니다.

AWS에서 클라우드 데이터 수집 설정하기

1단계: 소스 버킷 생성

AWS 계정에서 기본 설정으로 범용 S3 버킷을 생성합니다. S3 버킷은 폴더가 고유한 한 여러 동기화에서 재사용할 수 있습니다.

기본 설정은 다음과 같습니다:

  • ACL 비활성화
  • 모든 퍼블릭 액세스 차단
  • 버킷 버전 관리 비활성화
  • SSE-S3 암호화
    • SSE-S3는 유일하게 지원되는 서버 측 암호화 유형입니다. Amazon KMS 암호화는 지원되지 않습니다.

버킷을 생성한 리전을 기록해 두세요. 다음 단계에서 동일한 리전에 SQS 대기줄을 생성합니다.

2단계: SQS 대기줄 생성

생성한 버킷에 객체가 추가되는 시점을 추적하기 위해 SQS 대기줄을 생성합니다. 지금은 기본 구성 설정을 사용합니다.

SQS 대기줄은 전역적으로 고유해야 합니다(예: CDI 동기화에 하나만 사용할 수 있으며 다른 워크스페이스에서 재사용할 수 없습니다).

SQS 대기줄의 ARN과 URL을 기록해 두세요. 이 구성 과정에서 자주 필요합니다.

대기줄에 액세스할 수 있는 사용자를 정의하는 예시 JSON 객체와 함께 "Advanced"를 선택하는 화면.

3단계: 액세스 정책 설정

액세스 정책을 설정하려면 Advanced options를 선택합니다.

대기줄의 액세스 정책에 다음 구문을 추가합니다. YOUR-BUCKET-NAME-HERE를 버킷 이름으로, YOUR-SQS-ARN을 SQS 대기줄 ARN으로, YOUR-AWS-ACCOUNT-ID를 AWS 계정 ID로 바꿔야 합니다:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
  "Sid": "braze-cdi-s3-sqs-publish",
  "Effect": "Allow",
  "Principal": {
    "Service": "s3.amazonaws.com"
  },
  "Action": "SQS:SendMessage",
  "Resource": "YOUR-SQS-ARN",
  "Condition": {
    "StringEquals": {
      "aws:SourceAccount": "YOUR-AWS-ACCOUNT-ID"
    },
    "ArnLike": {
      "aws:SourceArn": "arn:aws:s3:::YOUR-BUCKET-NAME-HERE"
    }
  }
}

4단계: S3 버킷에 이벤트 알림 추가

  1. 1단계에서 생성한 버킷에서 Properties > Event notifications로 이동합니다.
  2. 구성에 이름을 지정합니다. 선택적으로 Braze에서 파일의 하위 집합만 수집하려는 경우 접두사 또는 접미사를 지정할 수 있습니다.
  3. Destination에서 SQS queue를 선택하고 2단계에서 생성한 SQS의 ARN을 입력합니다.

5단계: IAM 정책 생성

Braze가 소스 버킷과 상호 작용할 수 있도록 IAM 정책을 생성합니다. 시작하려면 계정 관리자로 AWS 관리 콘솔에 로그인합니다.

  1. AWS 콘솔의 IAM 섹션으로 이동하여 탐색 바에서 Policies를 선택한 다음 Create Policy를 선택합니다.

    AWS 콘솔의 "Create policy" 버튼.

  2. JSON 탭을 열고 Policy Document 섹션에 다음 코드 스니펫을 입력합니다. YOUR-BUCKET-NAME-HERE를 버킷 이름으로, YOUR-SQS-ARN-HERE를 SQS 대기줄 이름으로 바꿔야 합니다:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": ["s3:ListBucket", "s3:GetObjectAttributes", "s3:GetObject"],
            "Resource": ["arn:aws:s3:::YOUR-BUCKET-NAME-HERE"]
        },
        {
            "Effect": "Allow",
            "Action": ["s3:ListBucket", "s3:GetObjectAttributes", "s3:GetObject"],
            "Resource": ["arn:aws:s3:::YOUR-BUCKET-NAME-HERE/*"]
        },
        {
            "Effect": "Allow",
            "Action": [
                "sqs:DeleteMessage",
                "sqs:GetQueueUrl",
                "sqs:ReceiveMessage",
                "sqs:GetQueueAttributes"
            ],
            "Resource": "YOUR-SQS-ARN-HERE"
        }
    ]
}

  1. 완료되면 Review Policy를 선택합니다.

  2. 정책에 이름과 설명을 입력한 다음 Create Policy를 선택합니다.

예시 정책 이름 "new-policy-name".

정책의 설명 필드.

6단계: IAM 역할 생성

AWS에서 설정을 완료하려면 IAM 역할을 생성하고 5단계에서 만든 IAM 정책을 연결합니다.

  1. IAM 정책을 생성한 콘솔의 동일한 IAM 섹션에서 Roles > Create Role로 이동합니다.

역할 생성 버튼.

  1. AWS에서 신뢰할 수 있는 엔터티 선택기 유형으로 Another AWS Account를 선택합니다. Braze 계정 ID를 입력합니다. Require external ID 체크박스를 선택합니다.
  2. Braze에서 데이터 설정 > 클라우드 데이터 수집 > 소스로 이동하여 데이터 소스 추가를 선택한 다음 파일 소스 섹션에서 Amazon S3를 선택합니다.
  3. 자동으로 생성된 Braze 계정 ID를 복사합니다.

소스 이름과 S3 연결 세부 정보 섹션이 표시된 "새 소스 추가" 페이지.

  1. AWS에서 계정 ID를 붙여넣고 Next를 선택합니다.

S3 "Create Role" 페이지. 이 페이지에는 역할 이름, 역할 설명, 신뢰할 수 있는 엔터티, 정책 및 권한 경계에 대한 필드가 있습니다.

  1. 4단계에서 생성한 정책을 역할에 연결합니다. 검색 바에서 정책을 검색하고 정책 옆의 체크 표시를 선택하여 연결합니다. 완료되면 Next를 선택합니다.

new-policy-name이 선택된 역할 ARN.

역할에 이름과 설명을 입력하고 Create Role을 선택합니다.

예시 역할 이름 "new-role-name".

  1. 생성한 역할의 ARN과 생성된 외부 ID를 기록해 두세요. 클라우드 데이터 수집 통합을 생성할 때 필요합니다.

Braze에서 클라우드 데이터 수집 설정하기

  1. 먼저 Braze 대시보드에서 새 소스를 생성합니다. 데이터 설정 > 클라우드 데이터 수집 > 소스로 이동하여 데이터 소스 추가를 선택한 다음 Amazon S3를 선택합니다.
  2. 소스 이름을 선택하고 AWS 설정 과정에서 얻은 정보를 입력하여 새 소스를 생성합니다. 다음을 지정합니다:
  • Role ARN
  • External ID
  • 버킷 이름
  • 리전

자격 증명(AWS 설정 및 Braze 설정)과 구성 필드가 표시된 S3 연결 세부 정보 섹션.

  1. 연결 테스트를 선택하여 Braze가 버킷에 액세스할 수 있는지 확인합니다. 테스트가 성공하면 소스에 연결을 선택합니다. 연결에 실패하면 문제를 해결하는 데 도움이 되는 오류 메시지가 표시됩니다.
  1. 다음으로 새 동기화를 생성합니다. 데이터 설정 > 클라우드 데이터 수집 > 동기화로 이동하여 데이터 동기화 생성을 선택합니다.
  1. 동기화 이름을 선택합니다. 그런 다음 활성 상태인 S3 소스를 선택하고 동기화를 위한 소스 테이블을 입력합니다. 데이터 유형을 선택하고 연결 테스트를 선택합니다.

데이터 미리보기와 함께 연결을 테스트하는 옵션.

  1. AWS 설정 과정에서 얻은 나머지 정보를 입력합니다. 다음을 지정합니다:
    • SQS URL(새 통합마다 고유해야 합니다)
    • 폴더 경로(선택 사항, 워크스페이스 내 동기화 간에 고유해야 합니다)
  2. 데이터 유형을 선택하고 연결 테스트를 선택하여 Braze가 수집 가능한 파일 목록을 확인할 수 있는지 확인합니다(파일 내 데이터가 아닌 파일 목록). 성공하면 다음: 알림을 선택합니다.
  3. 액세스 또는 권한 문제로 동기화가 중단되는 경우 알림을 받을 연락처 이메일 주소를 추가합니다. 선택적으로 사용자 수준 오류 및 동기화 성공에 대한 알림을 활성화합니다.
  4. 동기화를 생성합니다.

통합에는 다음 리소스가 필요합니다:

  • 데이터 저장을 위한 Cloud Storage 버킷
  • 새 파일 알림을 위한 Pub/Sub 토픽 및 구독
  • JSON 키를 Braze에 업로드할 서비스 계정

GCP 정의

용어 정의
Google Cloud 프로젝트 프로젝트는 모든 Google Cloud 리소스를 구성하며 고유한 프로젝트 ID와 프로젝트 번호로 식별됩니다.
Cloud Storage 버킷 버킷은 Braze에서 수집할 데이터 파일을 보관하는 컨테이너입니다.
Pub/Sub 토픽 토픽은 Cloud Storage 버킷에서 새 파일 알림을 수신하는 명명된 리소스입니다.
Pub/Sub 구독 구독은 토픽에 연결되어 메시지를 전달합니다. Braze는 풀 구독에서 새 파일 알림을 소비합니다.
서비스 계정 서비스 계정은 Braze가 버킷과 구독에 액세스하는 데 사용하는 비인간 ID입니다. JSON 키를 Braze에 업로드합니다.
IAM 역할 Identity and Access Management(IAM) 역할은 버킷과 구독에서 서비스 계정에 할당하는 권한 모음입니다.

Google Cloud에서 클라우드 데이터 수집 설정하기

1단계: Cloud Storage 버킷 생성

Google Cloud 콘솔에서 Cloud Storage > Buckets > Create로 이동합니다. 프로젝트 ID와 버킷 이름을 기록해 두세요. Braze에서 소스를 구성할 때 필요합니다. IAM으로 권한을 관리할 수 있도록 균일한 버킷 수준 액세스를 활성화하는 것을 권장합니다.

또는 gcloud로 버킷을 생성할 수 있습니다:

1
2
3
4
gcloud storage buckets create gs://YOUR-BUCKET-NAME \
  --project=YOUR-PROJECT-ID \
  --location=YOUR-REGION \
  --uniform-bucket-level-access

2단계: Pub/Sub 토픽 및 구독 생성

Google Cloud 콘솔에서 Pub/Sub > Topics > Create topic으로 이동합니다. Google이 기본 구독을 생성하도록 하거나 별도로 생성할 수 있습니다. 그런 다음 해당 토픽에 구독을 생성합니다.

또는 gcloud를 사용합니다:

1
2
3
gcloud pubsub topics create YOUR-TOPIC --project=YOUR-PROJECT-ID
gcloud pubsub subscriptions create YOUR-SUBSCRIPTION \
  --topic=YOUR-TOPIC --project=YOUR-PROJECT-ID --ack-deadline=60

구독 ID를 기록해 두세요. Braze에서 동기화를 생성할 때 구독(토픽이 아님)이 필요합니다. 구독은 풀 구독이어야 합니다.

3단계: 버킷 알림을 토픽으로 전송

먼저 Cloud Storage 서비스 에이전트에 토픽 게시 권한을 할당한 다음 OBJECT_FINALIZE에 대한 알림을 생성합니다. OBJECT_FINALIZE 이벤트는 버킷에 새 객체가 생성되거나 완료될 때마다 발생합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# Get the Cloud Storage service agent for your project
gcloud storage service-agent --project=YOUR-PROJECT-ID

# Assign it Pub/Sub Publisher on the topic
gcloud pubsub topics add-iam-policy-binding YOUR-TOPIC \
  --project=YOUR-PROJECT-ID \
  --member="serviceAccount:service-YOUR-PROJECT-NUMBER@gs-project-accounts.iam.gserviceaccount.com" \
  --role="roles/pubsub.publisher"

# Create the OBJECT_FINALIZE notification (optionally scope to a folder with --object-prefix)
gcloud storage buckets notifications create gs://YOUR-BUCKET-NAME \
  --topic=YOUR-TOPIC \
  --event-types=OBJECT_FINALIZE \
  --payload-format=json

이 명령에서 다음 자리 표시자를 바꿉니다:

  • YOUR-PROJECT-ID: Google Cloud 프로젝트 ID, 사람이 읽을 수 있는 식별자입니다(예: my-gcp-project).
  • YOUR-TOPIC: 2단계에서 생성한 Pub/Sub 토픽입니다.
  • YOUR-BUCKET-NAME: Cloud Storage 버킷 이름입니다.
  • YOUR-PROJECT-NUMBER: Cloud Storage 서비스 에이전트의 이메일 주소에 사용되는 숫자 식별자인 프로젝트 번호입니다. 프로젝트 ID와 다릅니다. Google Cloud 콘솔의 Dashboard에서 찾거나 다음 명령을 실행합니다:
1
gcloud projects describe YOUR-PROJECT-ID --format="value(projectNumber)"

4단계: 서비스 계정 생성

Google Cloud 콘솔에서 IAM & Admin > Service Accounts > Create service account로 이동합니다.

또는 gcloud를 사용합니다:

1
2
3
gcloud iam service-accounts create braze-cdi-gcs \
  --project=YOUR-PROJECT-ID \
  --display-name="Braze CDI GCS"

5단계: 권한 할당

커넥터에는 정확히 다음 권한이 필요합니다: 버킷에 대한 storage.buckets.get, storage.objects.get, storage.objects.list, 그리고 구독에 대한 pubsub.subscriptions.consume. 커스텀 역할 또는 사전 정의된 역할을 사용하여 할당할 수 있습니다.

커스텀 역할: 정확히 해당 권한을 가진 커스텀 역할을 생성하고 버킷과 구독에 바인딩합니다:

1
2
3
4
5
6
7
8
9
10
11
12
13
gcloud iam roles create brazeCdiGcs --project=YOUR-PROJECT-ID \
  --title="Braze CDI GCS" \
  --permissions=storage.buckets.get,storage.objects.get,storage.objects.list,pubsub.subscriptions.consume \
  --stage=GA

gcloud storage buckets add-iam-policy-binding gs://YOUR-BUCKET-NAME \
  --member="serviceAccount:[email protected]" \
  --role="projects/YOUR-PROJECT-ID/roles/brazeCdiGcs"

gcloud pubsub subscriptions add-iam-policy-binding YOUR-SUBSCRIPTION \
  --project=YOUR-PROJECT-ID \
  --member="serviceAccount:[email protected]" \
  --role="projects/YOUR-PROJECT-ID/roles/brazeCdiGcs"

사전 정의된 역할: 버킷에 roles/storage.objectViewerroles/storage.legacyBucketReader를, 구독에 roles/pubsub.subscriber를 할당합니다. objectViewer 역할은 storage.objects.getstorage.objects.list를 제공하고, legacyBucketReaderstorage.buckets.get을 제공합니다:

1
2
3
4
5
6
7
8
9
10
gcloud storage buckets add-iam-policy-binding gs://YOUR-BUCKET-NAME \
  --member="serviceAccount:[email protected]" \
  --role="roles/storage.objectViewer"
gcloud storage buckets add-iam-policy-binding gs://YOUR-BUCKET-NAME \
  --member="serviceAccount:[email protected]" \
  --role="roles/storage.legacyBucketReader"
gcloud pubsub subscriptions add-iam-policy-binding YOUR-SUBSCRIPTION \
  --project=YOUR-PROJECT-ID \
  --member="serviceAccount:[email protected]" \
  --role="roles/pubsub.subscriber"

6단계: JSON 키 생성

Google Cloud 콘솔에서 서비스 계정을 열고 Keys > Add key > Create new key로 이동하여 JSON을 선택합니다.

또는 gcloud를 사용합니다:

1
2
gcloud iam service-accounts keys create braze-cdi-gcs-key.json \
  --iam-account=[email protected]

Braze에서 클라우드 데이터 수집 설정하기

  1. Braze에서 데이터 설정 > 클라우드 데이터 수집 > 소스로 이동하여 데이터 소스 추가를 선택한 다음 Google Cloud Storage를 선택합니다.

데이터 소스 목록에서 Google Cloud Storage가 선택된 "새 소스 추가" 화면.

  1. 소스 필드를 작성합니다:
    • Bucket: 버킷 이름
    • Project ID: GCP 프로젝트 ID
    • Service account JSON key: 6단계에서 얻은 키 파일을 업로드하고 자격 증명에 이름을 지정합니다

Bucket, Project ID 및 자격 증명 업로드 필드가 표시된 Google Cloud Storage 소스 양식.

  1. 연결 테스트를 선택한 다음 소스에 연결을 선택합니다.
  2. 동기화를 생성합니다. 데이터 설정 > 클라우드 데이터 수집 > 동기화로 이동하여 데이터 동기화 생성을 선택합니다. 동기화 이름과 데이터 유형(사용자 속성, 커스텀 이벤트, 구매 이벤트, 카탈로그 또는 사용자 삭제 등)을 선택한 다음 다음을 선택합니다.
  3. 데이터 정의 단계에서 GCS 소스를 선택한 다음 다음을 지정합니다:

Pub/Sub subscription ID 및 Folder path 필드가 표시된 Google Cloud Storage 동기화 양식.

  1. 미리보기 및 유효성 검사를 선택하여 Braze가 구독에 접근하고 수집 가능한 파일 목록을 확인할 수 있는지 확인합니다. 성공적인 테스트에서는 버킷의 기존 파일이 나열되지만 해당 파일은 자동으로 동기화되지 않습니다.
  2. 오류 알림을 위한 연락처 이메일 주소를 추가합니다. Google Cloud Storage 동기화는 이벤트 기반이므로 스케줄이 필요하지 않습니다. Braze는 새 파일이 업로드되면 자동으로 수집합니다. 요약을 검토한 다음 동기화 생성을 선택합니다.

공유 버킷에서 폴더 동기화

하나의 버킷을 여러 동기화에서 재사용할 수 있지만 각 동기화는 고유한 폴더를 대상으로 해야 하며 자체 전용 Pub/Sub 구독이 있어야 합니다.

공유 버킷에서 동기화할 각 폴더에 대해:

  1. 동기화의 Folder 필드를 경로 접두사로 설정합니다(예: attributes/). Braze는 해당 접두사로 시작하는 경로의 객체만 나열하고 수집합니다.
  2. 해당 폴더에 대한 전용 토픽과 접두사 범위의 알림을 생성한 다음 해당 토픽에 구독을 생성합니다:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
     # 폴더당 하나의 토픽
     gcloud pubsub topics create YOUR-ATTRIBUTES-TOPIC --project=YOUR-PROJECT-ID
    
     # Cloud Storage 서비스 에이전트에 토픽 게시 권한 할당
     gcloud pubsub topics add-iam-policy-binding YOUR-ATTRIBUTES-TOPIC \
       --project=YOUR-PROJECT-ID \
       --member="serviceAccount:service-YOUR-PROJECT-NUMBER@gs-project-accounts.iam.gserviceaccount.com" \
       --role="roles/pubsub.publisher"
    
     # --object-prefix로 폴더 범위의 알림
     gcloud storage buckets notifications create gs://YOUR-BUCKET-NAME \
       --topic=YOUR-ATTRIBUTES-TOPIC --event-types=OBJECT_FINALIZE \
       --payload-format=json --object-prefix=attributes/
    
     # 동기화당 하나의 구독
     gcloud pubsub subscriptions create YOUR-ATTRIBUTES-SUBSCRIPTION \
       --topic=YOUR-ATTRIBUTES-TOPIC --project=YOUR-PROJECT-ID --ack-deadline=60
    
  3. 5단계와 같이 Braze 서비스 계정에 해당 구독에 대한 소비 권한을 할당합니다:

    1
    2
    3
    4
    
     gcloud pubsub subscriptions add-iam-policy-binding YOUR-ATTRIBUTES-SUBSCRIPTION \
       --project=YOUR-PROJECT-ID \
       --member="serviceAccount:[email protected]" \
       --role="roles/pubsub.subscriber"
    

    5단계에서 커스텀 역할을 생성한 경우 --role="projects/YOUR-PROJECT-ID/roles/brazeCdiGcs"를 대신 사용합니다.

  4. Braze에서 동기화를 생성할 때 이 폴더의 새 Pub/Sub subscription IDFolder path를 입력하여 해당 폴더의 파일만 수집되도록 합니다.

통합에는 다음 리소스가 필요합니다:

  • 데이터 저장을 위한 Blob 컨테이너가 있는 스토리지 계정
  • 새 파일 알림을 위한 Azure Storage 대기줄 및 이벤트 구독
  • CDI가 컨테이너와 대기줄을 읽는 데 사용하는 Microsoft Entra ID 서비스 주체

Azure 정의

용어 정의
스토리지 계정 스토리지 계정은 CDI가 파일을 읽는 컨테이너와 CDI가 알림을 읽는 대기줄을 모두 보관하는 최상위 Azure 리소스입니다.
컨테이너 컨테이너는 CDI에서 수집할 데이터 파일을 보관합니다. 컨테이너는 스토리지 계정 내에 존재합니다.
Azure Storage 대기줄 대기줄은 컨테이너에서 새 파일 알림을 수신합니다. CDI는 이 대기줄에서 메시지를 읽고 확인하여 수집할 파일을 파악합니다.
이벤트 구독 이벤트 구독은 Azure Event Grid 서비스를 사용하여 스토리지 계정의 이벤트를 대상으로 라우팅합니다. Blob Created 이벤트를 대기줄로 전송하도록 구성합니다.
시스템 토픽 시스템 토픽은 이벤트의 소스를 나타냅니다. 첫 번째 이벤트 구독을 추가하면 Event Grid가 스토리지 계정에 대해 하나를 생성합니다.
서비스 주체 서비스 주체는 CDI가 인증하는 Microsoft Entra ID ID입니다. 앱 등록을 통해 생성하고 자격 증명을 Braze에 입력합니다.
Azure 역할 할당 역할 할당은 지정된 범위에서 서비스 주체에 일련의 권한을 부여합니다. Braze 서비스 주체에 스토리지 계정에 대한 두 가지 기본 제공 역할을 할당합니다.

Azure에서 클라우드 데이터 수집 설정하기

1단계: 컨테이너 생성

컨테이너와 대기줄은 동일한 스토리지 계정에 있어야 합니다. 기존 스토리지 계정을 재사용할 수 있습니다. 아직 없는 경우 Azure 포털에서 Storage accounts > + Create로 이동하여 생성합니다.

  1. Azure 포털에서 스토리지 계정으로 이동한 다음 Data storage > Containers로 이동합니다.
  2. + Add container를 선택하고 이름을 지정합니다.

스토리지 계정 이름과 컨테이너 이름을 기록해 두세요. Braze에서 소스를 구성할 때 두 가지 모두 필요합니다.

2단계: 대기줄 생성

  1. 동일한 스토리지 계정에서 Data storage > Queues로 이동합니다.
  2. + Queue를 선택하고 이름을 지정합니다.

대기줄 이름을 기록해 두세요. 동기화를 생성할 때 필요하며 각 동기화에는 자체 대기줄이 필요합니다.

3단계: 이벤트 구독 생성

파일이 도착할 때마다 컨테이너가 대기줄에 알리도록 이벤트 구독을 생성합니다.

  1. 동일한 스토리지 계정에서 Events로 이동한 다음 + Event Subscription을 선택합니다.
  2. Event Subscription Details에서 Name을 입력하고 Event SchemaEvent Grid Schema로 설정합니다.
  3. Topic Details에서 System Topic Name을 검토합니다. 스토리지 계정에 시스템 토픽이 아직 없으면 이름을 입력하여 생성합니다. 이미 있으면 해당 이름이 표시되며 변경할 수 없습니다. 스토리지 계정의 모든 이벤트 구독은 동일한 시스템 토픽을 사용합니다.
  4. Event Types에서 Filter to Event TypesBlob Created만으로 설정합니다. Blob Deleted도 기본적으로 선택되어 있으므로 선택을 해제합니다.
  5. Endpoint Details에서 Endpoint TypeStorage Queue로 설정합니다. 엔드포인트 유형을 선택하면 Configure an endpoint 링크가 나타납니다.
  6. Configure an endpoint를 선택한 다음 작업 중인 스토리지 계정을 선택합니다.
  7. Select existing queue를 선택한 다음 2단계에서 생성한 대기줄을 선택합니다.
  8. Select를 선택하여 엔드포인트를 확인합니다.
  9. Create를 선택합니다.

4단계: 서비스 주체 생성

CDI는 Microsoft Entra ID 인증을 통해 서비스 주체를 사용하여 스토리지 계정에 연결합니다. Braze가 연결하려면 다음 세부 정보가 필요합니다:

  • Azure 계정의 테넌트 ID(디렉터리라고도 함)
  • 서비스 주체의 주체 ID(애플리케이션 ID라고도 함)
  • Braze가 인증하기 위한 클라이언트 시크릿

앱 등록을 하려면 Microsoft Entra ID에서 앱 등록을 생성할 수 있는 권한이 필요합니다. 권한이 없으면 Entra 관리자에게 이 단계를 완료하고 자격 증명을 공유해 달라고 요청하세요.

  1. Azure 포털에서 Microsoft Entra 관리 센터로 이동한 다음 App Registrations를 선택합니다.
  2. Identity > Applications > App registrations에서 + New registration을 선택합니다.
  3. 이름을 입력하고 지원되는 계정 유형으로 Accounts in this organizational directory only를 선택합니다. 그런 다음 Register를 선택합니다.
  4. 방금 생성한 애플리케이션(서비스 주체)을 선택한 다음 Certificates & secrets > + New client secret로 이동합니다.
  5. 비밀에 대한 설명을 입력하고 만료 기간을 설정합니다. 그런 다음 Add를 선택합니다.
  6. Braze 설정에 사용할 클라이언트 비밀을 기록해 둡니다.

CDI 전용 서비스 주체를 생성하여 액세스를 동기화하는 컨테이너와 대기줄로 제한하는 것을 권장합니다. Microsoft Fabric 소스에 대해 이미 설정한 서비스 주체가 있으면 재사용할 수 있지만 해당 서비스 주체는 두 가지 모두에 대한 액세스 권한을 갖게 됩니다. 어느 쪽이든 다음 단계의 역할 할당이 필요합니다.

5단계: 서비스 주체에 권한 할당

CDI는 파일을 읽고 대기줄 메시지를 처리할 수 있는 충분한 액세스만 필요합니다. 구독이나 리소스 그룹이 아닌 스토리지 계정 자체에 다음 두 가지 기본 제공 역할을 할당합니다. 역할 할당은 하위로 상속되기 때문입니다. CDI가 사용하지 않는 쓰기 및 관리 권한을 부여하는 Storage Blob Data Contributor, Storage Account Contributor 또는 Owner와 같은 더 넓은 역할은 할당하지 마세요.

  1. 스토리지 계정으로 이동한 다음 Access Control (IAM)으로 이동합니다.
  2. Add > Add role assignment를 선택합니다.
  3. 4단계에서 생성한 서비스 주체를 이름으로 검색합니다.
  4. 다음 기본 제공 역할을 할당합니다:
    • Storage Blob Data Reader: CDI가 컨테이너의 파일을 읽을 수 있도록 합니다.
    • Storage Queue Data Message Processor: CDI가 대기줄의 메시지를 미리 보기, 검색 및 삭제할 수 있도록 합니다.

컨테이너의 Blob에 대한 읽기 액세스와 대기줄의 메시지 수신 및 삭제 권한만 부여하는 커스텀 역할을 대신 사용할 수 있습니다.

Braze에서 클라우드 데이터 수집 설정하기

  1. Braze에서 데이터 설정 > 클라우드 데이터 수집 > 소스로 이동하여 데이터 소스 추가를 선택한 다음 Azure Blob을 선택합니다.

데이터 소스 목록에서 Azure Blob이 선택된 "새 소스 추가" 화면.

  1. Azure Blob 연결 세부 정보 필드를 작성합니다:
    • 자격 증명: Tenant ID, Principal IDClient Secret
    • 구성: Storage accountContainer

Tenant ID, Principal ID, Client Secret, Storage account 및 Container 필드가 표시된 Azure Blob 연결 세부 정보 양식.

  1. 연결 테스트를 선택한 다음 소스에 연결을 선택합니다.
  2. 동기화를 생성합니다. 데이터 설정 > 클라우드 데이터 수집 > 동기화로 이동하여 데이터 동기화 생성을 선택합니다.
  3. 구성에서 동기화 이름을 선택하고 Azure Blob 소스를 선택한 다음 데이터 유형(사용자 속성, 커스텀 이벤트, 구매 이벤트, 카탈로그 또는 사용자 삭제 등)을 선택합니다.
  4. 데이터 정의에서 다음을 지정합니다:

Storage queue name 및 Folder path 필드가 표시된 Azure Blob 동기화 양식.

  1. 미리보기 및 유효성 검사를 선택하여 CDI가 대기줄에 접근하고 수집 가능한 파일 목록을 확인할 수 있는지 확인합니다. 성공적인 테스트에서는 컨테이너의 기존 파일이 나열되지만 해당 파일은 자동으로 동기화되지 않습니다. 연결이 성공적으로 유효성 검사될 때까지 동기화는 활성화되지 않습니다.
  2. 알림에서 오류 알림을 위한 연락처 이메일 주소를 추가합니다.
  3. 스케줄에는 파일 스토리지 동기화에 대한 옵션이 없습니다. Azure Blob Storage 동기화는 이벤트 기반이므로 CDI는 새 파일이 업로드되면 자동으로 수집합니다.
  4. 요약을 검토한 다음 동기화 생성을 선택합니다.

공유 컨테이너에서 폴더 동기화

하나의 컨테이너를 여러 동기화에서 재사용할 수 있지만 각 동기화에는 자체 스토리지 대기줄과 자체 폴더가 필요합니다.

공유 컨테이너에서 동기화할 각 폴더에 대해:

  1. 2단계와 같이 해당 폴더에 대한 대기줄을 생성합니다.
  2. 3단계와 같이 컨테이너의 Blob Created 이벤트를 해당 대기줄로 전송하는 이벤트 구독을 생성합니다.
  3. Braze에서 동기화를 생성할 때 해당 폴더의 Storage queue name을 입력하고 Folder path(선택 사항)attributes/와 같은 폴더 접두사로 설정합니다. CDI는 해당 접두사로 시작하는 경로의 파일만 수집합니다.

필수 파일 형식

필수 파일 형식은 Amazon S3, Google Cloud Storage, Azure Blob Storage 모두 동일합니다. Cloud Data Ingestion은 JSON, CSV, Parquet 파일을 지원합니다. 필수 열은 데이터 유형에 따라 다릅니다:

  • 사용자 데이터(속성, 커스텀 이벤트, 구매 이벤트)는 사용자 식별자와 페이로드를 사용합니다
  • 카탈로그 데이터는 카탈로그 식별자를 사용합니다

카탈로그 데이터에 파일 스토리지를 사용하는 경우, 카탈로그별 요구사항과 동작에 대해서는 이 페이지와 함께 카탈로그 데이터 동기화 및 삭제를 참조하세요.

Braze는 파일 스토리지 제공자가 적용하는 것 이상의 추가 파일 이름 요구사항을 적용하지 않습니다. 파일 이름은 고유해야 합니다. 타임스탬프를 추가하면 고유성을 보장하는 데 도움이 됩니다.

지원되는 모든 파일 유형(속성, 커스텀 이벤트, 구매, 카탈로그, 사용자 삭제)의 예시는 braze-examples의 샘플 파일을 참조하세요.

사용자 식별자

사용자 데이터 동기화(속성, 커스텀 이벤트, 구매 이벤트)의 경우, 소스 파일의 각 행에는 정확히 하나의 사용자 식별자와 PAYLOAD 열이 필요합니다. 소스 파일에는 서로 다른 식별자 유형을 가진 행이 포함될 수 있지만, 각 개별 행은 하나만 사용해야 합니다.

식별자 설명
EXTERNAL_ID 업데이트하려는 사용자를 식별합니다. Braze에서 사용되는 external_id 값과 일치해야 합니다.
ALIAS_NAMEALIAS_LABEL 이 두 열은 사용자 별칭 객체를 생성합니다. alias_name은 고유 식별자여야 하며, alias_label은 별칭의 유형을 지정합니다. 사용자는 서로 다른 레이블을 가진 여러 별칭을 가질 수 있지만, alias_label당 하나의 alias_name만 가질 수 있습니다.
BRAZE_ID Braze 사용자 식별자입니다. Braze SDK에 의해 생성되며, Cloud Data Ingestion을 통해 Braze ID로 새 사용자를 생성할 수 없습니다. 새 사용자를 생성하려면 외부 사용자 ID 또는 사용자 별칭을 지정하세요.
EMAIL 사용자의 이메일 주소입니다. 동일한 이메일 주소를 가진 여러 프로필이 존재하는 경우, 가장 최근에 업데이트된 프로필이 업데이트 우선순위를 갖습니다. 이메일과 전화번호를 모두 포함하면 Braze는 이메일을 기본 식별자로 사용합니다.
PHONE 사용자의 전화번호입니다. 동일한 전화번호를 가진 여러 프로필이 존재하는 경우, 가장 최근에 업데이트된 프로필이 업데이트 우선순위를 갖습니다.

식별자 외에도 각 행에는 Braze에서 사용자에게 동기화하려는 필드의 JSON 문자열을 포함하는 PAYLOAD 열이 있어야 합니다.

카탈로그 식별자

카탈로그 동기화의 경우, 소스 파일에 다음 열이 포함되어야 합니다. 카탈로그 파일은 사용자 데이터 파일과 다른 식별자를 사용합니다.

필수 여부 설명
ID 카탈로그 항목의 고유 식별자입니다. Braze에서 항목을 생성, 업데이트 또는 삭제하는 데 사용됩니다.
PAYLOAD 동기화할 카탈로그 필드와 값의 JSON 문자열입니다. Braze에 있는 카탈로그의 스키마와 일치해야 합니다.
DELETED 아니요 true인 경우, 일치하는 ID를 가진 카탈로그 항목이 Braze의 카탈로그에서 제거됩니다. 생성 또는 업데이트 작업의 경우 이 열을 생략하거나 false로 설정하세요.

예시

1
2
3
4
5
6
7
{"external_id":"s3-qa-0","payload":"{\"name\": \"GT896\", \"age\": 74, \"subscriber\": true, \"retention\": {\"previous_purchases\": 21, \"vip\": false}, \"last_visit\": \"2023-08-08T16:03:26.600803\"}"}
{"external_id":"s3-qa-1","payload":"{\"name\": \"HSCJC\", \"age\": 86, \"subscriber\": false, \"retention\": {\"previous_purchases\": 0, \"vip\": false}, \"last_visit\": \"2023-08-08T16:03:26.600824\"}"}
{"external_id":"s3-qa-2","payload":"{\"name\": \"YTMQZ\", \"age\": 43, \"subscriber\": false, \"retention\": {\"previous_purchases\": 23, \"vip\": true}, \"last_visit\": \"2023-08-08T16:03:26.600831\"}"}
{"external_id":"s3-qa-3","payload":"{\"name\": \"5P44M\", \"age\": 15, \"subscriber\": true, \"retention\": {\"previous_purchases\": 7, \"vip\": true}, \"last_visit\": \"2023-08-08T16:03:26.600838\"}"}
{"external_id":"s3-qa-4","payload":"{\"name\": \"WMYS7\", \"age\": 11, \"subscriber\": true, \"retention\": {\"previous_purchases\": 0, \"vip\": false}, \"last_visit\": \"2023-08-08T16:03:26.600844\"}"}
{"external_id":"s3-qa-5","payload":"{\"name\": \"KCBLK\", \"age\": 47, \"subscriber\": true, \"retention\": {\"previous_purchases\": 11, \"vip\": true}, \"last_visit\": \"2023-08-08T16:03:26.600850\"}"}
{"external_id":"s3-qa-6","payload":"{\"name\": \"T93MJ\", \"age\": 47, \"subscriber\": true, \"retention\": {\"previous_purchases\": 10, \"vip\": false}, \"last_visit\": \"2023-08-08T16:03:26.600856\"}"}
1
2
{"external_id":"s3-qa-0","payload":"{\"app_id\": \"YOUR_APP_ID\", \"name\": \"view-206\", \"time\": \"2024-04-02T14:34:08\", \"properties\": {\"bool_value\": false, \"preceding_event\": \"unsubscribe\", \"important_number\": 206}}"}
{"external_id":"s3-qa-1","payload":"{\"app_id\": \"YOUR_APP_ID\", \"name\": \"view-206\", \"time\": \"2024-04-02T14:34:08\", \"properties\": {\"bool_value\": false, \"preceding_event\": \"unsubscribe\", \"important_number\": 206}}"}
1
2
{"external_id":"s3-qa-0","payload":"{\"app_id\": \"YOUR_APP_ID\", \"product_id\": \"product-11\", \"currency\": \"BSD\", \"price\": 8.511527858335066, \"time\": \"2024-04-02T14:34:08\", \"quantity\": 19, \"properties\": {\"is_a_boolean\": true, \"important_number\": 40, \"preceding_event\": \"click\"}}"}
{"external_id":"s3-qa-1","payload":"{\"app_id\": \"YOUR_APP_ID\", \"product_id\": \"product-11\", \"currency\": \"BSD\", \"price\": 8.511527858335066, \"time\": \"2024-04-02T14:34:08\", \"quantity\": 19, \"properties\": {\"is_a_boolean\": true, \"important_number\": 40, \"preceding_event\": \"click\"}}"}
1
2
3
4
external_id,payload
s3-qa-load-0-d0daa196-cdf5-4a69-84ae-4797303aee75,"{""name"": ""SNXIM"", ""age"": 54, ""subscriber"": true, ""retention"": {""previous_purchases"": 19, ""vip"": true}, ""last_visit"": ""2023-08-08T16:03:26.598806""}"
s3-qa-load-1-d0daa196-cdf5-4a69-84ae-4797303aee75,"{""name"": ""0J747"", ""age"": 73, ""subscriber"": false, ""retention"": {""previous_purchases"": 22, ""vip"": false}, ""last_visit"": ""2023-08-08T16:03:26.598816""}"
s3-qa-load-2-d0daa196-cdf5-4a69-84ae-4797303aee75,"{""name"": ""EP1U0"", ""age"": 99, ""subscriber"": false, ""retention"": {""previous_purchases"": 23, ""vip"": false}, ""last_visit"": ""2023-08-08T16:03:26.598822""}"
1
2
3
ID,PAYLOAD,DELETED
85,"{""product_name"": ""Product 85"", ""price"": 85.85}",false
1,"{""product_name"": ""Product 1"", ""price"": 1.01}",true

선택적 DELETED 열을 포함할 수 있습니다. DELETEDtrue이면 해당 카탈로그 항목이 Braze의 카탈로그에서 제거됩니다. 필수 열의 전체 목록은 카탈로그 식별자를 참조하세요. 삭제 동작에 대해서는 카탈로그 항목 삭제를 참조하세요. 포괄적인 카탈로그 설정 흐름(대상 카탈로그 생성 및 동기화 동작 포함)에 대해서는 카탈로그 데이터 동기화 및 삭제를 참조하세요.

데이터 삭제

파일 스토리지용 클라우드 데이터 수집은 파일 업로드를 통해 사용자 및 카탈로그 항목 삭제를 지원합니다. 각각에 대해 별도의 동기화 및 파일 형식을 사용하세요.

  • 사용자 삭제 – 데이터 유형을 Delete Users로 설정하여 동기화를 생성하고, 사용자 식별자만 포함된 파일(페이로드 없음)을 업로드합니다.
  • 카탈로그 항목 삭제 – 기존 카탈로그 동기화를 사용하고, 제거할 항목을 표시하기 위해 deleted(또는 DELETED) 열을 추가합니다.

사용자 삭제

소스 버킷의 파일을 사용하여 Braze에서 고객 프로필을 삭제하려면 다음을 수행합니다.

  1. 새 클라우드 데이터 수집 동기화를 생성합니다(다른 동기화와 동일한 설정).
  2. Braze에서 동기화를 구성할 때 Data TypeDelete Users로 설정합니다.
  3. 사용자 식별자 열만 포함된 파일을 소스 버킷에 업로드합니다. PAYLOAD 열은 포함하지 마세요—실수로 삭제되는 것을 방지하기 위해 페이로드가 존재하면 동기화가 실패합니다.

파일의 각 행은 다음 중 하나를 사용하여 정확히 한 명의 사용자를 식별해야 합니다.

식별자 설명
EXTERNAL_ID Braze에서 사용되는 external_id와 일치합니다.
ALIAS_NAMEALIAS_LABEL 두 열을 함께 사용하여 별칭으로 사용자를 식별합니다.
BRAZE_ID Braze가 생성한 사용자 ID입니다(기존 사용자만 해당).

예시 – JSON(사용자 삭제):

{"external_id":"user-to-delete-001"}
{"external_id":"user-to-delete-002"}
{"braze_id":"braze-id-from-profile"}

예시 – CSV(사용자 삭제):

1
2
3
external_id
user-to-delete-001
user-to-delete-002

동기화가 실행되면 Braze는 버킷의 새 파일을 처리하고 해당 고객 프로필을 삭제합니다.

카탈로그 항목 삭제

파일 스토리지를 사용하여 카탈로그에서 항목을 제거하려면 다음을 수행합니다.

  1. 카탈로그 데이터 동기화에 사용하는 것과 동일한 동기화를 사용합니다(데이터 유형 Catalogs).
  2. CSV 또는 JSON 파일에 선택적 deleted(또는 DELETED) 열을 추가합니다.
  3. Braze의 카탈로그에서 제거하려는 카탈로그 항목에 대해 deletedtrue로 설정합니다.

각 행에는 여전히 IDPAYLOAD가 필요합니다. 삭제로 표시된 행의 경우 페이로드는 최소한으로 설정할 수 있으며, Braze는 ID로 항목을 제거합니다.

예시 – JSON(카탈로그 항목 삭제):

{"id":"85","payload":"{\"product_name\": \"Product 85\", \"price\": 85.85}"}
{"id":"1","payload":"{\"product_name\": \"Product 1\", \"price\": 1.01}","deleted":true}

예시 – CSV(카탈로그 항목 삭제):

1
2
3
ID,PAYLOAD,DELETED
85,"{""product_name"": ""Product 85"", ""price"": 85.85}",false
1,"{""product_name"": ""Product 1"", ""price"": 1.01}",true

동기화가 실행되면 deleted: true로 표시된 행에 해당하는 카탈로그 항목이 Braze에서 삭제됩니다. 전체 카탈로그 동기화 및 삭제 동작에 대한 자세한 내용은 카탈로그 데이터 동기화 및 삭제를 참조하세요.

알아두어야 할 사항

  • 소스 버킷 또는 컨테이너에 추가하는 파일은 512 MB를 초과할 수 없습니다. 이 제한은 Amazon S3, Google Cloud Storage, Azure Blob Storage에 적용됩니다. 512 MB보다 큰 파일은 오류가 발생하며 Braze에 동기화되지 않습니다. Azure Blob Storage 자체는 훨씬 더 큰 파일을 허용하지만, CDI는 모든 파일 스토리지 소스에 동일한 512 MB 제한을 적용합니다.
  • 파일당 행 수에 대한 추가 제한은 없지만, 동기화 속도를 개선하기 위해 더 작은 파일을 사용하는 것을 권장합니다. 예를 들어, 500 MB 파일 하나를 수집하는 것보다 100 MB 파일 다섯 개를 수집하는 것이 상당히 더 빠릅니다.
  • 주어진 시간 내에 업로드할 수 있는 파일 수에 대한 추가 제한은 없습니다.
  • 파일 내부 또는 파일 간 정렬은 지원되지 않습니다. 예상되는 경합 조건을 모니터링하는 경우 업데이트를 주기적으로 일괄 처리하는 것을 권장합니다.

문제 해결

파일 업로드 및 처리

CDI는 동기화가 생성된 후에 추가된 파일만 처리합니다. 이 과정에서 Braze는 새로 추가되는 파일을 감지하고, 이를 통해 새 알림이 트리거됩니다. 이 알림이 새 동기화를 시작하여 새 파일을 처리합니다. Amazon S3의 경우 알림은 SQS로 전송되는 메시지입니다. Google Cloud Storage의 경우 Pub/Sub로 전송되는 OBJECT_FINALIZE 메시지입니다. Azure Blob Storage의 경우 Azure Storage 대기줄로 전달되는 Blob Created 이벤트입니다.

기존 파일을 사용하여 Braze가 버킷에 접근하고 수집할 파일을 감지할 수 있는지 검증할 수 있지만, 이 파일은 Braze에 동기화되지 않습니다. CDI가 이러한 파일을 처리하려면 동기화하려는 기존 파일을 소스 버킷에 다시 업로드해야 합니다.

예상치 못한 파일 오류 처리 (Amazon S3)

오류 또는 실패한 파일 수가 많은 경우, CDI 대상 폴더가 아닌 다른 폴더에 파일을 추가하는 다른 프로세스가 S3 버킷에서 실행되고 있을 수 있습니다.

파일이 소스 버킷에 업로드되었지만 소스 폴더에 없는 경우, CDI는 SQS 알림을 처리하지만 해당 파일에 대해 아무 작업도 수행하지 않으므로 오류로 표시될 수 있습니다.

문제가 S3 알림 또는 SQS 대상 권한과 관련된 경우(예: 대상 유효성 검사 오류), AWS 설명서를 참조하세요:

예상치 못한 파일 오류 처리 (Google Cloud Storage)

Amazon S3와 마찬가지로, CDI는 동기화가 생성된 후에 업로드된 파일만 처리합니다. 새로운 객체가 생성될 때마다 Pub/Sub 토픽에 OBJECT_FINALIZE 메시지가 트리거됩니다. 버킷에 이미 존재하는 파일을 수집하려면 해당 파일을 다시 업로드하세요.

파일이 수집되지 않는 경우 다음 사항을 확인하세요:

  • 버킷 알림이 존재하는지 확인합니다. gcloud storage buckets notifications list gs://YOUR-BUCKET-NAME 명령으로 버킷의 알림을 조회할 수 있습니다.
  • Cloud Storage 서비스 에이전트가 해당 토픽에 대해 roles/pubsub.publisher 역할을 보유하고 있어야 합니다.
  • Braze 서비스 계정이 구독에 대해 소비 권한(pubsub.subscriptions.consume, 커스텀 역할 또는 roles/pubsub.subscriber를 통해 할당)을 보유하고 있어야 합니다.
  • 구독에 데드 레터 대기줄이 구성되어 있지 않아야 합니다. Braze는 Cloud Data Ingestion 구독에 대한 데드 레터 대기줄을 지원하지 않습니다.

자세한 내용은 Google Cloud 설명서의 Cloud Storage용 Pub/Sub 알림을 참조하세요.

예상치 못한 파일 오류 처리 (Azure Blob Storage)

Amazon S3 및 Google Cloud Storage와 마찬가지로, CDI는 동기화가 생성된 후에 업로드된 파일만 처리합니다. 새로운 Blob이 생성될 때마다 대기줄에 Blob Created 이벤트가 트리거됩니다. 컨테이너에 이미 존재하는 파일을 수집하려면 해당 파일을 다시 업로드하세요.

파일이 수집되지 않는 경우 다음 사항을 확인하세요:

  • 스토리지 계정에 이벤트 구독이 존재하며 Blob Created로 필터링되어 있어야 합니다.
  • 이벤트 구독이 Event Grid Schema를 사용해야 합니다. CDI는 다른 스키마로 전달된 이벤트를 읽을 수 없습니다.
  • 이벤트 구독의 엔드포인트가 다른 대기줄이 아닌 동기화에 구성된 대기줄을 가리켜야 합니다.
  • Braze 서비스 주체가 스토리지 계정에 대해 Storage Blob Data ReaderStorage Queue Data Message Processor 권한을 보유하고 있어야 합니다.
  • 서비스 주체의 클라이언트 시크릿이 만료되지 않아야 합니다. Azure는 클라이언트 시크릿에 만료 기한을 적용하며, 시크릿이 만료되면 동기화가 중단됩니다.

자세한 내용은 Microsoft 설명서의 Event Grid 소스로서의 Azure Blob Storage를 참조하세요.

New Stuff!