AWS Personalize

Send your event data from RudderStack to AWS Personalize.

Amazon Personalize is a machine learning service by AWS. It enables you to create high-quality content recommendations, personalized product and marketing promotions, and much more.

RudderStack supports AWS Personalize as a destination where you can send your event data seamlessly.

info
To use PutUsers and PutItems permissions for this destination, use the latest images for rudder-server and rudder-transformer.

Find the open source code for this destination in the GitHub repository.

Connection compatibility

Destination info
  • Status: Generally Available
  • Supported sources: Android, iOS , Web, Unity, AMP , Cloud, Warehouse, React Native , Flutter, Cordova, Shopify
  • Refer to it as PERSONALIZE in the Integrations object.

Connection modes
SourceCloud modeDevice modeHybrid mode
AMPsupportednot supportednot supported
Androidsupportednot supportednot supported
Cloudsupportednot supportednot supported
Cordovasupportednot supportednot supported
Fluttersupportednot supportednot supported
iOSsupportednot supportednot supported
React Nativesupportednot supportednot supported
Shopifysupportednot supportednot supported
Unitysupportednot supportednot supported
Warehousesupportednot supportednot supported
Websupportednot supportednot supported
Supported message types
SourceIdentifyPageTrackScreenGroupAliasRecord
Cloud mode
Supported sourcessupportednot supportedsupportednot supportednot supportednot supportednot supported

Prerequisites

  • You must have a Personalize service set up in AWS. See the AWS documentation for more information on setting up your Personalize account.
  • Follow these instructions to generate a Tracking ID required for creating the AWS Personalize destination in RudderStack.

Setup

  1. In your RudderStack dashboard, set up a source.
  2. Go to the Overview tab of your source and select Add Destination > Create new destination.
Add new destination in RudderStack dashboard
  1. Select AWS Personalize from the list of destinations. Then, click Continue.

Connection settings

SettingDescription
NameAssign a name to uniquely identify the destination in RudderStack.
Role-based AuthenticationTurn on this toggle to use the RudderStack IAM role for authentication.
IAM Role ARNYou will see this field only if Role-based Authentication is enabled.

Enter the ARN of the IAM role in this field.
Access Key IDYou will see this field only if Role-based Authentication is disabled.

Enter your AWS Access Key ID in this field.
Secret Access KeyEnter the corresponding secret access key in this field.
RegionEnter the region associated with your AWS account in this field.
info

In both role-based and access key-based authentication methods, you will need to set a policy specifying the required permissions for RudderStack to send data to Personalize.

See the Policy permissions section below for more information.

Dataset group settings

SettingDescription
Tracking IDEnter the Tracking ID generated in the Prerequisites section above.
Dataset ARNEnter the dataset ARN of the dataset from the chosen dataset group.

Operational choice settings

SettingDescription
Personalize EventsSelect the type of Personalize event you want to avail from the dropdown. RudderStack supports the following Personalize events:

  • PutEvents
  • PutItems
  • PutUsers

Mapping settings

SettingDescription
Map all fieldsEnter the Schema Field used to create the schema in AWS Personalize (for example, USER_ID, TIMESTAMP, ITEM_ID, etc.).

Then, enter the corresponding Mapped Field — RudderStack takes the value from this field present in the event payload and maps it to the value specified in the Schema Field.

See the Personalize documentation for more information on creating a schema in Personalize.

info
When using the PutItems operation, you need to provide the path to the Mapped Field corresponding to the ITEM_ID present in your Personalize database schema.
Disable stringifying additional propertiesTurn on this toggle to disable the conversion of additional properties to string data type in Personalize.

info
This is an exclusive setting only applicable for the putEvents operation.

If it is disabled, RudderStack converts any mapped fields other than ITEM_ID, EVENT_VALUE, IMPRESSION, RECOMMENDATION_ID, TIMESTAMP, EVENT_TYPE, and USER_ID to a string before forwarding to Personalize.

Policy permissions

To send data to Personalize correctly, you need to create an IAM role and grant the necessary permissions for RudderStack.

The following actions need to be attached to the role while setting up the AWS policy:

"Action": [
    "personalize:PutEvents",
    "personalize:PutUsers",
    "personalize:PutItems"
]

You can use these actions based on the type of Personalize events you want to send. For example, to send only putEvents type of events, you can attach only personalize:PutEvents.

A sample permissions policy that allows a user to send event data into Personalize is shown below:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "CloudWatchEventsInvocationAccess",
      "Effect": "Allow",
      "Action": [
        "personalize:PutEvents",
        "personalize:PutUsers",
        "personalize:PutItems"
        ],
      "Resource": "*"
    }
  ]
}

Identify

You can use the identify call to send data to Personalize using the PutUsers operation.

Note that:

  • For the PutUsers operation, RudderStack sends the value of the userId or anonymousId field in the event payload as userId.
  • You must specify the Dataset ARN field in the RudderStack dashboard settings.

The following snippet highlights a sample identify event with the Mapped Field settings specified in the RudderStack dashboard:

rudderanalytics.identify("1hKOmRA4GRlm", {
  name: "Alex",
  email: "alex@example.com"
  });

Track

You can use the track call to send data to Personalize using the PutEvents and PutItems operations.

Note that:

  • For PutEvents, RudderStack sends the value of the event field in the payload as EVENT_TYPE. Also, the value of the timestamp or originalTimestamp fields in the payload is sent as sentAt.
  • For the PutItems and PutEvents operations, you must specify the Dataset ARN and Tracking ID settings in the RudderStack dashboard settings.

The following snippet shows a sample track event with the mapped fields specified in the RudderStack dashboard settings:

rudderanalytics.track("Product Added", {
  typeOfSdk: "JavaScript",
  numberOfRatings: "12",
  X: "item 1",
});

Using the PutItems operation

When using the PutItems operation, you must map the Schema Field ITEM_ID to a specific key in the event payload. You also need to mention the path to the chosen key as the corresponding Mapped Field.

In the above example, if you map ITEM_ID to the field X, the corresponding Mapped Field will be properties.X.

info
For any other Schema Field in your ITEMS dataset, RudderStack does not recommend specifying the path — only the field name is sufficient.

The following image shows an example of the dashboard configuration for PutItems:

Using the PutEvents operation

When using the PutEvents operation, the Mapped Field for ITEM_ID should not contain the path to the field — only the name of the field is sufficient. The same rule is applicable for any other Schema Field mapping.

The following image shows an example of the dashboard configuration for PutEvents:


Questions? Contact us by email or on Slack