Skip to content

Commit 84c9c40

Browse files
authored
Merge pull request #1346 from Zocdoc/issue_1345
Adds metadata to KinesisFirehose response record to support dynamic partitioning
2 parents afd59e5 + f683d4b commit 84c9c40

File tree

3 files changed

+37
-3
lines changed

3 files changed

+37
-3
lines changed

Libraries/src/Amazon.Lambda.KinesisFirehoseEvents/KinesisFirehoseResponse.cs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,16 @@ public class FirehoseRecord
9292
#endif
9393
public string Base64EncodedData { get; set; }
9494

95+
/// <summary>
96+
/// The response record metadata.
97+
/// </summary>
98+
[DataMember(Name = "metadata")]
99+
#if NETCOREAPP_3_1
100+
[System.Text.Json.Serialization.JsonPropertyName("metadata")]
101+
#endif
102+
public FirehoseResponseRecordMetadata Metadata { get; set; }
103+
104+
95105
/// <summary>
96106
/// Base64 encodes the data and sets the Base64EncodedData property.
97107
/// </summary>
@@ -101,5 +111,22 @@ public void EncodeData(string data)
101111
this.Base64EncodedData = Convert.ToBase64String(Encoding.UTF8.GetBytes(data));
102112
}
103113
}
114+
115+
/// <summary>
116+
/// The response record metadata after processing KinesisFirehoseEvent.Records
117+
/// </summary>
118+
[DataContract]
119+
public class FirehoseResponseRecordMetadata
120+
{
121+
/// <summary>
122+
/// Key Value pairs used for Dynamic Partitioning
123+
/// https://docs.aws.amazon.com/firehose/latest/dev/dynamic-partitioning.html
124+
/// </summary>
125+
[DataMember(Name = "partitionKeys")]
126+
#if NETCOREAPP_3_1
127+
[System.Text.Json.Serialization.JsonPropertyName("partitionKeys")]
128+
#endif
129+
public Dictionary<string, string> PartitionKeys { get; set; }
130+
}
104131
}
105132
}

Libraries/test/EventsTests.Shared/EventTests.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1559,7 +1559,8 @@ public void KinesisFirehoseResponseTest(Type serializerType)
15591559
Assert.Equal("49572672223665514422805246926656954630972486059535892482", kinesisResponse.Records[0].RecordId);
15601560
Assert.Equal(KinesisFirehoseResponse.TRANSFORMED_STATE_OK, kinesisResponse.Records[0].Result);
15611561
Assert.Equal("SEVMTE8gV09STEQ=", kinesisResponse.Records[0].Base64EncodedData);
1562-
1562+
Assert.Equal("iamValue1", kinesisResponse.Records[0].Metadata.PartitionKeys["iamKey1"]);
1563+
Assert.Equal("iamValue2", kinesisResponse.Records[0].Metadata.PartitionKeys["iamKey2"]);
15631564

15641565

15651566
MemoryStream ms = new MemoryStream();

Libraries/test/EventsTests.Shared/kinesis-firehose-response.json

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,13 @@
33
{
44
"recordId": "49572672223665514422805246926656954630972486059535892482",
55
"result": "Ok",
6-
"data": "SEVMTE8gV09STEQ="
6+
"data": "SEVMTE8gV09STEQ=",
7+
"metadata": {
8+
"partitionKeys": {
9+
"iamKey1": "iamValue1",
10+
"iamKey2": "iamValue2"
11+
}
12+
}
713
}
814
]
9-
}
15+
}

0 commit comments

Comments
 (0)