in Storage/Kinesis/SampleApplication/Program.cs [64:98]
private static void PublishDeviceDataToKinesis(List<DeviceData> dataList)
{
// note: this constructor relies on you having set up a credential profile
// named 'default', or have set credentials in environment variables
// AWS_ACCESS_KEY_ID & AWS_SECRET_ACCESS_KEY, or have an application settings
// file. See https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/net-dg-config-creds.html
// for more details and other constructor options.
var kinesisClient = new AmazonKinesisClient(_regionEndpoint);
foreach (DeviceData data in dataList)
{
var dataAsJson = JsonConvert.SerializeObject(data);
var dataAsBytes = Encoding.UTF8.GetBytes(dataAsJson);
using (var memoryStream = new MemoryStream(dataAsBytes))
{
try
{
var requestRecord = new PutRecordRequest
{
StreamName = _kinesisStreamName,
PartitionKey = data.DeviceId,
Data = memoryStream
};
var responseRecord = kinesisClient.PutRecordAsync(requestRecord).Result;
Console.WriteLine($"Successfully published. Record:{data.DeviceId},{data.Humidity},{data.Temperature} Seq:{responseRecord.SequenceNumber}");
}
catch (Exception ex)
{
Console.WriteLine($"Failed to publish. Exception: {ex.Message}");
}
}
}
}