亚马逊个性化目的地


Segment让你很容易将你的数据发送到亚马逊个性化(和许多其他目的地)。一旦你用Segment 's收集数据开源库Segment将你的数据以它可以使用的格式翻译并传送到Amazon Personalize。亚马逊的个性化是一种机器学习服务,可以轻松为开发人员创建用于客户的应用程序的个性化建议。manbetx客户端应用下载AWS个性化启用...

  • 媒体公司将根据观众的观看历史,向他们提供推荐内容
  • 零售商可以根据购物行为提供个性化产品建议
  • 任何公司新万博app2.0下载提供个性化的搜索结果和基于亚马逊开发的最新机器学习功能的目标营销促销活动

由于开发机器学习功能的复杂性,开发生产这些复杂推荐系统所需的机器学习能力已经超出了今天大多数组织的范围。亚马逊个性化允许开发人员没有现有机器学习体验,可以轻松地将复杂的个性化功能轻松地建立在其应用中,使用从Amazon.com上的多年使用的机器学习技术来构建他们的应用程序。

开始

在开始之前,请确保Amazon个性化支持您选择实现的源类型和连接模式。您可以了解更多信息这里的连接模式

网络 移动的 服务器
设备模式
☁️云模式

有一些先决条件:

  1. 段数据流入S3目的地或仓库
  2. 能够创建AWS胶水作业(仅在使用S3到时才需要训练你的模型
  3. 能够在Amazon Web Services中部署Lambda函数
  4. 访问AWS个性化

没有S3,红移仓库或雪花仓库设置?您可以阅读更多关于设置S3的信息在这里,红移在这里,雪花在这里

如果您是一个部分业务层客户,请联系您的Success联系人,发起对S3或您的Warehouse的重放。

有三个主要部分使用亚马逊个性化与细分:

  1. 训练你的模型在S3或仓库中的历史数据。
  2. 创建个性化数据集组和竞选
  3. 连接的建议]和实时事件更新您的活动和部分

训练你的模型

S3 Bucket权限

无论您选择何种方法来训练模型,都将导致将CSV放入S3 bucket中。请确保更新桶的策略以包括这些权限允许Personalize访问您的CSV:

“版本”“2012-10-17”“Id”“PersonalizeS3BucketAccessPolicy”“陈述”“席德”“PersonalizeS3BucketAccessPolicy”“效应”“允许”“主要的”“服务”“personalize.amazonaws.com”},“行动”“s3: GetObject”“s3:listbucket”],“资源”“攻击:aws: s3::: bucket名”“ARN:AWS:S3 :::桶名/ *”

定义一个模式

要培训个性化模型,您需要定义模型名称和属性的事件模式,即您的模型将用作功能。对于下面的示例,我们使用以下个性化数据集模式来培训我们的模型。您希望修改此以满足您的用例。有关个性化模式的更多信息,请参阅:https://docs.aws.amazon.com/personalize/latest/dg/how-it-works-dataset-schema.html

“类型”“记录”“名称”“互动”“命名空间”“com.amazonaws.personalize.schema”“字段”“名称”“USER_ID”“类型”“细绳”},“名称”“item_id”“类型”“细绳”},“名称”“EVENT_TYPE”“类型”“细绳”},“名称”“时间戳”“类型”“长”],“版本”“1.0”

这些示例将展示如何多个Segment跟踪事件可以映射到此模式并用于培训个性化解决方案。

来自红移

如果您已经使用Redshift,请在仓库中的数据上培训您的模型是启动和运行的最简单方法。

从Redshift卸载数据到S3

假设您有如上所述的Personalize模式以下,您可以使用以下查询从您的所有日期中拔出所有日期订单完成加产品, 和产品已浏览事件。

卸载'选择user_id作为user_id,products_sku作为item_id,事件作为event_type,date_part(epoch,“timestamp”)从prod.order_completed union select user_id,product_sku作为item_id,事件为event_type,date_part(epoch,“时间戳”)作为来自prod.product_added的union选择user_id,product_sku作为item_id,事件作为event_type,date_part(epoch,“时间戳”)作为来自prod.product_viewed的时间戳的event_part(epoch,“timestamp”)。's3:// mybucket / my_folder'凭证“aws_access_key_id = aws_access_key_id; aws_secret_access_key = aws_secret_access_key;令牌= AWS_SESSION_TOKEN '地区作为'<你的地区>'分隔符作为”、“平行离开

