diff --git a/.autover/changes/be8e0154-524e-402e-bb5d-ab1a0c3dea95.json b/.autover/changes/be8e0154-524e-402e-bb5d-ab1a0c3dea95.json
new file mode 100644
index 000000000..d4e9e8be4
--- /dev/null
+++ b/.autover/changes/be8e0154-524e-402e-bb5d-ab1a0c3dea95.json
@@ -0,0 +1,18 @@
+{
+ "Projects": [
+ {
+ "Name": "Amazon.Lambda.DynamoDBEvents.SDK.Convertor",
+ "Type": "Major",
+ "ChangelogMessages": [
+ "Update to AWS SDK for .NET V4"
+ ]
+ },
+ {
+ "Name": "Amazon.Lambda.KinesisEvents",
+ "Type": "Major",
+ "ChangelogMessages": [
+ "Update to AWS SDK for .NET V4"
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Libraries/src/Amazon.Lambda.DynamoDBEvents.SDK.Convertor/Amazon.Lambda.DynamoDBEvents.SDK.Convertor.csproj b/Libraries/src/Amazon.Lambda.DynamoDBEvents.SDK.Convertor/Amazon.Lambda.DynamoDBEvents.SDK.Convertor.csproj
index 0ec829576..d1a5d1ecc 100644
--- a/Libraries/src/Amazon.Lambda.DynamoDBEvents.SDK.Convertor/Amazon.Lambda.DynamoDBEvents.SDK.Convertor.csproj
+++ b/Libraries/src/Amazon.Lambda.DynamoDBEvents.SDK.Convertor/Amazon.Lambda.DynamoDBEvents.SDK.Convertor.csproj
@@ -16,7 +16,8 @@
-
+
+
diff --git a/Libraries/src/Amazon.Lambda.DynamoDBEvents.SDK.Convertor/DynamodbAttributeValueConvertor.cs b/Libraries/src/Amazon.Lambda.DynamoDBEvents.SDK.Convertor/DynamodbAttributeValueConvertor.cs
index c48449e7d..d32af79bf 100644
--- a/Libraries/src/Amazon.Lambda.DynamoDBEvents.SDK.Convertor/DynamodbAttributeValueConvertor.cs
+++ b/Libraries/src/Amazon.Lambda.DynamoDBEvents.SDK.Convertor/DynamodbAttributeValueConvertor.cs
@@ -97,5 +97,96 @@ public static Amazon.DynamoDBv2.Model.AttributeValue ConvertToSdkAttribute(this
return sdkDictionary;
}
+
+ ///
+ /// Convert Lambda AttributeValue to SDK AttributeValue
+ ///
+ /// The Lambda AttributeValue to convert.
+ /// The converted SDK AttributeValue.
+ public static Amazon.DynamoDBStreams.Model.AttributeValue ConvertToSdkStreamAttribute(this
+ DynamoDBEvent.AttributeValue lambdaAttribute)
+ {
+ if (lambdaAttribute == null)
+ return null;
+
+ var sdkAttribute = new Amazon.DynamoDBStreams.Model.AttributeValue();
+
+ // String
+ if (!string.IsNullOrEmpty(lambdaAttribute.S))
+ sdkAttribute.S = lambdaAttribute.S;
+
+ // Number
+ else if (!string.IsNullOrEmpty(lambdaAttribute.N))
+ sdkAttribute.N = lambdaAttribute.N;
+
+ // Boolean
+ else if (lambdaAttribute.BOOL.HasValue)
+ {
+ sdkAttribute.BOOL = lambdaAttribute.BOOL.Value;
+ }
+
+ // Null
+ else if (lambdaAttribute.NULL.HasValue)
+ sdkAttribute.NULL = lambdaAttribute.NULL.Value;
+
+ // Binary
+ else if (lambdaAttribute.B != null)
+ sdkAttribute.B = lambdaAttribute.B;
+
+ // String Set
+ else if (lambdaAttribute.SS != null)
+ sdkAttribute.SS = new List(lambdaAttribute.SS);
+
+ // Number Set
+ else if (lambdaAttribute.NS != null)
+ sdkAttribute.NS = new List(lambdaAttribute.NS);
+
+ // Binary Set
+ else if (lambdaAttribute.BS != null)
+ sdkAttribute.BS = lambdaAttribute.BS;
+
+ // List
+ else if (lambdaAttribute.L != null)
+ {
+ sdkAttribute.L = new List();
+ foreach (var item in lambdaAttribute.L)
+ {
+ sdkAttribute.L.Add(item.ConvertToSdkStreamAttribute());
+ }
+ }
+
+ // Map
+ else if (lambdaAttribute.M != null)
+ {
+ sdkAttribute.M = new Dictionary();
+ foreach (var kvp in lambdaAttribute.M)
+ {
+ sdkAttribute.M[kvp.Key] = kvp.Value.ConvertToSdkStreamAttribute();
+ }
+ }
+
+ return sdkAttribute;
+ }
+
+ ///
+ /// Convert Dictionary of Lambda AttributeValue to SDK Dictionary of AttributeValue
+ ///
+ /// The dictionary of Lambda AttributeValue to convert.
+ /// The converted dictionary of SDK AttributeValue.
+ public static Dictionary ConvertToSdkStreamAttributeValueDictionary(
+ this Dictionary lambdaAttributes)
+ {
+ var sdkDictionary = new Dictionary();
+
+ if (lambdaAttributes == null)
+ return sdkDictionary;
+
+ foreach (var kvp in lambdaAttributes)
+ {
+ sdkDictionary[kvp.Key] = ConvertToSdkStreamAttribute(kvp.Value);
+ }
+
+ return sdkDictionary;
+ }
}
}
diff --git a/Libraries/src/Amazon.Lambda.DynamoDBEvents.SDK.Convertor/DynamodbIdentityConvertor.cs b/Libraries/src/Amazon.Lambda.DynamoDBEvents.SDK.Convertor/DynamodbIdentityConvertor.cs
index 143bd19f6..9e092175b 100644
--- a/Libraries/src/Amazon.Lambda.DynamoDBEvents.SDK.Convertor/DynamodbIdentityConvertor.cs
+++ b/Libraries/src/Amazon.Lambda.DynamoDBEvents.SDK.Convertor/DynamodbIdentityConvertor.cs
@@ -11,12 +11,12 @@ public static class DynamodbIdentityConvertor
///
/// The Lambda Identity to convert.
/// The converted SDK Identity.
- public static Amazon.DynamoDBv2.Model.Identity ConvertToSdkIdentity(this DynamoDBEvent.Identity lambdaIdentity)
+ public static Amazon.DynamoDBStreams.Model.Identity ConvertToSdkIdentity(this DynamoDBEvent.Identity lambdaIdentity)
{
if (lambdaIdentity == null)
return null;
- var sdkIdentity = new Amazon.DynamoDBv2.Model.Identity
+ var sdkIdentity = new Amazon.DynamoDBStreams.Model.Identity
{
PrincipalId = lambdaIdentity.PrincipalId,
Type = lambdaIdentity.Type
diff --git a/Libraries/src/Amazon.Lambda.DynamoDBEvents.SDK.Convertor/DynamodbStreamRecordConvertor.cs b/Libraries/src/Amazon.Lambda.DynamoDBEvents.SDK.Convertor/DynamodbStreamRecordConvertor.cs
index 39f10f666..c84d956b6 100644
--- a/Libraries/src/Amazon.Lambda.DynamoDBEvents.SDK.Convertor/DynamodbStreamRecordConvertor.cs
+++ b/Libraries/src/Amazon.Lambda.DynamoDBEvents.SDK.Convertor/DynamodbStreamRecordConvertor.cs
@@ -11,17 +11,17 @@ public static class DynamodbStreamRecordConvertor
///
/// The Lambda StreamRecord to convert.
/// The converted SDK StreamRecord.
- public static Amazon.DynamoDBv2.Model.StreamRecord ConvertToSdkStreamRecord(this DynamoDBEvent.StreamRecord lambdaStreamRecord)
+ public static Amazon.DynamoDBStreams.Model.StreamRecord ConvertToSdkStreamRecord(this DynamoDBEvent.StreamRecord lambdaStreamRecord)
{
if (lambdaStreamRecord == null)
return null;
- var sdkStreamRecord = new Amazon.DynamoDBv2.Model.StreamRecord
+ var sdkStreamRecord = new Amazon.DynamoDBStreams.Model.StreamRecord
{
ApproximateCreationDateTime = lambdaStreamRecord.ApproximateCreationDateTime,
- Keys = lambdaStreamRecord.Keys?.ConvertToSdkAttributeValueDictionary(),
- NewImage = lambdaStreamRecord.NewImage?.ConvertToSdkAttributeValueDictionary(),
- OldImage = lambdaStreamRecord.OldImage?.ConvertToSdkAttributeValueDictionary(),
+ Keys = lambdaStreamRecord.Keys?.ConvertToSdkStreamAttributeValueDictionary(),
+ NewImage = lambdaStreamRecord.NewImage?.ConvertToSdkStreamAttributeValueDictionary(),
+ OldImage = lambdaStreamRecord.OldImage?.ConvertToSdkStreamAttributeValueDictionary(),
SequenceNumber = lambdaStreamRecord.SequenceNumber,
SizeBytes = lambdaStreamRecord.SizeBytes,
StreamViewType = lambdaStreamRecord.StreamViewType
diff --git a/Libraries/src/Amazon.Lambda.KinesisEvents/Amazon.Lambda.KinesisEvents.csproj b/Libraries/src/Amazon.Lambda.KinesisEvents/Amazon.Lambda.KinesisEvents.csproj
index 2f2574523..5577c54d1 100644
--- a/Libraries/src/Amazon.Lambda.KinesisEvents/Amazon.Lambda.KinesisEvents.csproj
+++ b/Libraries/src/Amazon.Lambda.KinesisEvents/Amazon.Lambda.KinesisEvents.csproj
@@ -13,7 +13,7 @@
-
+
diff --git a/Libraries/test/EventsTests.NET6/EventsTests.NET6.csproj b/Libraries/test/EventsTests.NET6/EventsTests.NET6.csproj
index 5e64d7c09..bd4f561f0 100644
--- a/Libraries/test/EventsTests.NET6/EventsTests.NET6.csproj
+++ b/Libraries/test/EventsTests.NET6/EventsTests.NET6.csproj
@@ -55,14 +55,14 @@
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
+
diff --git a/Libraries/test/EventsTests.NET8/EventsTests.NET8.csproj b/Libraries/test/EventsTests.NET8/EventsTests.NET8.csproj
index db86179bf..aba878851 100644
--- a/Libraries/test/EventsTests.NET8/EventsTests.NET8.csproj
+++ b/Libraries/test/EventsTests.NET8/EventsTests.NET8.csproj
@@ -47,14 +47,14 @@
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
+
diff --git a/Libraries/test/EventsTests.NETCore31/EventsTests.NETCore31.csproj b/Libraries/test/EventsTests.NETCore31/EventsTests.NETCore31.csproj
index 1c5812340..bc8b98c24 100644
--- a/Libraries/test/EventsTests.NETCore31/EventsTests.NETCore31.csproj
+++ b/Libraries/test/EventsTests.NETCore31/EventsTests.NETCore31.csproj
@@ -55,11 +55,11 @@
-
+
-
+
diff --git a/Libraries/test/EventsTests.Shared/EventTests.cs b/Libraries/test/EventsTests.Shared/EventTests.cs
index fa2cf6e04..24ee824bd 100644
--- a/Libraries/test/EventsTests.Shared/EventTests.cs
+++ b/Libraries/test/EventsTests.Shared/EventTests.cs
@@ -319,9 +319,9 @@ public void KinesisTest(Type serializerType)
#if NET8_0_OR_GREATER
// Starting with .NET 7 the precision of the underlying AddSeconds method was changed.
// https://learn.microsoft.com/en-us/dotnet/core/compatibility/core-libraries/7.0/datetime-add-precision
- Assert.Equal(636162383234769999, record.Kinesis.ApproximateArrivalTimestamp.ToUniversalTime().Ticks);
+ Assert.Equal(636162383234769999, record.Kinesis.ApproximateArrivalTimestamp.Value.ToUniversalTime().Ticks);
#else
- Assert.Equal(636162383234770000, record.Kinesis.ApproximateArrivalTimestamp.ToUniversalTime().Ticks);
+ Assert.Equal(636162383234770000, record.Kinesis.ApproximateArrivalTimestamp.Value.ToUniversalTime().Ticks);
#endif
Handle(kinesisEvent);
@@ -409,7 +409,7 @@ public void KinesisTimeWindowTest(Type serializerType)
var dataBytes = record.Kinesis.Data.ToArray();
Assert.Equal(Convert.ToBase64String(dataBytes), "SGVsbG8sIHRoaXMgaXMgYSB0ZXN0Lg==");
Assert.Equal(Encoding.UTF8.GetString(dataBytes), "Hello, this is a test.");
- Assert.Equal(637430942750000000, record.Kinesis.ApproximateArrivalTimestamp.ToUniversalTime().Ticks);
+ Assert.Equal(637430942750000000, record.Kinesis.ApproximateArrivalTimestamp.Value.ToUniversalTime().Ticks);
Handle(kinesisTimeWindowEvent);
}
@@ -3915,4 +3915,4 @@ class ClassUsingPascalCase
}
}
}
-#pragma warning restore 618
\ No newline at end of file
+#pragma warning restore 618