Overview
KinesisStream connects Unreal Engine 4.27 and 5.8 to Amazon Kinesis Data Streams and Amazon Data Firehose. The KinesisStream Telemetry component turns gameplay into newline-delimited JSON events with standard fields and sends them in batches; Firehose delivers them to S3 (for Athena, Glue or any data lake) or to an HTTP endpoint, and Kinesis data streams feed real-time consumers such as Lambda, Managed Flink or your own servers. All requests run on background worker threads; every result arrives on the game thread.
- KinesisStream Telemetry component: Track Event with properties and numbers, standard fields (event id, UTC timestamp, session, player, build, platform, map, sequence), buffering by count / bytes / age, offline spool on disk with a size cap and replay, per-session sampling, persisted Opt Out / Opt In, global properties, session events.
- Data streams: Put Record, Put Records (500 records / 5 MB per request, retries only the failed entries with back-off), shard iterators (Trim Horizon, Latest, At Timestamp, At / After Sequence Number), Get Records, Read Records, List Shards, Describe Stream Summary, List Streams.
- KinesisStream Consumer component: polling consumer for one shard or all shards, new shards after resharding, iterator renewal, checkpoints saved to disk, lag (MillisBehindLatest), back-off.
- Firehose: Put Firehose Record, Put Firehose Record Batch (500 / 4 MiB, partial-failure retry), Describe and List Delivery Streams.
- Admin: Create / Delete Stream (on-demand or provisioned), retention, Update Shard Count, Wait For Stream Active, Create Delivery Stream To S3 / To HTTP Endpoint, Delete Delivery Stream.
- Helpers: Kinesis partition-key hashing and shard lookup, record builders, UTF-8 conversion, JSON line parsing, ARNs, JSON helpers.
Polling onlyThe consumer uses Get Records over plain HTTPS. Enhanced fan-out (SubscribeToShard) needs HTTP/2, which the engine's libcurl on Linux and Android does not provide, so it is intentionally not used.
Requirements
| Requirement | Details |
| Unreal Engine | 4.27 and 5.8 |
| Platforms | Win64, Linux and Android |
| Modules | KinesisStream (Runtime), KinesisStreamSdk (prebuilt AWS SDK for C++ 1.11.916 in Source/ThirdParty) |
| Dependencies | No other plugins. On Linux and Android the SDK uses the engine's libcurl, OpenSSL and certificate store. |
| AWS | An AWS account. Kinesis, Firehose, S3 and Cognito usage is billed by AWS. |
Installation
- Install KinesisStream from Fab into your engine, or copy the
KinesisStream folder into your project's Plugins folder.
- Enable KinesisStream in Edit > Plugins and restart the editor.
- Open Project Settings > Plugins > KinesisStream and set Region, Identity Pool Id and Default Stream Name and / or Default Delivery Stream Name.
- C++ only: add
PublicDependencyModuleNames.Add("KinesisStream"); to your Build.cs.
Several AWS plugins in one projectEach Alpha XP cloud plugin carries its own copy of the SDK under a plugin-specific name, so they install side by side without conflicts.
Setting up AWS
- In Amazon Cognito create an identity pool with guest access (telemetry usually starts before sign-in).
- Create the destination: a Firehose stream (Direct PUT, destination S3, buffering 5 MB / 300 s) for analytics in S3, and / or an on-demand Kinesis data stream for real-time processing. Editor tools can do this with Create Delivery Stream To S3 and Create Stream.
- Give the guest / player role of the pool only the write actions on those resources:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["kinesis:PutRecord", "kinesis:PutRecords"],
"Resource": "arn:aws:kinesis:us-east-1:123456789012:stream/mygame-telemetry"
},
{
"Effect": "Allow",
"Action": ["firehose:PutRecord", "firehose:PutRecordBatch"],
"Resource": "arn:aws:firehose:us-east-1:123456789012:deliverystream/mygame-events-to-s3"
}
]
}
Consumers (dedicated servers, live-ops tools, spectator / replay clients) need the read actions on the stream:
{
"Effect": "Allow",
"Action": ["kinesis:DescribeStreamSummary", "kinesis:ListShards", "kinesis:GetShardIterator", "kinesis:GetRecords"],
"Resource": "arn:aws:kinesis:us-east-1:123456789012:stream/mygame-telemetry"
}
Admin nodesCreate / Delete Stream, Increase / Decrease Stream Retention, Update Shard Count, Create Delivery Stream To S3 / To HTTP Endpoint and Delete Delivery Stream need kinesis:CreateStream, kinesis:DeleteStream, kinesis:IncreaseStreamRetentionPeriod, kinesis:DecreaseStreamRetentionPeriod, kinesis:UpdateShardCount, kinesis:AddTagsToStream, firehose:CreateDeliveryStream, firehose:DeleteDeliveryStream and iam:PassRole on the Firehose delivery role. List Streams / List Delivery Streams need kinesis:ListStreams / firehose:ListDeliveryStreams, Describe Delivery Stream needs firehose:DescribeDeliveryStream. Use them from editor utilities and servers with Static Keys or the Default Credential Chain — never grant them to the player role.
The Firehose delivery role is trusted by firehose.amazonaws.com and allowed s3:PutObject, s3:GetBucketLocation, s3:ListBucket and s3:AbortMultipartUpload on the bucket.
Never ship access keysStatic keys in the settings end up in DefaultGame.ini and in packaged games. Shipping builds refuse settings keys unless Allow Static Keys In Shipping is enabled.
Quick start
Analytics events into S3 (Firehose)
- Set Default Delivery Stream Name in the settings.
- Add a KinesisStream Telemetry component to your GameState (or an actor that lives for the whole session). Set Destination = Data Firehose.
- Call Track Event with Event Name
level_complete, Properties level=forest_02 and Values time=93.5, stars=3.
- After a few minutes (the Firehose buffer) the events appear in your bucket as
.ndjson objects, one JSON line per event — ready for an Athena table.
- Offer a privacy switch with Opt Out / Opt In; the choice is remembered.
Real-time stream (Kinesis)
- Set Default Stream Name. Use Put Record for single records or Put Records for batches; check Result > Failed Count.
- On a server or tool, add a KinesisStream Consumer component, Starting Position Latest, and bind On Records. Call Start Consumer. Each record has Data (text), Bytes, Partition Key, Sequence Number and Arrival Time; use Parse Event Line for telemetry lines.
- Restart the game: the consumer resumes after its saved checkpoints.
Telemetry component
- Buffering: a batch is sent when Max Batch Records (500) or Max Batch Bytes (1 MB) are queued, when the oldest event is Max Age Seconds (10) old, or on Flush Now. One flush runs at a time; each flush retries rejected records (Max Retries rounds).
- Offline spool: when three flushes in a row deliver nothing (no network, throttling) the queue is written to
Saved/KinesisStream/spool/*.ndjson and flushing backs off (2 … 60 s). When a flush succeeds again the spool is replayed. At end of play the queue is spooled and sent on the next start (Replay Spool On Start). Max Spool MB caps the folder; the oldest files go first. Without the spool, end of play sends the rest fire-and-forget.
- Sessions and sampling: a session starts automatically (session id GUID, sequence numbers from 1). Sampling Rate is decided per session so sampled sessions are complete. session_start / session_end events (duration_seconds, event_count) are optional.
- Partition keys (Kinesis): session id (default, keeps a session in order), player id, event name or random.
- Privacy: Opt Out clears the queue, optionally deletes the spool and stops tracking; Persist Opt Out stores the choice in
Saved/KinesisStream/telemetry-optout.flag.
A flush in flight at end of playis not re-spooled; if it fails, those events are lost. Call End Session (which flushes) a moment before quitting when every event counts.
Consumer component
- Polls every Poll Interval seconds (default 1; Kinesis allows 5 Get Records calls per second per shard shared by all readers) with Max Records Per Poll (1000).
- Shard Id empty = every shard. The shard list is refreshed every Shard Refresh Interval and as soon as a shard closes; shards found after the start (children of a reshard) are read from their trim horizon so no record is skipped. Parent and child shards are polled in parallel, so records around a reshard can interleave.
- Iterators expire after 5 minutes; an expired iterator is renewed from the checkpoint automatically.
- Checkpoints: with Auto Checkpoint the last sequence number of each delivered page becomes the checkpoint; otherwise call Set Checkpoint after processing. They are saved every Checkpoint Save Interval seconds, on Stop and at end of play to
Saved/KinesisStream/checkpoints/<name>.ini.
- Errors: throttling and network errors back off (1 … Max Backoff Seconds); permanent errors (stream not found, access denied, not configured) stop the consumer and fire On Consumer Stopped.
Node reference
All 88 nodes, grouped by Blueprint category. Latent nodes run in the background, fire exactly one final pin on the game thread and can be stopped with Cancel. Empty Stream Name / Delivery Stream Name inputs use the defaults from the settings. Nodes marked (admin) need admin IAM permissions.
Config and identity
| Node | Kind | Inputs | Outputs | Purpose |
| Set Region | Callable | Region | - | Switches the AWS region for every following request. |
| Set Credential Mode | Callable | Mode | - | Overrides the credential mode from the settings. |
| Set Login Token | Callable | Provider, Token | - | Signs the player in to the identity pool with a provider token. |
| Clear Login Tokens | Callable | - | - | Forgets all tokens; the player becomes a guest. |
| Set Static Credentials | Callable | Access Key Id, Secret Access Key, Session Token | - | Uses these keys from now on (Static Keys mode). |
| Get Identity Id | Pure | - | Identity Id | The player's Cognito identity id (empty until resolved). |
| Make User Pool Provider Name | Pure | Region, User Pool Id | Provider | Login key of a Cognito user pool. |
| Is Configured | Pure | - | bool, Problem | False plus a reason when the settings are incomplete. |
| Set Default Streams | Callable | Stream Name, Delivery Stream Name | - | Runtime override of the default stream names (empty keeps the setting). |
| Resolve Identity | Latent | Force Refresh | On Success / On Failure (Identity Id, Error) | Fetches Cognito credentials now so errors show up early. |
| Cancel | Callable | (latent node) | - | None of the node's pins fire any more. |
| Is Finished | Pure | (latent node) | bool | True after the node finished or was cancelled. |
Data Streams
| Node | Kind | Inputs | Outputs | Purpose |
| Put Record | Latent | Data, Partition Key, Stream Name, Explicit Hash Key, Sequence Number For Ordering | On Success / On Failure (Result, Error) | Writes one text record; Result has Shard Id and Sequence Number. |
| Put Records | Latent | Entries, Stream Name, Max Retries | On Success / On Failure (Batch Result, Error) | Writes many records (500 / 5 MB per request), retries only the failed entries with back-off; one result per entry. |
| Get Shard Iterator | Latent | Shard Id, Iterator Type, Sequence Number, Timestamp, Stream Name | On Success / On Failure (Iterator, Error) | A read position (valid 5 minutes). |
| Get Records | Latent | Shard Iterator, Limit, Shard Id | On Success / On Failure (Page, Error) | Records, next iterator, lag, child shards, closed flag. |
| Read Records | Latent | Shard Id, Starting Position, Sequence Number, Timestamp, Stream Name, Limit | On Success / On Failure (Page, Error) | Iterator plus the first page in one node. |
| List Shards | Latent | Stream Name, Filter, Filter Shard Id, Filter Time, Next Token, Max Results | On Success / On Failure (Page, Error) | Shards with hash key and sequence ranges, open flag; paged. |
| Describe Stream Summary | Latent | Stream Name | On Success / On Failure (Summary, Error) | Status, capacity mode, retention, open shards, consumers, encryption. |
| List Streams | Latent | Next Token, Limit | On Success / On Failure (Page, Error) | Stream names and summaries of the account and region; paged. |
Firehose
| Node | Kind | Inputs | Outputs | Purpose |
| Put Firehose Record | Latent | Data, Delivery Stream Name, Append Newline | On Success / On Failure (Result, Error) | Sends one record (up to 1000 KiB); Result has the Record Id. |
| Put Firehose Record Batch | Latent | Records, Delivery Stream Name, Append Newline, Max Retries | On Success / On Failure (Batch Result, Error) | Sends many records (500 / 4 MiB per request), retries only the failed ones. |
| Describe Delivery Stream | Latent | Delivery Stream Name | On Success / On Failure (Info, Error) | Status, type, timestamps, failure, encryption, S3 / HTTP destination and buffering. |
| List Delivery Streams | Latent | Exclusive Start Name, Limit | On Success / On Failure (Page, Error) | Firehose stream names; Has More for paging. |
Admin
| Node | Kind | Inputs | Outputs | Purpose |
| Create Stream | Latent | Stream Name, Capacity Mode, Shard Count, Tags | On Success / On Failure (Error) | (admin) Creates an on-demand or provisioned stream. |
| Delete Stream | Latent | Stream Name, Enforce Consumer Deletion | On Success / On Failure (Error) | (admin) Deletes a stream and its data (no default name). |
| Increase Stream Retention | Latent | Stream Name, Retention Hours | On Success / On Failure (Error) | (admin) Up to 8760 hours. |
| Decrease Stream Retention | Latent | Stream Name, Retention Hours | On Success / On Failure (Error) | (admin) Down to 24 hours. |
| Update Shard Count | Latent | Stream Name, Target Shard Count | On Success / On Failure (Result, Error) | (admin) Uniform resharding of a provisioned stream. |
| Wait For Stream Active | Latent | Stream Name, Poll Interval Seconds, Timeout Seconds | On Success / On Failure (Summary, Error) | Polls until the stream is ACTIVE. |
| Create Delivery Stream To S3 | Latent | Delivery Stream Name, Destination (role, bucket, prefixes, buffering, compression, extension) | On Success / On Failure (Arn, Error) | (admin) Direct-put Firehose stream into S3. |
| Create Delivery Stream To HTTP Endpoint | Latent | Delivery Stream Name, Destination (url, name, access key, role, backup bucket, buffering, gzip) | On Success / On Failure (Arn, Error) | (admin) Direct-put Firehose stream to an HTTPS endpoint with S3 backup. |
| Delete Delivery Stream | Latent | Delivery Stream Name, Allow Force Delete | On Success / On Failure (Error) | (admin) Deletes a Firehose stream (no default name). |
Records
| Node | Kind | Inputs | Outputs | Purpose |
| Make Record Entry | Pure | Data, Partition Key, Explicit Hash Key | Entry | Text record for Put Records (empty key = random). |
| Make Record Entry From Bytes | Pure | Bytes, Partition Key, Explicit Hash Key | Entry | Binary record for Put Records. |
| String To UTF-8 Bytes | Pure | Text | Bytes | UTF-8 encoding. |
| UTF-8 Bytes To String | Pure | Bytes | Text | UTF-8 decoding. |
| Hash Partition Key | Pure | Partition Key | Hash Key (decimal) | The 128-bit MD5 hash key Kinesis uses for shard routing. |
| Get Shard For Partition Key | Pure | Partition Key, Shards, Explicit Hash Key | bool, Shard Id | Which shard of a List Shards result a key lands on (find hot keys). |
| Make Random Partition Key | Callable | - | Key | A GUID key that spreads records over all shards. |
| Split JSON Lines | Pure | Text | Lines | Splits newline-delimited JSON, skipping empty lines. |
| Make Stream Arn | Pure | Account Id, Stream Name, Region | Arn | arn:aws:kinesis:<region>:<account>:stream/<name>. |
| Get Name From Arn | Pure | Arn | Name | Stream / delivery stream name from an ARN. |
| Is Retryable Error Code | Pure | Error Code | bool | True for throttling, internal and network errors. |
Events
| Node | Kind | Inputs | Outputs | Purpose |
| Make Event | Pure | Name, Properties, Values | Event | Builds an event for Track Prepared Event / Event To JSON Line. |
| Make Properties | Pure | Keys, Values | Properties | Property map from two parallel arrays. |
| Add Event Property | Pure | Event, Key, Value | Event | Adds a text property. |
| Add Event Value | Pure | Event, Key, Value | Event | Adds a numeric value. |
| Event To JSON Line | Pure | Event, Append Newline | Line | Serializes an event (event, event_id, ts, props, values). |
| Parse Event Line | Pure | Line | bool, Event, Standard Fields | Reads a telemetry line back (consumers, tools). |
| Make ISO 8601 Timestamp | Pure | Time | Text | UTC time as 2026-10-28T14:03:07.123Z. |
JSON
| Node | Kind | Inputs | Outputs | Purpose |
| Struct To JSON | Callable | Struct (any) | bool, Json | Any struct to a JSON object string. |
| JSON To Struct | Callable | Json | bool, Out Struct (any) | Fills a struct from JSON. |
| Get JSON Field | Pure | Json, Path | bool, Value | One value by path such as props.level. |
Consumer (KinesisStream Consumer component)
| Node | Kind | Inputs | Outputs | Purpose |
| Start Consumer | Callable | Stream Override | - | Starts polling (resumes from checkpoints). |
| Stop Consumer | Callable | - | - | Stops polling and saves the checkpoints. |
| Is Running | Pure | - | bool | True while started. |
| Get Lag | Pure | - | Milliseconds | Largest MillisBehindLatest over the open shards. |
| Get Shard Lag | Pure | Shard Id | Milliseconds | Lag of one shard (-1 = not tracked). |
| Get Checkpoint | Pure | Shard Id | Sequence Number | Last processed record of a shard. |
| Set Checkpoint | Callable | Shard Id, Sequence Number | - | Manual checkpointing (Auto Checkpoint off). |
| Save Checkpoints | Callable | - | bool | Writes the checkpoint file now. |
| Reset Checkpoints | Callable | - | - | Forgets all checkpoints (memory and file). |
| Get Shard States | Pure | - | Shard States | Checkpoint, lag, records and finished flag per shard. |
| Get Stats | Pure | - | Consumer Stats | Records, polls, errors, renewals, shards, lag, uptime, last error. |
| Set Poll Interval | Callable | Seconds | - | Changes the poll interval (0.2 - 60 s). |
Events: On Records (Records, Shard Id, Millis Behind Latest), On Shard Finished, On Consumer Error, On Consumer Stopped.
Telemetry (KinesisStream Telemetry component)
| Node | Kind | Inputs | Outputs | Purpose |
| Track Event | Callable | Event Name, Properties, Values | bool | Queues one event with the standard fields. |
| Track Prepared Event | Callable | Event | bool | Queues an event from Make Event (keeps its timestamp / id). |
| Flush Now | Callable | - | bool | Sends the queue now. |
| Get Queue Size | Pure | - | Count | Events waiting in memory. |
| Get Dropped Count | Pure | - | Count | Events lost for good since BeginPlay. |
| Set Global Property | Callable | Key, Value | - | Adds a property to every following event. |
| Remove Global Property | Callable | Key | bool | Removes one global property. |
| Clear Global Properties | Callable | - | - | Removes all global properties. |
| Get Global Properties | Pure | - | Map | The current global properties. |
| Start Session | Callable | Properties | Session Id | New session (sampling decided, session_start event). |
| End Session | Callable | - | - | session_end event and a flush. |
| Get Session Id | Pure | - | Session Id | Empty when no session runs. |
| Set Player Id | Callable | New Player Id | - | player_id of the following events. |
| Opt Out | Callable | Delete Spool | - | Stops tracking, clears the queue (persisted). |
| Opt In | Callable | - | - | Allows tracking again. |
| Is Opted Out | Pure | - | bool | The player's privacy choice. |
| Set Sampling Rate | Callable | Rate | - | Share of sessions that send events (next session). |
| Get Stats | Pure | - | Telemetry Stats | Tracked, sampled out, sent, failed, dropped, spooled, replayed, flushes, queue bytes. |
| Replay Spool | Callable | - | Loaded Count | Loads spooled events into the queue now. |
| Get Spool Size | Pure | - | Bytes | Size of the spool folder. |
| Clear Spool | Callable | - | Deleted Files | Deletes every spool file. |
| Set Destination | Callable | New Destination, New Stream Name | - | Switches between Kinesis and Firehose at runtime. |
Events: On Flushed (Sent Count, Failed Count), On Failed (Error, Lost Count).
All latent node classes (UKinesisStreamPutRecordsAction and the others) can be created from C++ through their static factory functions; bind the delegates, then call Activate().
C++ API
#include "KinesisStreamLibrary.h"
TArray<FKinesisStreamRecordEntry> Entries;
Entries.Add(UKinesisStreamLibrary::MakeRecordEntry(TEXT("{\"hp\":42}"), TEXT("player-7"), FString()));
UKinesisStreamLibrary::PutRecordsNative(TEXT("mygame-telemetry"), Entries, 3,
FKinesisStreamNativePutDelegate::CreateLambda([](const FKinesisStreamPutBatchResult& Result, const FKinesisStreamError& Error)
{
UE_LOG(LogTemp, Log, TEXT("%d stored, %d failed %s"), Result.SucceededCount, Result.FailedCount, *Error.Message);
}));
FirehosePutRecordBatchNative does the same for Firehose; BuildEventLine serializes an event with an optional FKinesisStreamEventContext.
Types
| Type | Kind | Members |
| FKinesisStreamRecordEntry | Struct | Data, Bytes, Partition Key, Explicit Hash Key |
| FKinesisStreamPutResult / FKinesisStreamPutBatchResult | Struct | Index, Success, Shard Id, Sequence Number, Error Code / Message, Attempts; Results, Succeeded / Failed Count, Request Count, Retry Rounds |
| FKinesisStreamRecord / FKinesisStreamRecordsPage | Struct | Data, Bytes, Partition Key, Sequence Number, Arrival Time, Shard Id, Encrypted; Records, Next Shard Iterator, Millis Behind Latest, Child Shard Ids, Shard Closed |
| FKinesisStreamShard / FKinesisStreamShardPage | Struct | Shard Id, Parent / Adjacent Parent, Starting / Ending Hash Key, Starting / Ending Sequence Number, Open; Shards, Next Token |
| FKinesisStreamSummary / FKinesisStreamListPage | Struct | Stream Name, Arn, Status, Capacity Mode, Retention Hours, Open Shards, Consumers, Creation Time, Encryption, Key Id; Names, Streams, Has More, Next Token |
| FKinesisStreamShardCountResult | Struct | Stream Name, Arn, Current / Target Shard Count |
| FKinesisStreamFirehoseResult / FKinesisStreamFirehoseBatchResult | Struct | Index, Success, Record Id, Error Code / Message, Attempts; Results, counts, Request Count, Retry Rounds, Encrypted |
| FKinesisStreamDeliveryStreamInfo / Page | Struct | Name, Arn, Status, Type, Version Id, Create / Last Update Time, Failure Type / Details, Encryption Status, Destination Ids, S3 Bucket / Prefix, HTTP Url / Name, Buffer Size / Interval |
| FKinesisStreamS3DestinationConfig / FKinesisStreamHttpEndpointConfig | Struct | Role, bucket, prefixes, buffering, compression, extension; url, name, access key, role, backup bucket, backup all, buffering, gzip |
| FKinesisStreamEvent / FKinesisStreamProperties | Struct | Name, Properties, Values, Timestamp, Event Id; Values (map) |
| FKinesisStreamTelemetryStats / FKinesisStreamConsumerStats / FKinesisStreamShardState | Struct | Component counters (see Get Stats / Get Shard States) |
| FKinesisStreamError | Struct | Code, Message, Http Status, Retryable |
| Enums | Enum | EKinesisStreamCredentialMode, EKinesisStreamIteratorType, EKinesisStreamCapacityMode, EKinesisStreamShardFilter, EKinesisStreamDestination, EKinesisStreamPartitionMode, EKinesisStreamCompression |
Settings
Project Settings > Plugins > KinesisStream (saved to DefaultGame.ini). Changes apply to the next request.
| Setting | Default | Description |
| Region | us-east-1 | Region of your streams and identity pool. |
| Credential Mode | Cognito Identity Pool | Cognito Identity Pool, Static Keys or Default Credential Chain. |
| Identity Pool Id | (empty) | For example us-east-1:01234567-89ab-cdef-0123-456789abcdef. |
| Allow Guest Access | On | Unauthenticated identities before Set Login Token. |
| Access Key Id / Secret Access Key | (empty) | Static Keys mode - development and servers only. |
| Allow Static Keys In Shipping | Off | Settings keys are refused in Shipping builds unless enabled. |
| Endpoint Override | (empty) | Custom endpoint such as a local emulator. |
| Request Timeout Ms / Connect Timeout Ms | 30000 / 5000 | Time limits per request. |
| Max Retries | 3 | Automatic retries of whole requests with back-off. |
| Worker Threads | 4 | Background threads that run requests. |
| Verify SSL / Log Sdk Warnings | On / On | TLS verification; SDK warnings to LogKinesisStream. |
| Default Stream Name | (empty) | Kinesis data stream (name or ARN) used when a node leaves Stream Name empty. |
| Default Delivery Stream Name | (empty) | Firehose stream used when a node leaves Delivery Stream Name empty. |
Troubleshooting
| Error code | Cause and fix |
NotConfigured / MissingStream | Identity Pool Id or the default stream names are missing in Project Settings > Plugins > KinesisStream. |
AccessDeniedException | The role lacks the action on the stream (for example kinesis:PutRecords or firehose:PutRecordBatch). See Setting up AWS. |
ResourceNotFoundException | Wrong stream name, another region, or the stream is still being created (Wait For Stream Active). |
ProvisionedThroughputExceededException | A shard received more than 1 MB/s or 1000 records/s (or reads exceeded 5/s). Retried automatically; use on-demand capacity, more shards or random partition keys. |
ExpiredIteratorException | Shard iterators live 5 minutes. The consumer renews them; with Get Records request a new one. |
InvalidArgumentException | Empty or too long partition key, a record over the size limit or a malformed sequence number. |
PartialFailure | Some records were rejected: check each result's Error Code. Throttled records can simply be resent. |
Unavailable | The SDK library could not be loaded or the engine is shutting down. See the Output Log (LogKinesisStream). |
Credits
© 2026 Alpha XP — alphaxp.net · Support: support@alphaxp.net.
Includes the AWS SDK for C++ and the AWS Common Runtime (Apache License 2.0). Built for Unreal Engine 4.27 and 5.8.