注意:使用date_part(时代,“时间戳”)作为时间戳因为个性化需要在UNIX /时期时间中指定时间戳。

验证输出文件在AWS控制台中浏览到S3服务页面,并导航到卸载命令。您应该看到输出文件。

来自雪花

有几种方法可以将CSV加载到S3中雪花仓库。此示例显示将数据直接加载到S3存储桶中。

假设您有如上所述的Personalize模式以下,您可以使用以下查询从您的所有日期中拔出所有日期订单完成加产品, 和产品已浏览事件。

将数据从雪花卸载到S3

复制进入S3//mybucket/my_folder/my_file.csv选择用户身份作为USER_IDProducts_sku.作为item_id.事件作为EVENT_TYPEdate_part时代“时间戳”作为时间戳刺激Order_Completed.联盟选择用户身份作为USER_IDProducts_sku.作为item_id.事件作为EVENT_TYPEdate_part时代“时间戳”作为时间戳刺激product_added联盟选择用户身份作为USER_IDProducts_sku.作为item_id.事件作为EVENT_TYPEdate_part时代“时间戳”作为时间戳刺激product_viewedfile_format类型csv单身的真的个性化需要一个CSV文件凭证aws_key_id.“xxxx”aws_secret_key.'xxxxx'aws_token.'xxxxxx');

此示例使用临时S3凭据,这些凭据由AWS STS生成,并在一段特定时间后过期。临时凭证受到推崇的以保护对桶的访问。

验证输出文件在AWS控制台中浏览到S3服务页面,并导航到卸载命令。您应该看到输出文件。

来自S3.

历史数据准备

Segment的S3目的地将包含您配置到S3的所有源数据的副本。在S3 bucket中,您将有一个名为/段日志.在这个文件夹下是另一个文件夹,存放你连接到Segment S3目的地的每个数据源。

注意,除非您计划从S3进行批处理数据提取,否则不需要执行此步骤。

Glue ETL作业需要抓取每个源文件夹,以提取将形成训练集的备份数据。对该数据集的分析超出了本文档的范围。强烈建议您熟悉可以通过Segment发送的事件类型。我们的事件结构在这里详细描述://www.asianminres.com/docs/connections/sources/catalog/librar万博水晶宫ies/server/http/。

以下示例显示了如何配置AWS胶水作业以将段历史数据转换为Apache Avro格式,该格式是个性化想要用于培训数据集的培训。

创建AWS胶水ETL工作

导航到AWS控制台中的胶水服务。单击“开始入门”按钮,然后单击胶合控制台页面上左侧导航中的“作业”。

点击“添加作业”按钮,输入以下信息。

  • 输入一个任务名称,例如“SegmentEventsJsonToCsv”。

  • 对于IAM角色,您需要创建一个角色和执行策略,使您的胶水工作能够写入S3桶:

策略1:

“版本”“2012-10-17”“陈述”“效应”“允许”“行动”“胶水:*”“S3:GetBucketLocation”“s3:listbucket”“s3:listallmybuckets”“s3:getbucketacl”“EC2:DescribeVpCendPoints”“ec2: DescribeRouteTables”“EC2:CreateNetWorkInterface”“EC2:DeletenetWorkInterface”“ec2: DescribeNetworkInterfaces”“ec2: DescribeSecurityGroups”“ec2: DescribeSubnets”“EC2:DescribeVpcattribute”“我:ListRolePolicies”“我:GetRole”“IAM:Getrolopolicy”“监测:PutMetricData”],“资源”“*”},“效应”“允许”“行动”“S3:CreateBucket”],“资源”“攻击:aws: s3::: aws-glue - *”},“效应”“允许”“行动”“s3: GetObject”“s3:putobject”“s3:deleteObject”],“资源”“攻击:aws: s3::: aws-glue - * / *”“ARN:AWS:S3 ::: * / * AWS-GLUE  -  * / *”},“效应”“允许”“行动”“s3: GetObject”],“资源”“攻击:aws: s3::: crawler-public *”“攻击:aws: s3::: aws-glue - *”},“效应”“允许”“行动”“日志:CreateLogGroup”“日志:CreateLogStream”“日志:PutLogEvents”],“资源”“ARN:AWS:日志:*:*:/ aws-glue / *”},“效应”“允许”“行动”“ec2: CreateTags”“EC2:Deletetags”],“状况”“ForAllValues: StringEquals”“aws:tagkeys”“aws-glue-service-resource”},“资源”“ARN:AWS:EC2:*:*:网络界面/ *”“攻击:aws: ec2: *: *:安全组/ *”“ARN:AWS:EC2:*:*:实例/ *”

