本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
設定 Amazon Pinpoint,透過 Amazon Kinesis 或 Amazon Data Firehose 串流應用程式事件資料
您可以設定 Amazon Pinpoint 將事件資料傳送至 Amazon Kinesis 串流或 Amazon Data Firehose 交付串流。Amazon Pinpoint 可以傳送行銷活動、旅程和交易電子郵件和SMS訊息的事件資料。
本節包含透過編寫程式的方式設定事件串流的資訊。您也可以使用 Amazon Pinpoint 主控台設定事件串流。如需使用 Amazon Pinpoint 主控台設定事件串流的相關資訊,請參閱 Amazon Pinpoint 使用者指南中的事件串流設定。
必要條件
本節中的範例需要以下輸入:
-
與 Amazon Pinpoint 和報告事件整合的應用程式 ID。如需有關如何整合的資訊,請參閱將 Amazon Pinpoint 與您的應用程式整合。
-
AWS 帳戶中 Kinesis 串流或 Firehose 交付串流的 Amazon Resource Name (ARN)。如需建立這些資源的相關資訊,請參閱 Amazon Kinesis Data Streams 開發人員指南中的建立和管理串流,或 Amazon Data Firehose 開發人員指南 中的建立 Amazon Data Firehose 交付串流。
-
授權 Amazon Pinpoint 將資料傳送至串流ARN的 AWS Identity and Access Management (IAM) 角色的 。如需有關建立角色的資訊,請參閱IAM 將事件串流至 Kinesis 的角色。
AWS CLI
下列 AWS CLI 範例使用 put-event-stream命令。此命令設定 Amazon Pinpoint 將傳送事件到 Kinesis 串流:
aws pinpoint put-event-stream \ --application-id
projectId
\ --write-event-stream DestinationStreamArn=streamArn
,RoleArn=roleArn
AWS SDK for Java
以下 Java 範例設定 Amazon Pinpoint 將事件傳送到 Kinesis 串流:
public PutEventStreamResult createEventStream(AmazonPinpoint pinClient, String appId, String streamArn, String roleArn) { WriteEventStream stream = new WriteEventStream() .withDestinationStreamArn(streamArn) .withRoleArn(roleArn); PutEventStreamRequest request = new PutEventStreamRequest() .withApplicationId(appId) .withWriteEventStream(stream); return pinClient.putEventStream(request); }
此範例會建構WriteEventStream
物件,存放 Kinesis 串流和IAM角色ARNs的 。將 WriteEventStream
物件傳遞到 PutEventStreamRequest
物件,以設定 Amazon Pinpoint 為特定應用程式串流事件。將 PutEventStreamRequest
物件傳遞至 Amazon Pinpoint 用戶端的 putEventStream
方法。
您可以將 Kinesis 串流指派給多個應用程式。如果您執行此操作,Amazon Pinpoint 會將每個應用程式中,以 base64 編碼的事件資料傳送到串流,讓您將資料當成集合分析。下列範例方法接受應用程式 (應用程式) 的清單IDs,並使用先前的範例方法 createEventStream
將串流指派給每個應用程式:
public List<PutEventStreamResult> createEventStreamFromAppList( AmazonPinpoint pinClient, List<String> appIDs, String streamArn, String roleArn) { return appIDs.stream() .map(appId -> createEventStream(pinClient, appId, streamArn, roleArn)) .collect(Collectors.toList()); }
雖然您可以將一個串流指派給多個應用程式,但您無法將多個串流指派給一個應用程式。