Open
Description
Describe the bug
The data table
"WebsocketConnectionsTable": {
"Type" : "AWS::DynamoDB::Table",
"Properties" : {
"AttributeDefinitions" : [
{
"AttributeName" : "conn",
"AttributeType" : "S"
}
],
"BillingMode" : "PAY_PER_REQUEST",
"ContributorInsightsSpecification" : {
"Enabled" : false
},
"DeletionProtectionEnabled" : true,
"GlobalSecondaryIndexes" : [
],
"KeySchema" : [
{
"AttributeName" : "conn",
"KeyType" : "HASH"
}
],
"TableClass" : "STANDARD",
"TableName" : {
"Fn::Join" : [
"-",
[
"my-app",
{
"Ref" : "StageNameParameter"
},
"websocket-auth-table"
]
]
},
"Tags" : [ ]
}
}
// the model
[DynamoDBTable("websocket-auth-table")]
public class WebsocketConnectionDB
{
public WebsocketConnectionDB()
{
ConnectionId = "";
UserId = "";
}
[DynamoDBHashKey("conn")]
public string ConnectionId { get; set; }
[DynamoDBProperty("user")]
public string UserId { get; set; }
[DynamoDBProperty("connected")]
public Int64 ConnectedAsNumber
{
get
{
return new DateTimeOffset(Connected).ToUnixTimeSeconds();
}
set
{
Connected = DateTimeOffset.FromUnixTimeSeconds(value).DateTime;
}
}
[DynamoDBIgnore]
public DateTime Connected { get; set; }
}
The code - delete a row based on the hash
public Task Delete(string id)
{
var operationConfig = new DynamoDBOperationConfig()
{
TableNamePrefix = this.tableNamePrefix
};
return dynamoContext.DeleteAsync<string>(id, operationConfig);
}
fail System.InvalidOperationException: Type System.String is unsupported, it cannot be instantiated
at Amazon.DynamoDBv2.DataModel.StorageConfig..ctor(ITypeInfo targetTypeInfo)
at Amazon.DynamoDBv2.DataModel.ItemStorageConfig..ctor(ITypeInfo targetTypeInfo)
at Amazon.DynamoDBv2.DataModel.ItemStorageConfigCache.CreateStorageConfig(Type baseType, String actualTableName)
at Amazon.DynamoDBv2.DataModel.ItemStorageConfigCache.GetConfig(Type type, DynamoDBFlatConfig flatConfig, Boolean conversionOnly)
at Amazon.DynamoDBv2.DataModel.ItemStorageConfigCache.GetConfig[T](DynamoDBFlatConfig flatConfig, Boolean conversionOnly)
at Amazon.DynamoDBv2.DataModel.DynamoDBContext.DeleteHelperAsync[T](Object hashKey, Object rangeKey, DynamoDBOperationConfig operationConfig, CancellationToken cancellationToken)
at Amazon.DynamoDBv2.DataModel.DynamoDBContext.DeleteAsync[T](Object hashKey, DynamoDBOperationConfig operationConfig, CancellationToken cancellationToken)
at DynamoRepository`2.Delete(TId id)
at DisplaySure.WebSockets.WebsocketEntryPoint.HandleDisconnect(APIGatewayProxyRequest request)
at lambda_method1(Closure , Stream , ILambdaContext , Stream )
at Amazon.Lambda.RuntimeSupport.Bootstrap.UserCodeLoader.Invoke(Stream lambdaData, ILambdaContext lambdaContext, Stream outStream) in /src/Repo/Libraries/src/Amazon.Lambda.RuntimeSupport/Bootstrap/UserCodeLoader.cs:line 145
at Amazon.Lambda.RuntimeSupport.HandlerWrapper.<>c__DisplayClass8_0.<GetHandlerWrapper>b__0(InvocationRequest invocation) in /src/Repo/Libraries/src/Amazon.Lambda.RuntimeSupport/Bootstrap/HandlerWrapper.cs:line 55
at Amazon.Lambda.RuntimeSupport.LambdaBootstrap.InvokeOnceAsync(CancellationToken cancellationToken) in /src/Repo/Libraries/src/Amazon.Lambda.RuntimeSupport/Bootstrap/LambdaBootstrap.cs:line 176 | 2023-05-23T19:08:53.089Z e247f672-d020-428f-b0fb-adc3f4bdcea4 fail System.InvalidOperationException: Type System.String is unsupported, it cannot be instantiated at Amazon.DynamoDBv2.DataModel.StorageConfig..ctor(ITypeInfo targetTypeInfo)
at Amazon.DynamoDBv2.DataModel.ItemStorageConfig..ctor(ITypeInfo targetTypeInfo)
at Amazon.DynamoDBv2.DataModel.ItemStorageConfigCache.CreateStorageConfig(Type baseType, String actualTableName)
at Amazon.DynamoDBv2.DataModel.ItemStorageConfigCache.GetConfig(Type type, DynamoDBFlatConfig flatConfig, Boolean conversionOnly)
at Amazon.DynamoDBv2.DataModel.ItemStorageConfigCache.GetConfig[T](DynamoDBFlatConfig flatConfig, Boolean conversionOnly)
at Amazon.DynamoDBv2.DataModel.DynamoDBContext.DeleteHelperAsync[T](Object hashKey, Object rangeKey, DynamoDBOperationConfig operationConfig, CancellationToken cancellationToken)
at Amazon.DynamoDBv2.DataModel.DynamoDBContext.DeleteAsync[T](Object hashKey, DynamoDBOperationConfig operationConfig, CancellationToken cancellationToken) at DynamoRepository`2.Delete(TId id)
at DisplaySure.WebSockets.WebsocketEntryPoint.HandleDisconnect(APIGatewayProxyRequest request)
at lambda_method1(Closure , Stream , ILambdaContext , Stream )
at Amazon.Lambda.RuntimeSupport.Bootstrap.UserCodeLoader.Invoke(Stream lambdaData, ILambdaContext lambdaContext, Stream outStream) in /src/Repo/Libraries/src/Amazon.Lambda.RuntimeSupport/Bootstrap/UserCodeLoader.cs:line 145
at Amazon.Lambda.RuntimeSupport.HandlerWrapper.<>c__DisplayClass8_0.<GetHandlerWrapper>b__0(InvocationRequest invocation) in /src/Repo/Libraries/src/Amazon.Lambda.RuntimeSupport/Bootstrap/HandlerWrapper.cs:line 55
at Amazon.Lambda.RuntimeSupport.LambdaBootstrap.InvokeOnceAsync(CancellationToken cancellationToken) in /src/Repo/Libraries/src/Amazon.Lambda.RuntimeSupport/Bootstrap/LambdaBootstrap.cs:line 176
Expected Behavior
Expected the row with that hash Id to be deleted
Current Behavior
Exception, see above
Reproduction Steps
See above
Possible Solution
No response
Additional Information/Context
No response
AWS .NET SDK and/or Package version used
AWSSDK.DynamoDBv2 3.7.103.8
Targeted .NET Platform
.Net 6
Operating System and version
AWS Lambda