策略2:

“版本”“2012-10-17”“陈述”“效应”“允许”“行动”“s3: GetObject”“s3:putobject”],“资源”"arn:aws:s3:::{你的bucket arn}/segment-logs/*"“ARN:AWS:S3 ::: {你的桶ARN} /变换/ *”
  • 留下类型为“火花”。
  • 对于“此作业运行”,单击单选按钮“您编写的新脚本”。
  • 将其他所有其他内容留给表单底部并单击“下一步”。
  • 在“连接”步骤中万博水晶宫,单击“保存作业并编辑脚本”,因为您将不会访问该作业的数据库中的数据。

泛型胶水作业的源代码如下。请注意,您需要修改此代码以反映您希望从段日志中提取的事件的名称(请参阅第25行)。

将代码示例复制到剪贴板并将其粘贴到胶水编辑器窗口中。

进口sysawsglue.transforms进口awsglue.utils进口getResolvedOptionsawsglue.context.进口gluecontext.awsglue.dynamicframe.dynamicframe.进口DynamicFrameawsglue.job进口工作pyspark.context进口SparkContext.pyspark.sql.functions进口unix_timestamp## @Params:[Job_Name,S3_JSON_INPUT_PATH,S3_CSV_OUTPUT_PATH]arg游戏getResolvedOptionssysargv“JOB_NAME”“S3_JSON_INPUT_PATH”'s3_csv_output_path'])SC.SparkContext.()glueContextgluecontext.SC.火花glueContextSpark_session.工作工作glueContext工作在里面arg游戏“JOB_NAME”],arg游戏#加载JSON到动态框架datasource0glueContextcreate_dynamic_framefrom_options“s3”“路径”arg游戏“S3_JSON_INPUT_PATH”]]},json的打印“输入文件: ”arg游戏“S3_JSON_INPUT_PATH”])打印“输入文件总记录计数:”datasource0数数())#过滤我们想要的json文档包含在输出csv中支持_Events.'产品添加'订单完成的'产品点击'def函数DynamicRecord.):如果“anonymousId”DynamicRecord.“标识”DynamicRecord.'特性'DynamicRecord.'SKU'DynamicRecord.“特性”'事件'DynamicRecord.DynamicRecord.'事件'支持_Events.):返回真的别的返回错误的#在动态帧中应用过滤器的相互作用过滤器应用框架datasource0f函数转换_ctx.“互动”打印“过滤记录计数:”的相互作用数数())#只映射输出CSV中需要的字段,更改名称以匹配目标模式。applymapping1ApplyMapping应用框架的相互作用映射“匿名”“细绳”“anonymous_id”“细绳”),“标识”“细绳”“USER_ID”“细绳”),“properties.sku”“细绳”“item_id”“细绳”),“事件”“细绳”“EVENT_TYPE”“细绳”),“时间戳”“细绳”“timestamp_iso”“细绳”),转换_ctx.“Applymappping1”#重新分区到单个文件,因为这是Personalize所需要的onepartitiondf.applymapping1Todf.().重新开始1将时间戳合并为unix时间戳onepartitiondf.onepartitiondf.有column.“时间戳”unix_timestamponepartitiondf.'timestamp_iso'],“yyyy-mm-dd't'hh:mm:ss.sss'z'”)))#转换回动态帧onepartitionDynamicFrameFromdf.onepartitiondf.glueContext“onepartition_df”#将输出写回S3作为CSVglueContextwrite_dynamic_frame.from_options框架onepartitionconnection_type“s3”connection_options“小路”arg游戏's3_csv_output_path']},格式“csv”转换_ctx.“dataSink2”工作犯罪()

