Skip to content

MissingMethodException in AWS health checks (S3, DynamoDB, SQS) with AWS SDK v4.x - Incompatibility with .NET 10 #2463

@cads-palex

Description

@cads-palex

When calling health check endpoints, AWS-related health checks (S3, DynamoDB, and SQS) are throwing MissingMethodException errors:

  • S3 health checks fail with: Method not found: 'Void Amazon.S3.Model.ListObjectsRequest.set_MaxKeys(Int32)'
  • DynamoDB health checks fail with: Method not found: 'Void Amazon.DynamoDBv2.Model.ListTablesRequest.set_Limit(Int32)'
  • SQS health checks fail with QueueDoesNotExistException (separate configuration issue)

What you expected to happen:

All AWS health checks should execute successfully and return healthy status when AWS services are properly configured.

How to reproduce it (as minimally and precisely as possible):

  1. Create a .NET 10 project
  2. Install the following packages:
  • AspNetCore.HealthChecks.Aws.S3 v9.0.0
  • AspNetCore.HealthChecks.DynamoDb v9.0.0
  • AspNetCore.HealthChecks.Aws.Sqs v9.0.0
  • AWSSDK.Core v4.0.3.10
  • AWSSDK.S3 v4.0.6
  • AWSSDK.DynamoDBv2 v4.0.10.9
  • AWSSDK.SQS v4.0.2.5
  1. Configure health checks for AWS services
  2. Call the health check endpoint
  3. Observe MissingMethodException errors

Source code sample:

public static IServiceCollection AddBackendHealthChecks(
    this IServiceCollection services,
    IConfiguration configuration)
{
    IHealthChecksBuilder healthChecks = services.AddHealthChecks();

    // S3 Health checks - throws MissingMethodException
    healthChecks.AddS3(
        options =>
        {
            options.S3Config = new Amazon.S3.AmazonS3Config
            {
                RegionEndpoint = RegionEndpoint.EUWest1,
            };
            options.BucketName = "test-bucket";
        },
        name: "aws s3 - test"
    );

    // DynamoDB Health check - throws MissingMethodException
    healthChecks.AddDynamoDb(options =>
    {
        options.RegionEndpoint = RegionEndpoint.EUWest1;
    });

    // SQS Health check
    healthChecks.AddSqs(options =>
    {
        options.RegionEndpoint = RegionEndpoint.EUWest1;
        options.AddQueue("queue-name");
    });

    return services;
}

Anything else we need to know?:

  • The issue appears to be caused by breaking changes in AWS SDK v4.x where properties like MaxKeys and Limit were changed from property setters to methods
  • This issue is critical for projects targeting .NET 10 that want to use the latest AWS SDK

Environment:

  • .NET Core version: .NET 10 (targeting net10.0)
  • Healthchecks version: 9.0.0 (AspNetCore.HealthChecks.Aws.S3, AspNetCore.HealthChecks.DynamoDb, AspNetCore.HealthChecks.Aws.Sqs)
  • AWS SDK versions: 4.0.x (AWSSDK.Core 4.0.3.10, AWSSDK.S3 4.0.6, AWSSDK.DynamoDBv2 4.0.10.9, AWSSDK.SQS 4.0.2.5)
  • Operative system: Windows (likely, based on file paths, but reproducible on Linux/Docker)
  • Others: Using LocalStack for local AWS development

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions