Skip to content

Commit 489a01e

Browse files
authored
Update Amazon.Lambda.DynamoDBEvents.SDK.Convertor and Amazon.Lambda.KinesisEvents packages that have an SDK dependency to use V4. (#2056)
1 parent 5752dc6 commit 489a01e

File tree

10 files changed

+129
-19
lines changed

10 files changed

+129
-19
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"Projects": [
3+
{
4+
"Name": "Amazon.Lambda.DynamoDBEvents.SDK.Convertor",
5+
"Type": "Major",
6+
"ChangelogMessages": [
7+
"Update to AWS SDK for .NET V4"
8+
]
9+
},
10+
{
11+
"Name": "Amazon.Lambda.KinesisEvents",
12+
"Type": "Major",
13+
"ChangelogMessages": [
14+
"Update to AWS SDK for .NET V4"
15+
]
16+
}
17+
]
18+
}

Libraries/src/Amazon.Lambda.DynamoDBEvents.SDK.Convertor/Amazon.Lambda.DynamoDBEvents.SDK.Convertor.csproj

+2-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@
1616
</ItemGroup>
1717

1818
<ItemGroup>
19-
<PackageReference Include="AWSSDK.DynamoDBv2" Version="3.7.405.23" />
19+
<PackageReference Include="AWSSDK.DynamoDBv2" Version="4.0.0" />
20+
<PackageReference Include="AWSSDK.DynamoDBStreams" Version="4.0.0" />
2021
</ItemGroup>
2122

2223
<ItemGroup>

Libraries/src/Amazon.Lambda.DynamoDBEvents.SDK.Convertor/DynamodbAttributeValueConvertor.cs

+91
Original file line numberDiff line numberDiff line change
@@ -97,5 +97,96 @@ public static Amazon.DynamoDBv2.Model.AttributeValue ConvertToSdkAttribute(this
9797

9898
return sdkDictionary;
9999
}
100+
101+
/// <summary>
102+
/// Convert Lambda AttributeValue to SDK AttributeValue
103+
/// </summary>
104+
/// <param name="lambdaAttribute">The Lambda AttributeValue to convert.</param>
105+
/// <returns>The converted SDK AttributeValue.</returns>
106+
public static Amazon.DynamoDBStreams.Model.AttributeValue ConvertToSdkStreamAttribute(this
107+
DynamoDBEvent.AttributeValue lambdaAttribute)
108+
{
109+
if (lambdaAttribute == null)
110+
return null;
111+
112+
var sdkAttribute = new Amazon.DynamoDBStreams.Model.AttributeValue();
113+
114+
// String
115+
if (!string.IsNullOrEmpty(lambdaAttribute.S))
116+
sdkAttribute.S = lambdaAttribute.S;
117+
118+
// Number
119+
else if (!string.IsNullOrEmpty(lambdaAttribute.N))
120+
sdkAttribute.N = lambdaAttribute.N;
121+
122+
// Boolean
123+
else if (lambdaAttribute.BOOL.HasValue)
124+
{
125+
sdkAttribute.BOOL = lambdaAttribute.BOOL.Value;
126+
}
127+
128+
// Null
129+
else if (lambdaAttribute.NULL.HasValue)
130+
sdkAttribute.NULL = lambdaAttribute.NULL.Value;
131+
132+
// Binary
133+
else if (lambdaAttribute.B != null)
134+
sdkAttribute.B = lambdaAttribute.B;
135+
136+
// String Set
137+
else if (lambdaAttribute.SS != null)
138+
sdkAttribute.SS = new List<string>(lambdaAttribute.SS);
139+
140+
// Number Set
141+
else if (lambdaAttribute.NS != null)
142+
sdkAttribute.NS = new List<string>(lambdaAttribute.NS);
143+
144+
// Binary Set
145+
else if (lambdaAttribute.BS != null)
146+
sdkAttribute.BS = lambdaAttribute.BS;
147+
148+
// List
149+
else if (lambdaAttribute.L != null)
150+
{
151+
sdkAttribute.L = new List<Amazon.DynamoDBStreams.Model.AttributeValue>();
152+
foreach (var item in lambdaAttribute.L)
153+
{
154+
sdkAttribute.L.Add(item.ConvertToSdkStreamAttribute());
155+
}
156+
}
157+
158+
// Map
159+
else if (lambdaAttribute.M != null)
160+
{
161+
sdkAttribute.M = new Dictionary<string, Amazon.DynamoDBStreams.Model.AttributeValue>();
162+
foreach (var kvp in lambdaAttribute.M)
163+
{
164+
sdkAttribute.M[kvp.Key] = kvp.Value.ConvertToSdkStreamAttribute();
165+
}
166+
}
167+
168+
return sdkAttribute;
169+
}
170+
171+
/// <summary>
172+
/// Convert Dictionary of Lambda AttributeValue to SDK Dictionary of AttributeValue
173+
/// </summary>
174+
/// <param name="lambdaAttributes">The dictionary of Lambda AttributeValue to convert.</param>
175+
/// <returns>The converted dictionary of SDK AttributeValue.</returns>
176+
public static Dictionary<string, Amazon.DynamoDBStreams.Model.AttributeValue> ConvertToSdkStreamAttributeValueDictionary(
177+
this Dictionary<string, DynamoDBEvent.AttributeValue> lambdaAttributes)
178+
{
179+
var sdkDictionary = new Dictionary<string, Amazon.DynamoDBStreams.Model.AttributeValue>();
180+
181+
if (lambdaAttributes == null)
182+
return sdkDictionary;
183+
184+
foreach (var kvp in lambdaAttributes)
185+
{
186+
sdkDictionary[kvp.Key] = ConvertToSdkStreamAttribute(kvp.Value);
187+
}
188+
189+
return sdkDictionary;
190+
}
100191
}
101192
}

Libraries/src/Amazon.Lambda.DynamoDBEvents.SDK.Convertor/DynamodbIdentityConvertor.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@ public static class DynamodbIdentityConvertor
1111
/// </summary>
1212
/// <param name="lambdaIdentity">The Lambda Identity to convert.</param>
1313
/// <returns>The converted SDK Identity.</returns>
14-
public static Amazon.DynamoDBv2.Model.Identity ConvertToSdkIdentity(this DynamoDBEvent.Identity lambdaIdentity)
14+
public static Amazon.DynamoDBStreams.Model.Identity ConvertToSdkIdentity(this DynamoDBEvent.Identity lambdaIdentity)
1515
{
1616
if (lambdaIdentity == null)
1717
return null;
1818

19-
var sdkIdentity = new Amazon.DynamoDBv2.Model.Identity
19+
var sdkIdentity = new Amazon.DynamoDBStreams.Model.Identity
2020
{
2121
PrincipalId = lambdaIdentity.PrincipalId,
2222
Type = lambdaIdentity.Type

Libraries/src/Amazon.Lambda.DynamoDBEvents.SDK.Convertor/DynamodbStreamRecordConvertor.cs

+5-5
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,17 @@ public static class DynamodbStreamRecordConvertor
1111
/// </summary>
1212
/// <param name="lambdaStreamRecord">The Lambda StreamRecord to convert.</param>
1313
/// <returns>The converted SDK StreamRecord.</returns>
14-
public static Amazon.DynamoDBv2.Model.StreamRecord ConvertToSdkStreamRecord(this DynamoDBEvent.StreamRecord lambdaStreamRecord)
14+
public static Amazon.DynamoDBStreams.Model.StreamRecord ConvertToSdkStreamRecord(this DynamoDBEvent.StreamRecord lambdaStreamRecord)
1515
{
1616
if (lambdaStreamRecord == null)
1717
return null;
1818

19-
var sdkStreamRecord = new Amazon.DynamoDBv2.Model.StreamRecord
19+
var sdkStreamRecord = new Amazon.DynamoDBStreams.Model.StreamRecord
2020
{
2121
ApproximateCreationDateTime = lambdaStreamRecord.ApproximateCreationDateTime,
22-
Keys = lambdaStreamRecord.Keys?.ConvertToSdkAttributeValueDictionary(),
23-
NewImage = lambdaStreamRecord.NewImage?.ConvertToSdkAttributeValueDictionary(),
24-
OldImage = lambdaStreamRecord.OldImage?.ConvertToSdkAttributeValueDictionary(),
22+
Keys = lambdaStreamRecord.Keys?.ConvertToSdkStreamAttributeValueDictionary(),
23+
NewImage = lambdaStreamRecord.NewImage?.ConvertToSdkStreamAttributeValueDictionary(),
24+
OldImage = lambdaStreamRecord.OldImage?.ConvertToSdkStreamAttributeValueDictionary(),
2525
SequenceNumber = lambdaStreamRecord.SequenceNumber,
2626
SizeBytes = lambdaStreamRecord.SizeBytes,
2727
StreamViewType = lambdaStreamRecord.StreamViewType

Libraries/src/Amazon.Lambda.KinesisEvents/Amazon.Lambda.KinesisEvents.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
</PropertyGroup>
1414

1515
<ItemGroup>
16-
<PackageReference Include="AWSSDK.Kinesis" Version="3.7.0" />
16+
<PackageReference Include="AWSSDK.Kinesis" Version="4.0.0" />
1717
</ItemGroup>
1818

1919
<ItemGroup>

Libraries/test/EventsTests.NET6/EventsTests.NET6.csproj

+2-2
Original file line numberDiff line numberDiff line change
@@ -55,14 +55,14 @@
5555
</ItemGroup>
5656

5757
<ItemGroup>
58-
<PackageReference Include="AWSSDK.DynamoDBv2" Version="3.7.301.14" />
58+
<PackageReference Include="AWSSDK.DynamoDBv2" Version="4.0.0.0" />
5959
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.0.0" />
6060
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
6161
<PrivateAssets>all</PrivateAssets>
6262
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
6363
</PackageReference>
6464
<PackageReference Include="xunit" Version="2.4.1" />
65-
<PackageReference Include="AWSSDK.Core" Version="3.7.302.13" />
65+
<PackageReference Include="AWSSDK.Core" Version="4.0.0.0" />
6666
</ItemGroup>
6767

6868
<ItemGroup>

Libraries/test/EventsTests.NET8/EventsTests.NET8.csproj

+2-2
Original file line numberDiff line numberDiff line change
@@ -47,14 +47,14 @@
4747
</ItemGroup>
4848

4949
<ItemGroup>
50-
<PackageReference Include="AWSSDK.DynamoDBv2" Version="3.7.301.14" />
50+
<PackageReference Include="AWSSDK.DynamoDBv2" Version="4.0.0.0" />
5151
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.0.0" />
5252
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
5353
<PrivateAssets>all</PrivateAssets>
5454
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
5555
</PackageReference>
5656
<PackageReference Include="xunit" Version="2.4.1" />
57-
<PackageReference Include="AWSSDK.Core" Version="3.7.302.13" />
57+
<PackageReference Include="AWSSDK.Core" Version="4.0.0.0" />
5858
</ItemGroup>
5959

6060
<ItemGroup>

Libraries/test/EventsTests.NETCore31/EventsTests.NETCore31.csproj

+2-2
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,11 @@
5555
</ItemGroup>
5656

5757
<ItemGroup>
58-
<PackageReference Include="AWSSDK.DynamoDBv2" Version="3.7.301.14" />
58+
<PackageReference Include="AWSSDK.DynamoDBv2" Version="4.0.0" />
5959
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.0.0" />
6060
<PackageReference Include="xunit.runner.visualstudio" Version="2.2.0" />
6161
<PackageReference Include="xunit" Version="2.2.0" />
62-
<PackageReference Include="AWSSDK.Core" Version="3.7.302.13" />
62+
<PackageReference Include="AWSSDK.Core" Version="4.0.0" />
6363
</ItemGroup>
6464

6565
<ItemGroup>

Libraries/test/EventsTests.Shared/EventTests.cs

+4-4
Original file line numberDiff line numberDiff line change
@@ -319,9 +319,9 @@ public void KinesisTest(Type serializerType)
319319
#if NET8_0_OR_GREATER
320320
// Starting with .NET 7 the precision of the underlying AddSeconds method was changed.
321321
// https://learn.microsoft.com/en-us/dotnet/core/compatibility/core-libraries/7.0/datetime-add-precision
322-
Assert.Equal(636162383234769999, record.Kinesis.ApproximateArrivalTimestamp.ToUniversalTime().Ticks);
322+
Assert.Equal(636162383234769999, record.Kinesis.ApproximateArrivalTimestamp.Value.ToUniversalTime().Ticks);
323323
#else
324-
Assert.Equal(636162383234770000, record.Kinesis.ApproximateArrivalTimestamp.ToUniversalTime().Ticks);
324+
Assert.Equal(636162383234770000, record.Kinesis.ApproximateArrivalTimestamp.Value.ToUniversalTime().Ticks);
325325
#endif
326326

327327
Handle(kinesisEvent);
@@ -409,7 +409,7 @@ public void KinesisTimeWindowTest(Type serializerType)
409409
var dataBytes = record.Kinesis.Data.ToArray();
410410
Assert.Equal(Convert.ToBase64String(dataBytes), "SGVsbG8sIHRoaXMgaXMgYSB0ZXN0Lg==");
411411
Assert.Equal(Encoding.UTF8.GetString(dataBytes), "Hello, this is a test.");
412-
Assert.Equal(637430942750000000, record.Kinesis.ApproximateArrivalTimestamp.ToUniversalTime().Ticks);
412+
Assert.Equal(637430942750000000, record.Kinesis.ApproximateArrivalTimestamp.Value.ToUniversalTime().Ticks);
413413

414414
Handle(kinesisTimeWindowEvent);
415415
}
@@ -3915,4 +3915,4 @@ class ClassUsingPascalCase
39153915
}
39163916
}
39173917
}
3918-
#pragma warning restore 618
3918+
#pragma warning restore 618

0 commit comments

Comments
 (0)