Skip to content

Platform Support

Target framework matrix

Target Notes
netstandard2.0 Enables consumption from .NET Framework 4.6.2+ and .NET Core 2.0+, alongside anything else that targets netstandard2.0.
net8.0 Long-term-supported .NET release.
net9.0 Current .NET release.
net10.0 Current .NET release.
net11.0 Forward-looking target, tracked as it becomes generally available.

Microsoft.Extensions.Configuration is version-pinned per target framework in this package (via central package management) so each build picks up the matching stable (or, for net11.0, current preview) line of that package rather than an incompatible cross-major version. Consumers need not configure this.

Native AOT

AWSSecretsManager.Provider and AWSSSM.Provider officially support Native AOT in apps targeting net8.0 or later. Both packages enable trim and AOT analyzers for those targets. CI publishes a Native AOT test app that roots every member in both assemblies and fails on trim (IL2xxx) or AOT (IL3xxx) warnings.

JSON object and array values use System.Text.Json DOM APIs (JsonDocument and JsonElement). This path does not require reflection-based serialization or a source-generated serializer context.

netstandard2.0 remains supported for non-AOT consumers. Native AOT apps select a net8.0 or later asset.

Local development against LocalStack

The provider has no LocalStack-specific code path, but its extensibility hooks are sufficient to point it at a local AWS Secrets Manager emulator such as LocalStack for local development or integration testing:

using Amazon.Runtime;
using AWSSecretsManager.Provider;

builder.AddSecretsManager(
    credentials: new BasicAWSCredentials("test", "test"), // LocalStack accepts any non-empty values
    configurator: options =>
    {
        options.ConfigureSecretsManagerConfig = config =>
        {
            config.ServiceURL = "http://localhost:4566";
            config.UseHttp = true;
        };
    });

This works because ConfigureSecretsManagerConfig runs against the same AmazonSecretsManagerConfig the real client is built from — as long as CreateClient isn't set (which bypasses this entirely; see Advanced Usage), overriding ServiceURL redirects every Secrets Manager call to your local endpoint. Everything else (JSON flattening, filtering, batch fetch, polling) behaves identically against LocalStack as it does against real AWS.

This is a supported pattern via existing extensibility, not a dedicated first-class LocalStack integration — there's no LocalStack-specific package, sample, or test in this repository.

Local development against Floci

Floci is a free, open-source local AWS emulator (LocalStack-compatible, port 4566) that fully emulates SSM Parameter Store — including SecureString parameters with decryption — and Secrets Manager. The AWSSSM.Provider sibling package works against it through the same ConfigureSsmConfig hook:

using AWSSSM.Provider;

builder.AddSsmParameters(
    credentials: new BasicAWSCredentials("test", "test"),
    configurator: options =>
    {
        options.ConfigureSsmConfig = config =>
        {
            config.ServiceURL = "http://localhost:4566";
            config.AuthenticationRegion = "us-east-1";
        };
    });

This repository's own SSM integration test suite (tests/AWSSSM.Provider.Tests/Integration/) runs against Floci in a Testcontainers container, exercising real wire-protocol behavior: key mapping, JSON flattening, SecureString decryption, pagination, and polling reload. The tests skip automatically when Docker isn't available.

Sibling package target framework matrix

AWSSSM.Provider (SSM Parameter Store) targets netstandard2.0, net8.0, net9.0, net10.0, and net11.0.