跳转到内容

导出 CRM 事件 (S3)

将 FlareLane 中产生的消息发送、送达、点击等 CRM 事件每日自动导出到客户的 Amazon S3 存储桶的功能。导出的数据以 Parquet 格式存储,因此您可以将其写入公司内部的数据仓库或 BI 工具,从而对营销活动效果进行精细分析。

设置只需最初进行一次即可。在客户的 AWS 账户中创建 IAM Role,将写入权限委托给 FlareLane,然后在 FlareLane 控制台中输入目标存储桶和权限信息,从次日起便会自动写入数据。

项目内容
执行周期每天 KST 03:00 自动执行(不支持手动执行)
目标时段以项目 timezone 为准的前一天 00:00 ~ 24:00(默认值 Asia/Seoul
目标存储Amazon S3(目前不支持 GCS、Azure Blob 等其他云)
文件格式Parquet(snappy 压缩)
认证方式AWS STS cross-account AssumeRole。通过 ExternalId 验证项目 ID,以防止 confused deputy 攻击。

导出的文件按以下路径规则存储。

s3://<bucket>/<prefix>/<YYYY-MM-DD>/<YYYYMMDDHHMMSS>_part_<NNN>.parquet
// e.g. s3://my-flarelane-export/crm/2026-05-14/20260515030412_part_001.parquet

设置时,您可以在以下列表中自由选择要导出的事件(至少需选择 1 个)。未选择类型的事件将被排除在导出对象之外。

类别事件类型
推送 (Push)push.sent, push.aborted, push.failed, push.clicked
短信 (SMS)sms.sent, sms.aborted, sms.failed, sms.delivered, sms.undelivered
KakaoTalk 通知消息kakaoalimtalk.sent, kakaoalimtalk.aborted, kakaoalimtalk.failed,
kakaoalimtalk.delivered,
kakaoalimtalk.undelivered
KakaoTalk 品牌消息kakaobrandmessage.sent,
kakaobrandmessage.aborted,
kakaobrandmessage.failed,
kakaobrandmessage.delivered,
kakaobrandmessage.undelivered
电子邮件 (Email)email.sent, email.aborted, email.failed, email.delivered, email.opened, email.clicked, email.complaint
应用内消息 (In-App Message)iam.displayed, iam.clicked, iam.closed

在开始设置之前,请准备好以下项目。

项目说明
Amazon S3 存储桶用于写入导出数据的存储桶。建议使用专用于 CRM 事件的单独存储桶。
CloudFormation 堆栈 / IAM Role 创建权限在客户 AWS 账户中执行第 2 步时需要。
项目 ID可在控制台的项目设置页面中查看。用作 IAM Role Trust Policy 的 ExternalId 条件值。
FlareLane Glue Role ARN由 FlareLane 单独提供的值。用作 IAM Role Trust Policy 的 Principal
KMS 密钥 ARN(可选)仅当目标存储桶使用 SSE-KMS(客户托管密钥)加密时才需要。若为 SSE-S3 默认加密则无需提供。

设置时使用的 CloudFormation 模板。请通过下方按钮下载,并在第 2 步中使用。

下载 iam-role.yaml

在客户的 AWS 账户中准备导出目标 S3 存储桶。重复使用现有存储桶也无妨,但建议使用专用于 CRM 事件的单独存储桶。

创建 IAM Role 和权限,使 FlareLane 的 Glue Job 能够向客户 S3 存储桶写入数据,并在写入后清理临时文件(rename·cleanup)。请从以下两种方法中选择一种。

方法 A — CloudFormation 模板(推荐)

Section titled “方法 A — CloudFormation 模板(推荐)”
  1. 通过上方的 iam-role.yaml 下载按钮下载模板。
  2. 进入 AWS 控制台的 CloudFormation → Create stack → With new resources (standard),通过 Upload a template file 上传 iam-role.yaml
  3. 输入以下参数。
参数说明
ProjectIdFlareLane 项目 ID。用作 Trust Policy 的 ExternalId
DestinationBucketName第 1 步中准备的 S3 存储桶名称
FlarelaneGlueRoleArnFlareLane 提供的 Glue Role ARN
KmsKeyArn(可选)仅当存储桶使用 SSE-KMS 加密时才输入。若为 SSE-S3 则留空。
  1. 在最后的检查步骤中勾选 "I acknowledge that AWS CloudFormation might create IAM resources with custom names" 复选框,然后创建堆栈。
  2. 堆栈创建完成后,在 Outputs 选项卡中复制 RoleArn 值。该值将用于第 3 步的控制台输入。
  3. (仅限 SSE-KMS 存储桶) 复制 Outputs 选项卡中的 KmsKeyPolicyStatement JSON,将其作为 Statement 添加到该 KMS 密钥的 Key policy 中(KMS 控制台 → 客户托管密钥 → 选择密钥 → 编辑密钥策略)。跨账户 KMS 访问仅靠 IAM 权限不够,还必须在密钥策略中将该 Role 允许为 Principal

如果不使用 CloudFormation,而是在控制台中直接配置,请按以下顺序操作。

(1) 创建 IAM Role

  1. 进入 AWS 控制台的 IAM → Roles → Create role
  2. Trusted entity type 选择 Custom trust policy,并将以下 JSON 原样粘贴。请将两处占位符替换为实际值。
    • <FLARELANE_GLUE_ROLE_ARN>:FlareLane 提供的值
    • <FLARELANE_PROJECT_ID>:FlareLane 项目 ID
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "<FLARELANE_GLUE_ROLE_ARN>"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"sts:ExternalId": "<FLARELANE_PROJECT_ID>"
}
}
}
]
}
  1. 自由输入 Role 名称(例如 flarelane-crm-export-role)并创建。

(2) 授予 S3 内联策略

  1. 在所创建 Role 的详情页面中选择 Add permissions → Create inline policy
  2. 将策略编辑器切换为 JSON 模式并粘贴以下 JSON。请将 <DESTINATION_BUCKET> 替换为第 1 步中准备的存储桶名称。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::<DESTINATION_BUCKET>",
"arn:aws:s3:::<DESTINATION_BUCKET>/*"
]
}
]
}
  1. 自由输入策略名称(例如 flarelane-crm-export-policy)并保存。

(3) 授予 KMS 权限 — 仅限 SSE-KMS 存储桶

如果目标存储桶使用 KMS 客户托管密钥加密,那么除上述策略外,还需额外设置以下两项。

  • 向 Role 授予 KMS 权限(kms:GenerateDataKeykms:Decrypt),并将 Resource 指定为该密钥 ARN。
  • 在该 KMS 密钥的 Key policy 中也添加一条将该 Role 允许为 Principal 的 Statement。跨账户 KMS 访问仅靠 IAM 权限不够,密钥策略的允许必须一并配置。

第 3 步:在 FlareLane 控制台中输入设置

Section titled “第 3 步:在 FlareLane 控制台中输入设置”

在 FlareLane 控制台的 项目设置 → CRM 事件导出 页面中输入以下值。

字段说明
是否启用开启/关闭导出操作
S3 存储桶名称第 1 步中准备的存储桶名称
S3 路径 prefix存储桶内的路径 prefix(可选)
IAM Role ARN第 2 步中创建的 Role 的 ARN(方法 A 为堆栈 Outputs 的 RoleArn
要导出的事件类型从上述 可对接的事件类型 中选择

保存后开启启用开关,从下一次 KST 03:00 起便会自动开始导出。

启用后的次日 KST 03:00 ~ 03:30 之间会进行首次执行。请在当天上午确认以下内容。

  1. 确认目标 S3 存储桶中是否已创建 <prefix>/<昨天日期>/ 目录。
  2. 确认目录中是否存在 <YYYYMMDDHHMMSS>_part_001.parquet 格式的文件。
  3. 打开 Parquet 文件,检查前一天产生的事件是否已正常写入。

如果目录未创建,请确认以下项目。

  • 前一天是否实际存在相应事件(若没有,则连空目录也不会创建)
  • 所选 要导出的事件类型 筛选器中是否包含该事件
  • IAM Role Trust Policy 的 sts:ExternalId 值是否与本人的项目 ID 一致
  • IAM Policy 的 Resource ARN 是否与实际存储桶名称一致
  • (SSE-KMS 存储桶时)KMS 密钥的 Key policy 中是否已将 export Role 允许为 Principal

如果以上项目均正常但数据仍未写入,请联系 FlareLane 客户支持团队。

Q. 能否一次性获取功能启用之前的历史数据?

不支持。从启用时点之后的"前一天"数据开始,按每日单位写入。如果需要历史时段的数据,请联系 FlareLane 客户支持团队。

Q. 昨天的数据是空的。

很可能是以下两种情况之一。

  • 该日期没有产生 CRM 事件(这种情况下连 S3 目录本身都不会创建)
  • 产生的事件类型未包含在 要导出的事件类型 筛选器中

Q. 中途更改 S3 路径 prefix 会怎样?

从更改时点之后的数据开始写入新的 prefix 路径。存储在原 prefix 路径中的文件将原样保留,FlareLane 不会自动移动它们。

Q. 我输错了 IAM Role ARN。那一天的数据会自动重新写入吗?

不会自动恢复。将 ARN 修改为正确值并保存后,从次日起便会正常写入。如果需要缺失日期的数据,请联系 FlareLane 客户支持团队。

Q. 一个项目能否同时导出到多个 S3 存储桶?

目前每个项目只能设置 1 个目标存储桶。