单击“保存”以保存作业脚本。

让我们更详细地查看脚本的关键部分。首先,使用少量作业参数初始化脚本。当我们在下面运行作业时,我们将看到如何指定这些参数值。现在,只需看到我们在原始JSON文件的位置使用s3_json_input_path.以及输出CSV应通过的位置S3_CSV_OUTPUT_PATH

arg游戏getResolvedOptionssysargv“JOB_NAME”“S3_JSON_INPUT_PATH”'s3_csv_output_path'])

接下来,创建和相关的火花和胶水背景。还创建和初始化胶水作业。

SC.SparkContext.()glueContextgluecontext.SC.火花glueContextSpark_session.工作工作glueContext工作在里面arg游戏“JOB_NAME”],arg游戏

我们工作的第一步是将原始JSON文件加载为胶水动力框架。

datasource0glueContextcreate_dynamic_framefrom_options“s3”“路径”arg游戏“S3_JSON_INPUT_PATH”]]},json的

由于不是由段写入S3的所有事件与培训个性化模型相关,因此我们将使用胶水过滤器转换只保留我们想要的记录。的datasource0上面创建的DynamicFrame被传递给Filter.apply(…)功能伴奏函数函数。它在函数我们保存有产品SKU和用户标识指定的。由此产生的动态框架被捕获为的相互作用

def函数DynamicRecord.):如果DynamicRecord.“特性”][“sku”DynamicRecord.“标识”]:返回真的别的返回错误的的相互作用过滤器应用框架datasource0f函数转换_ctx.“互动”

接下来我们将调用Glue 'sApplyMapping转换、传递的相互作用DynamicFrame和字段映射规范,指出我们想要保留的字段和它们的新名称。这些映射的字段名将成为输出CSV中的列名。你会注意到我们使用产品SKU作为item_id.事件作为EVENT_TYPE.我们也重命名了时间戳领域TIMESTAMP_ISO因为JSON文件中该字段值的格式是ISO 8601日期,Personalize要求以UNIX时间(自Epoc以来的秒数)指定时间戳。

applymapping1ApplyMapping应用框架的相互作用映射“匿名”“细绳”“anonymous_id”“细绳”),“标识”“细绳”“USER_ID”“细绳”),“properties.sku”“细绳”“item_id”“细绳”),“事件”“细绳”“EVENT_TYPE”“细绳”),“时间戳”“细绳”“timestamp_iso”“细绳”),转换_ctx.“Applymappping1”

为了将每条记录的ISO 8601日期格式转换为UNIX时间,我们将使用Spark的日期格式withColumn(…)要创建一个名为时间戳转换后的值TIMESTAMP_ISO场地。在我们拨打电话之前有column.,但是,我们需要将Glue DynamicFrame转换为Spark DataFrame。这是通过召唤来实现的todf()上ApplyMapping转换的输出。由于Personalize要求我们上传的CSV文件是一个单独的文件,我们将调用重新开始(1)强制将所有数据写入单个分区。最后,在创建时间戳在预期的格式中,DyanmicFrame.fromDF ()调用将Dataframe转换回DyanMicFrame。

#重新分区到单个文件onepartitiondf.applymapping1Todf.().重新开始1将时间戳合并为unix时间戳onepartitiondf.onepartitiondf.有column.“时间戳”unix_timestamponepartitiondf.'timestamp_iso'],“yyyy-mm-dd't'hh:mm:ss.sss'z'”)))#转换回动态帧onepartitionDynamicFrameFromdf.onepartitiondf.glueContext“onepartition_df”

最后一步是在指定的路径上将CSV写回S3S3_CSV_OUTPUT_PATH作业属性并提交作业。

glueContextwrite_dynamic_frame.from_options框架onepartitionconnection_type“s3”connection_options“小路”arg游戏's3_csv_output_path']},格式“csv”转换_ctx.“dataSink2”工作犯罪()

运行您的AWS Glue ETL作业创建并保存了我们的ETL Job脚本后,就可以运行该作业来创建培训个性化解决方案所需的CSV了。

