0

有没有办法使用他们的 REST API 而不是 SDK 来“放置事件”?

例如,在他们的文档中,我看到https://docs.aws.amazon.com/personalize/latest/dg/API_UBS_PutEvents.html

POST /events HTTP/1.1
Content-type: application/json

{
   "eventList": [ 
      { 
         "eventId": "string",
         "eventType": "string",
         "eventValue": number,
         "impression": [ "string" ],
         "itemId": "string",
         "properties": "string",
         "recommendationId": "string",
         "sentAt": number
      }
   ],
   "sessionId": "string",
   "trackingId": "string",
   "userId": "string"
}

但是我已经在各处搜索文档以查找基本 url,但它似乎根本没有列出。

我们的问题是我们需要记录事件以从 iOS 和 Web 进行个性化,虽然似乎有一个 js sdk,但似乎没有用于个性化的 iOS sdk,所以我们希望通过简单的 REST 调用来实现。

或者使用 lambda 函数 + api 网关会更好吗?

4

1 回答 1

0

尽管您可以直接对 Kisaragi 评论中引用的服务端点进行 API 调用,但您必须使用您的 AWS 访问密钥和密钥使用 SigV4对您的请求进行签名。AWS 语言开发工具包会为您执行此操作,并且AWS Amplify提供适用于iOSJavaScript的 AWS 开发工具包。对于 JavaScript,Personalize 有一个分析提供程序,可用于将事件从您的 Web 应用程序直接发送到 Personalize 事件跟踪器。Amplify 使用 Amazon Cognito 进行经过身份验证和未经身份验证的调用,因此需要考虑额外的依赖关系。

正如您所提到的,另一种方法是使用 Amazon API Gateway 创建一个公共端点,您的 iOS 和 Web 应用程序都可以使用您选择的身份验证方案(JWT、IAM、Cognito、Lambda 授权方等)调用该端点。Lambda 函数可用于将事件从 API Gateway 编组到使用 PutEvents API 的 Personalize 事件跟踪器。另一种常见模式是让 API Gateway将事件发送到 Kinesis Data Stream,并让您的 Lambda 函数使用来自 Kinesis for Personalize 和Kinesis Data Firehose的事件将事件发送到 S3。这不仅在您的事件生产者(应用程序)和消费者(个性化)之间提供了一个更具弹性的解耦架构,而且还允许您更轻松地对您的事件执行更多操作,例如点击流分析、将事件重播到另一个 Personalize 数据集组等。Amazon Personalize Samples GitHub 存储库上的可部署解决方案,提供 API Gateway/Kinesis Data Stream/Kinesis Firehose to S3/Lambda to Personalize 架构。

于 2021-10-07T14:04:02.823 回答