Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

A lightweight .NET client for LocalStack

License

NotificationsYou must be signed in to change notification settings

localstack-dotnet/localstack-dotnet-client

NugetNuGet v2.xNuGet v1.xCI/CD PipelineSecurityLinux Tests

🚀 Quick Start:dotnet add package LocalStack.Client --version 2.0.0 (AWS SDK v4) |Installation Guide |GA Timeline


🎉 What's New: AWS SDK v4 Support Available

v2.0.0 is live with complete AWS SDK v4 support - easier migration than expected!

  • 1,168 tests passing across all frameworks
  • Minimal breaking changes (just .NET Framework 4.6.2 → 4.7.2 and AWS SDK v3 → v4)
  • Public APIs unchanged - your code should work as-is!
  • 📖Read Full Roadmap

Version Strategy:

LocalStack

Localstack.NET is an easy-to-use .NET client forLocalStack, a fully functional local AWS cloud stack. The client library provides a thin wrapper aroundaws-sdk-net which automatically configures the target endpoints to use LocalStack for your local cloud application development.

🚀 Platform Compatibility & Quality Status

Supported Platforms

⚡ Native AOT & Trimming Status

Heads‑up fordotnet publish -p:PublishAot=true /PublishTrimmed=true users

  • v2.0.0 GA ships without Native AOT support.
    The current build still relies on reflection for some AWS SDK internals.

    • Public entry points that touch reflection are tagged with
      [RequiresDynamicCode] /[RequiresUnreferencedCode].
    • You’ll see IL3050 / IL2026 warnings at compile time (promoted to errors in a strict AOT publish).
  • We already ship a linker descriptor withLocalStack.Client.Extensions
    to keep the privateClientFactory<T> machinery alive.Nothing to configure for that part.

  • Until the reflection‑free, source‑generated path lands (work in progress in
    draft PR #49 and tracked on
    roadmap #48):

    1. Suppress the warnings in your appor call only the APIs that don’t rely on reflection.

    2. Add a tinyservice‑specific linker descriptor for everyAWSSDK.* package you reference
      (S3, DynamoDB, etc.). For example, for S3:

      <!-- ILLink.Descriptors.xml--><linker>  <assemblyfullname="AWSSDK.S3">    <typefullname="Amazon.S3.AmazonS3Client" />    <typefullname="Amazon.S3.Internal.AmazonS3Metadata" />    <typefullname="Amazon.S3.AmazonS3Config" />  </assembly><!-- LocalStack options classes already carry [DAM] attributes,       but you can include them if you prefer explicit rules-->  <assemblyfullname="LocalStack.Client">    <typefullname="LocalStack.Client.Options.LocalStackOptions" />    <typefullname="LocalStack.Client.Options.SessionOptions" />    <typefullname="LocalStack.Client.Options.ConfigOptions" />  </assembly></linker>
    3. Wire it into your project once:

      <ItemGroup>  <TrimmerRootDescriptorInclude="ILLink.Descriptors.xml" /></ItemGroup>
    4. If you hit a runtime “missing member” error, ensure you’re on AWS SDK v4≥ 4.1.* and thatthe concreteAWSSDK.* package you’re using is included in the descriptor above.

Planned – v2.1 will introduce an AOT‑friendly factory that avoids reflection entirely; once youmigrate to that API these warnings and extra XML files go away.

Build & Test Matrix

CategoryPlatform/TypeStatusDescription
🔧 BuildCross-PlatformCI/CD PipelineMatrix testing: Windows, Linux, macOS
🔒 SecurityStatic AnalysisSecurityCodeQL analysis & dependency review
🧪 TestsLinuxLinux TestsAll framework targets
🧪 TestsWindowsWindows TestsAll framework targets
🧪 TestsmacOSmacOS TestsAll framework targets

Package Status

PackageNuGet.orgGitHub Packages (Nightly)
LocalStack.Client v1.xNuGet v1.xGithub v1.x
LocalStack.Client v2.xNuGet v2.xGithub v2.x
LocalStack.Client.Extensions v1.xNuGet v1.xGithub v1.x
LocalStack.Client.Extensions v2.xNuGet v2.xGitHub Packages v2.x

Table of Contents

  1. Supported Platforms
  2. Why LocalStack.NET Client?
  3. Prerequisites
  4. Getting Started
  5. Known Issues
  6. Developing
  7. Changelog
  8. License

Why LocalStack.NET Client?

  • Consistent Client Configuration: LocalStack.NET eliminates the need for manual endpoint configuration, providing a standardized and familiar approach to initializing clients.

  • Adaptable Environment Transition: Easily switch between LocalStack and actual AWS services with minimal configuration changes.

  • Versatile .NET Compatibility: Supports a broad spectrum of .NET versions, from .NET 9.0 and .NET Standard 2.0 to .NET Framework 4.6.2 and above.

  • Reduced Learning Curve: Offers a familiar interface tailored for LocalStack, ideal for developers acquainted with the AWS SDK for .NET.

  • Enhanced Development Speed: Reduces boilerplate and manual configurations, speeding up the development process.

Prerequisites

To utilize this library, you need to have LocalStack running. While LocalStack can be installed directly on your machine and accessed via the localstack cli, the recommended approach is to run LocalStack usingDocker ordocker-compose.

For detailed installation and setup instructions, please refer to theofficial LocalStack installation guide.

Getting Started

LocalStack.NET is available through multiple package sources to support different development workflows.

📦 Package Installation

To install the latest version of LocalStack.NET with AWS SDK v4 support, use the following command:

# Install v2.0.0 with AWS SDK v4 supportdotnet add package LocalStack.Client --version 2.0.0dotnet add package LocalStack.Client.Extensions --version 2.0.0

Development Builds (GitHub Packages)

For testing latest features and bug fixes:

# Add GitHub Packages sourcedotnet nuget addsource https://nuget.pkg.github.com/localstack-dotnet/index.json \  --name github-localstack \  --username YOUR_GITHUB_USERNAME \  --password YOUR_GITHUB_TOKEN# Install development packagesdotnet add package LocalStack.Client --prerelease --source github-localstackdotnet add package LocalStack.Client.Extensions --prerelease --source github-localstack

🔑 GitHub Packages Authentication: You'll need a GitHub account andPersonal Access Token withread:packages permission.

Refer todocumentation for more information on how to install LocalStack.NET.

LocalStack.NET is a library that provides a wrapper around theaws-sdk-net. This means you can use it in a similar way to theAWS SDK for .NET and toAWSSDK.Extensions.NETCore.Setup with a few differences. For more on how to use the AWS SDK for .NET, seeGetting Started with the AWS SDK for .NET.

Setup

Here's a basic example of how to setupLocalStack.NET:

publicvoidConfigureServices(IServiceCollectionservices){// Add framework services.services.AddMvc();services.AddLocalStack(Configuration)    services.AddDefaultAWSOptions(Configuration.GetAWSOptions());services.AddAwsService<IAmazonS3>();services.AddAwsService<IAmazonDynamoDB>();}

TheAddLocalStack method integrates LocalStack.NET into your application, and theAddAwsService method allows you to specify which AWS services you want to use with LocalStack.

(Alternatively,AddAWSServiceLocalStack method can be used to prevent mix-up withAddAWSService.)

AddLocalStack extension method is responsible for both configurations and adding ofLocalStack.Client dependencies to service collection.

Configuration

To configure LocalStack.NET, you can use entries in the appsettings.json files. Here's a basic example for different environments:

appsettings.Development.json

"LocalStack": {"UseLocalStack":true,"Session": {"RegionName":"eu-central-1"    },"Config": {"LocalStackHost":"localhost.localstack.cloud",// or "localhost","EdgePort":4566    }}

appsettings.Production.json

"LocalStack": {"UseLocalStack":false},"AWS": {"Profile":"<your aws profile>","Region":"eu-central-1"}

TheRegionName is important as LocalStack creates resources based on the specified region. For more advanced configurations and understanding how LocalStack.NET operates with LocalStack, refer todocumentation.

Known Issues

  • SNS with LocalStack v3.7.2 and v3.8.0: During development on the new version, it was discovered that SNS functional tests are not working in LocalStack versions v3.7.2 and v3.8.0. This issue was reported in LocalStackissue #11652. The LocalStack team identified a bug related to handling SNS URIs and resolved it inPR #11653. The fix will be included in an upcoming release of LocalStack. In the meantime, if you're using SNS, it is recommended to stick to version v3.7.1 of LocalStack until the fix is available.

  • LocalStack Versions v2.0.1 - v2.2: In versions v2.0.1 through v2.2 of LocalStack, the URL routing logic was changed, causing issues with SQS and S3 operations. Two issues were opened in LocalStack regarding this:issue #8928 andissue #8924. LocalStack addressed this problem withPR #8962. Therefore, when using LocalStack.NET, either use version v2.0 of LocalStack (there are no issues with the v1 series as well) or the upcoming v2.3 version, or use the latest v3 series container from Docker Hub.

  • AWS_SERVICE_URL Environment Variable: Unexpected behaviors might occur in LocalStack.NET when theAWS_SERVICE_URL environment variable is set. This environment variable is typically set by LocalStack in the container when using AWS Lambda, and AWS also uses this environment variable in the live environment. Soon, just like in LocalStack's official Python library, this environment variable will be prioritized by LocalStack.NET when configuring the LocalStack host, and there will be a general simplification in the configuration. You can follow this in the issuesissue #27 andissue #32. You set theAWS_SERVICE_URL to empty string until this issue is resolved.

Environment.SetEnvironmentVariable("AWS_SERVICE_URL",string.Empty);
  • IAmazonLambda Operations: There's a general issue withIAmazonLambda operations. This matter is currently under investigation.

  • AWSSDK.SQS Compatibility: Starting from version3.7.300.* ofAWSSDK.SQS, there are compatibility issues with LocalStack v1 and v2 series versions. Thev3 series of LocalStack does not have these issues. Therefore, it is recommended to either update your LocalStack container to the v3 series or downgrade yourAWSSDK.SQS to version3.7.200.* if you are using LocalStack v1 or v2 series containers. It is important to note that this is not a problem related to LocalStack.NET, but rather an issue with the LocalStack container and the AWS SDK for .NET.

Developing

We appreciate contributions in the form of feedback, bug reports, and pull requests.

Building the Project

To build the project, use the following commands based on your operating system:

Windows

build.ps1

Linux

./build.sh

Sandbox Applications

The LocalStack .NET repository includes several sandbox console applications located intests/sandboxes. These applications serve both as testing tools and as examples. Refer tothe documentation for more information

Running Tests

To execute the tests, use the commands below:

Windows

build.ps1--target=tests

Linux

./build.sh --target=tests

Community

Got questions or wild feature ideas?

👉 Join the conversation inGitHub Discussions.

Changelog

Please refer toCHANGELOG.md to see the complete list of changes for each release.

License

Licensed under MIT, seeLICENSE for the full text.

About

A lightweight .NET client for LocalStack

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

No packages published

Contributors5

Languages


[8]ページ先頭

©2009-2025 Movatter.jp