在进一步前进之前,通过右键单击页面左上角的AWS徽标,打开另一个AWS控制台浏览器选项卡/窗口,然后选择“在新选项卡中的打开链接”(或窗口)。

虽然仍处于胶水服务控制台和列出的作业中,单击“运行作业”按钮。这将导致参数面板显示。

单击“安全配置,脚本库和作业参数”部分标题以使要显示的作业参数字段。

向下滚动到“作业参数”部分。在这里,我们将为脚本指定输入数据路径和输出文件路径所需的作业参数。使用以下键和值创建两个作业参数。

一定要在每个键前加上-如图所示。替换您的帐户ID(ACCOUNT_ID)在下面的值中。您将桶名从上面打开的选项卡/窗口中的S3服务页面复制到剪贴板中。它们的指定顺序并不重要。

钥匙 价值
-S3_JSON_INPUT_PATH S3://个性化 - 数据 - [Account_ID] /原始事件/
-S3_CSV_OUTPUT_PATH S3://个性化 - 数据 - [Account_ID] /转换

单击“运行作业”按钮以启动作业。不是此对话框滚动。

作业已开始运行后,将在页面底部的“日志”选项卡中看到日志输出。可能需要几分钟时间。

作业完成后,点击页面右上角的“X”退出作业脚本编辑器。

验证输出文件在AWS控制台中浏览到S3服务页面,并以开头的名称查找桶personalize-data -….单击桶名称。如果作业成功完成,则应查看名为“转换”的文件夹。单击“转换”,您应该看到ETL作业创建的输出文件。

创建个性化数据集组、解决方案和活动

创建个性化数据集组

在AWS控制台中浏览到Amazon Personalize服务登陆页面。

单击“查看数据集组”按钮即可开始。

在“数据集组”页面上,单击“创建数据集组”按钮。

在“创建数据集组”页面,给您的数据集组一个名称。

选择“上传用户-项目交互数据”单选按钮,因为我们将上传我们在前面步骤中准备的CSV。

单击“下一步”继续。

在“创建用户项交互数据”页面上,选择“创建新架构”单选按钮,并为架构提供名称。

向下滚动到“模式定义”编辑器。Personalize中的数据集模式表示为Avro..有关Personalize模式定义的详细信息,请参见:https://docs.aws.amazon.com/personalize/latest/dg/how-it-works-dataset-schema.html。

Avro是在Apache的Hadoop项目中开发的远程过程调用和数据序列化框架。它使用JSON定义数据类型和协议,并以紧凑的二进制格式序列化数据。

此示例使用以下示例模式:

“类型”“记录”“名称”“互动”“命名空间”“com.amazonaws.personalize.schema”“字段”“名称”“USER_ID”“类型”“细绳”},“名称”“item_id”“类型”“细绳”},“名称”“EVENT_TYPE”“类型”“细绳”},“名称”“时间戳”“类型”“长”],“版本”“1.0”

让我们更详细地查看架构。用户项交互数据集模式的必填字段是USER_IDitem_id., 和时间戳.另外,还有一个可选字段EVENT_TYPE。

将Avro模式的内容复制到剪贴板中,并将其粘贴到“模式定义”编辑器中(替换建议的模式)。

单击“下一步”以保存架构并移动到下一步。

接下来显示“导入用户-项目交互数据”步骤。为了完成这个表格,我们需要从IAM和S3获得两条信息。为您的导入作业指定一个名称,并将自动导入设置为“Off”。

对于IAM服务角色,在下拉框中选择“创建新角色”。在下一个弹出框中,我们建议在“Specific S3 buckets”选项中列出您的bucket名称,但是您可以自由选择最适合自己需求的选项。

接下来,您将需要在前面的步骤中生成的CSV文件的位置。这需要在屏幕上的“Data Location”字段中进行配置。

点击页面底部的“完成”按钮后,您将返回到Personalize Dashboard,在那里您可以监视正在创建的交互数据集的进度。

要有耐心,因为这个过程可能需要很长时间才能完成。

创建个性化解决方案

一旦我们的事件CSV完成导入到用户-项目交互数据集,我们就可以创建一个Personalize解决方案。

从我们在上面创建的DataSet组的仪表板页面中,单击“创建解决方案”列中的“开始”按钮。

在“创建解决方案”页面上,输入“解决方案名称”。

有关可以使用Personalize的不同食谱的讨论,请参见在这里

单击“完成”按钮以创建解决方案。这个过程需要几分钟到几个小时才能完成。

创建个性化广告系列

已部署的解决方案被称为广告系列,并且能够为您的用户提出建议。要部署解决方案,您可以在控制台中创建一个广告系列,也可以调用CreateCampaign API。您可以选择要使用的解决方案版本。默认情况下,广告系列使用最新版本的解决方案。

在“数据集组仪表板”中,单击“创建新活动”按钮。

输入您的广告系列的名称。选择您在上面创建的解决方案,然后单击“创建广告系列”。

Personalize将开始创建您的新活动。这个过程可能需要几分钟。

在下一节中,我们将建立一个实时拼写的摄取管道,接受来自段的事件,并可以查询您刚才部署的解决方案。

获取建议和实时活动更新

一旦您部署了个性化解决方案并启用了Campaign,您的Lambda就可以消费来自Segment的事件通知,并使用解决方案和Campaign来响应将驱动您的业务案例的事件。

我们提供的示例代码显示如何将事件转发到您部署的个性化解决方案以保持模型更新。然后转发一个识别事件返回Segment,并提供解决方案的建议。

为调用Lambda设置段IAM策略和角色

段需要能够调用(“调用”)您的Lambda以处理事件。这要求您为Lambda配置IAM角色,允许分段帐户调用您的功能。

创建IAM政策。

身份和访问管理(IAM)控制台并按照这些说明进行操作创建一个IAM政策允许段权限调用您的Lambda函数。

选择从JSON创建政策选项中使用以下模板策略政策文件场地。请务必使用适用的值更改{region},{account-id}和{function-names}。Lambda Arn的一个例子ARN:AWS:Lambda:Us-West-2:355207333203:功能:my-example-function

注意:您可以在占位符ARN中放入占位符,因为您需要重新返回此步骤,以便在创建的Lambda的ARN中更新。

“版本”“2012-10-17”“陈述”“效应”“允许”“行动”“lambda:invokefunction”],“资源”“lambda arn 1”“lambda arn 2”...“lambda arn n”

创建IAM角色

身份和访问管理(IAM)控制台并按照这些说明进行操作创建IAM角色允许段权限调用您的Lambda函数。

设置新角色时,添加您在上一步中创建的策略。

完成您可能想要的任何其他设置项目(如标签)。一旦完成,从中搜索并点击您的新角色我回家

选择“信任关系”选项卡,然后点击“编辑信任关系”按钮。

将以下内容复制并粘贴到您的信任关系中。你应该替换使用附加的段源的Source ID(默认)或您在Amazon Lambda目标设置中设置的任何自定义外部ID。注意:源ID可以通过从段源主页浏览到设置> API键来找到。

“版本”“2012-10-17”“陈述”“效应”“允许”“主要的”“aws”“ARN:AWS:IAM :: 595280932656:root”},“行动”“sts: AssumeRole”“状况”“StringEquals”“STS:Ultherid”“your_segment_source_id”

如果您使用了多个源使用此角色,请更换STS:Ultherid.上面设置与

“STS:Ultherid”“your_segment_source_id”“另一个_source_id”“a_third_source_id”

构建一个兰姆达函数来处理段事件

为了处理来自Segment的事件,需要提供一个lambda函数来处理事件流。此功能可用于将事件转发到您的个性化解决方案的跟踪器,或用于后处理事件,从您的解决方案获取建议,或将这些结果推回Segment,以便稍后在您配置的目的地中使用。

我们允许您发送每个呼叫类型(跟踪识别等)到不同的Lambda函数。下面的示例显示了一个可用于处理任何呼叫的一般功能。

我们提供一个用Python编写的leambda函数,让您启动和运行。

首先浏览您的AWS帐户中的Lambda服务页面。

点击“创建功能”按钮,创建新功能。

选择“来自Scratch”的“作者”单选按钮,因为我们将提供函数的源代码。

为函数输入一个名称,并选择Python 3.7作为运行时。

对于“Role”字段,从下拉菜单中选择“从AWS策略模板中创建新角色”。创建一个对您有意义的“角色名称”,并将“策略模板”保留为空。我们稍后会回来修改这个角色。

单击“创建功能”。

Lambda函数源代码

一,下载. zip在https://github.com/seymiro/segment-lambda-recipes/blob/master/sepport/segment_personalize_boilerplate.zip。

在Lambda函数屏幕中,向下滚动到“函数代码”面板。对于“代码输入类型”,选择“上传。zip文件”,点击“上传”按钮,然后加载. zip您在第一步中下载了。

现在您应该能够在代码编辑器中看到代码(和关联文件夹)。

Segment将在每个事件中调用lambda一次。所提供的代码将从它获取的Segment事件映射Segment事件字段,并将它们发送到Personalize Tracker。然后它会调用Personalize来获取事件中用户id的推荐,并将该推荐作为用户特征推送回Segment,使用识别称呼。

确保点击节省经常在下一步期间!

使用Lambda层提供个性化API(仅限预览)

您将在函数源代码中注意到以下内容进口和函数调用。

进口进口init_personalize_api作为api_helper...api_helper在里面()

进口函数调用使用一些样板代码,打包为lambda层,需要使用AWS Python SDK配置个性化API。只有在个性化在预览中时才需要。一旦个性化是GA,API与Python SDK捆绑在一起,以及其他语言SDK,将不再需要此支持层。

要安装我们的图层,请打开Lambda导航面板,然后单击“图层”。

λ导航面板"></p>
        <p><img src=

在此角色中单击策略旁边的箭头,然后单击“编辑策略”旁边的箭头。

将下面的代码添加到JSON编辑器中的现有权限中。然后是“Review Policy”和“Save Changes”。

“效应”“允许”“行动”“个性化:getRecommencations”“个性化:记录”“个性化:PutEvents”],“资源”“*”

连接个性化事件跟踪器

我们功能的另一个依赖性是调用个性化的能力PutEvents API端点如以下摘录所示。

personalize_eventsput_events.trackingIdOS.环境personalize_tracking_id.],用户标识事件用户标识],sessionId事件匿名],eventListeventId事件MessageId.],Sentat.intDP.解析事件时间戳])。strftime%S.)),事件类型事件事件],特性杰森倾倒特性

trackingId函数参数标识要处理我们提交的事件的个性化事件跟踪器。此值传递给我们的Lambda函数作为环境变量。

让我们为前面创建的数据集组创建一个个性化事件跟踪器。

在另一个浏览器选项卡/窗口中,浏览到AWS控制台中的个性化服务登录页面。

单击DataSet组,然后单击左侧导航中的“事件跟踪器”。

单击“创建事件跟踪器”按钮。

为事件跟踪器输入名称。

您需要为个性化配置一个角色,允许它执行跟踪器。这与您之前定义的执行角色相同:

通常情况下,这将自动包含在一个标签为“amazon.com personalizefullaccess”的策略中。

“版本”“2012-10-17”“陈述”“效应”“允许”“行动”“个性化:*”],“资源”“*”},“效应”“允许”“行动”“监测:PutMetricData”],“资源”“*”},“效应”“允许”“行动”“s3: GetObject”“s3:putobject”“s3:deleteObject”“s3:listbucket”],“资源”“攻击:aws: s3::: *个性化*”“ARN:AWS:S3 ::: *个性化*”},“效应”“允许”“行动”“IAM:Passrole”],“资源”“*”“状况”“StringEquals”“我:PassedToService”“personalize.amazonaws.com”

这可能会自动包含为策略“AmazonPersonalize-ExecutionPolicy-

“版本”“2012-10-17”“陈述”“行动”“s3:listbucket”],“效应”“允许”“资源”“ARN:AWS:S3 ::: {你的S3桶}”},“行动”“s3: GetObject”“s3:putobject”],“效应”“允许”“资源”“ARN:AWS:S3 ::: {你的S3桶} / *”

事件跟踪器的跟踪ID显示在以下页面上,也可以在“事件跟踪器的详细信息页面上”。

将此值复制到剪贴板。

返回我们的Lambda函数,将事件跟踪器的跟踪ID粘贴到环境变量中,为我们的功能键personalize_tracking_id.

接下来,我们需要为Segment和函数添加环境变量,以便告诉它Personalize Campaign调用来检索推荐。

要获取个性化Campaign ARN,请浏览到AWS控制台中的个性化服务登录页面。

选择前面创建的“数据集组”,然后在左侧导航中选择“活动”。

点击您之前创建的广告系列,并将“Campaign ARN”复制到剪贴板。

返回Lambda函数并向下滚动到“环境变量”面板。

添加一个带有键的环境变量个人化_campaign_arn.和活动ARN的价值在您的剪贴板。滚动到页面的顶部并点击“保存”按钮来保存您的更改。

最后,我们需要一个关键字Segment源将获得我们的更新事件。

返回“段”工作区“选项卡或”窗口“,然后单击将从Lambda接收事件的源,然后从”概述“选项卡复制写入键。

再次返回到Lambda选项卡或窗口,并将键粘贴到名为万博水晶宫connections_source_api_key

一定要点击节省给你,不然你得再来一遍。

您的Lambda现在已准备好接收部分的活动。接下来,您需要启用段个性化目标。

配置段个性化lambda目的地

启用Lambda功能后,您可以使用个性化目标从段发送事件。

在我们的目录中搜索“亚马逊个性化”。将目标连接到前面创建的源。现在,您将看到Amazon Personalize Settings。

我们允许您将每个调用类型发送到不同的Lambda。如果您为给定的调用类型保留Lambda字段为空,我们将不会尝试发送任何这些调用。

追踪

有两个设置与跟踪呼叫相关:

  1. 跟踪调用的Lambda -我们应该路由跟踪调用的Lambda。
  2. 事件 - 要发送的特定事件列表。你可以发送全部跟踪事件(有关如何操作的说明,请参阅设置细节),但使用此选项时要谨慎,因为它可能会显著增加您的Lambda成本。

常见问题解答

什么是日志类型设置?

此设置控制日志类型对于使用云手表的Lambda功能。选择选项尾巴如果你想看的话详细的日志在云手表中。

我的lambda <>段连接是时机,我该怎么办?

由于我们的活动传递系统,离心机,您的Lambda运行每条消息的时间不会超过5秒。如果您经常遇到超时问题,您应该咨询AWSλ文档以及用于优化性能的提示,以及选择语言的文档。

个人

您可以发送计算特征和受众生成使用段角色作为一个用户属性.要了解更多关于人物角色的信息,请联系我们演示

对于用户属性目的地识别调用被发送到目的地,针对正在添加和删除的每个用户。属性名称是受众名称的Snake_cased版本,具有真正/假值以指示成员资格。例如,当用户首先在过去30天内完成订单时,PersonAs会向属性发送标识呼叫order_completed_last_30days:真.当用户不再满足这种情况时(例如,自上次订单以来已经超过30天),Personas将该值设置为错误的

当您第一次创建一个受众时,Personas会为该受众中的每个用户发送一个Identify调用。稍后的用户同步只发送自上次同步以来成员变更的用户的更新。

设置

Segment可以让你改变这些目标设置从Segment应用程序无需触摸任何代码。

客户端环境

可选地图传递给Lambda函数。看AWSλ文档为更多的信息。

外部ID

这是一个可选的字符串段将用于假设提供的角色调用lambda函数。如果未定义此设置,我们将使用源ID。有关在假设AWS角色的同时有关外部ID的更多信息,请检查在这里

λ

要调用的Lambda函数的名称。以下是支持的名称格式:

  • 函数名称(我的功能)或以别名(我的函数:v1)。
  • 函数是(攻击:aws:λ:us-west-2:123456789012:功能:函数)。
  • 部分ARN(123456789012:函数:函数)。

您可以将版本号或别名附加到任何格式。

日志类型

λ日志类型.默认情况下没有一个

选择尾巴如果你想在Cloud Watch中查看详细的日志。

地区

lambda所在的AWS区域。如果它没有定义,我们将使用us-west-2默认情况下。

角色地址

将调用Lambda的AWS角色的地址(例如:攻击:aws:我::874699288871:/ example-role角色)。

此页面上次修改:2010年10月20日



开始使用细分

细分是将你的网站和手机应用数据整合到300多个分析和增长工具中的最简单方法。
要么
创建免费帐户