AWS SDK for .NET
The AWS SDK for .NET enables .NET developers to easily work with [Amazon Web Services][aws] and build scalable solutions with Amazon S3, Amazon DynamoDB, Amazon Glacier, and more.
- [API Docs][docs-api]
- [AWS .NET Developer Blog][dotnet-blog]
- [SDK Homepage][sdk-website]
- SDK Developer Guide
- [Forum][sdk-forum]
- [GitHub Issues][sdk-issues]
- SDK Samples
Getting Help
Please use these community resources for getting help. We use the [GitHub issues][sdk-issues] for tracking bugs and feature requests and have limited bandwidth to address them.
- Ask a question on StackOverflow and tag it with aws-sdk-net
- Come join the AWS .NET community chat on gitter
- Open a support ticket with AWS Support
- If it turns out that you may have found a bug, please open an [issue][sdk-issues]
Opening Issues
If you encounter a bug with AWS SDK for .NET we would like to hear about it. Search the existing issues and try to make sure your problem doesn’t already exist before opening a new issue. It’s helpful if you include the version of AWS SDK .NET and the OS you’re using. Please include a stack trace and reduced repro case when appropriate, too.
The [GitHub issues][sdk-issues] are intended for bug reports and feature requests. For help and questions with using AWS SDK for .NET please make use of the resources listed in the Getting Help section. There are limited resources available for handling issues and by keeping the list of open issues clean we can respond in a timely manner.
SDK Change Log
The change log for the SDK can be found in the SDK.CHANGELOG.ALL.md file. Change logs divided up by year can be found in the changelogs folder.
Maintenance and support for SDK major versions
For information about maintenance and support for SDK major versions and their underlying dependencies, see the following in the AWS SDKs and Tools Shared Configuration and Credentials Reference Guide:
Modularization
With version 3 of the AWS SDK for .NET the SDK has been modularized. This means a separate NuGet package is created for each service as well as a core project. To use this branch compile the solution in the sdk folder that matches the desired platform and then include the assemblies for the services needed as well as the core assembly.
Versioning
The AWS SDK for .NET uses a 4 part versioning scheme following the pattern of w.x.y.z
.
- w - Incremented for code breaking changes.
- x - Incremented for binary breaking changes. In particular this is used to identitfy what versions of AWSSDK.Core are binary compatible with the service packages. For example if AWSSDK.SQS version 3.3.1.0 came out today when the current version of AWSSDK.Core is 3.3.17.5 then AWSSDK.SQS 3.3.1.0 would be compatible with all versions of AWSSDK.Core starting from 3.3.17.5 up to but not including a future 3.4.0.0.
- y - Incremented for a new SDK feature, like new credential management, or an AWS service update.
- z - Incremented for a bug fix or for service packages to update to the latest AWSSDK.Core to pull in latest bug fixes.
The SDK assemblies are strongly named which requires consumers of the SDK to recompile every time the AssemblyVersion
attribute is incremented. To avoid forced recompilations the AssemblyVersion
only contains the w.x
portion of the version. The full w.x.y.z
version number is set in the AssemblyFileVersion
attribute which is not part of the strong name.
Internal Namespace
Classes and interfaces with Internal
in the namespace name are logically internal to the SDK but are often marked with a public
access modifier, generally to allow the service-specific packages to use shared functionality in the Core package. Classes and interfaces in these namespaces are subject to modification or removal outside of versioning scheme described above. If you find yourself relying on Internal
functionality directly, consider opening a Feature Request for your use case if one does not already exist.
Code Analyzers
Each service package includes a code analyzer that's automatically included when installing from NuGet. These analyzers are created based on the rules from the service model, and will generate a warning if you use a property value that's not valid (for example, shorter than the minimum length expected by the service).
Starting with the 3.7.200 versions of the AWS SDK for .NET NuGet packages, the analyzers target .NET Standard 2.0 and support Visual Studio 2019 RTM and later (announcement: https://github.com/aws/aws-sdk-net/issues/2998).
Users on Visual Studio 2017 (or earlier) can still use new versions of the SDK, but there'll be a new warning (CS8032
) about analyzers failing to run. If the build system is configured to treat warnings as errors, this new warning will need to be suppressed or ignored (using WarningsNotAsErrors).
Unity Support
Starting with version 3.5 of the AWS SDK for .NET, projects using Unity 2018.1 or later should target the .NET Standard 2.0 release of the SDK. You can find additional information in the developer guide: Unity support and Migrating your Unity application.
You can find the archive for legacy Unity support at https://github.com/aws/aws-sdk-unity-net.
Functionality requiring AWS Common Runtime (CRT)
This SDK has optional functionality that requires the AWS Common Runtime (CRT) bindings to be included as a dependency with your application. This functionality includes:
- Amazon S3 Multi-Region Access Points
- Amazon S3 Object Integrity
- Amazon EventBridge Global Endpoints
If the required AWS Common Runtime components are not installed you will receive an error like Attempting to make a request that requires an implementation of AWS Signature V4a. Add a reference to the AWSSDK.Extensions.CrtIntegration NuGet package to your project to include the AWS Signature V4a signer.
,
indicating that the required dependency is missing to use the associated functionality. To install this dependency follow
the provided instructions.
Installing the AWS Common Runtime (CRT) Dependency
Add a reference to the NuGet package AWSSDK.Extensions.CrtIntegration to your project.
Tests
Important: Do not run the integration tests on a production account.
Integration tests can be found in the AWSSDK.IntegrationTests project. These test assume that a default profile has been configured for credentials. For information about setting up a default profile read the [Developer Guide][credentials-management].
The tests are designed to create and delete the resources needed for testing but it is important to keep your data safe. Do not run these tests on accounts that contain production data or resources. Since AWS resources are created and deleted during the running of these tests, charges can occur. To reduce charges occurred by running the tests the test focus on AWS resources that have minimal cost.
Unit tests can be found in the AWSSDK.UnitTests project.
Protocol tests can be found in the sdk/test/ProtocolTests
directory. Protocol tests ensure that each AWS protocol is working as expected. Each supported protocol is listed here. These tests are safe to run as they do not call real AWS services. You can run these tests by either opening the solution file and running the tests or via the dotnet
cli by invoking dotnet test AWSSDK.ProtocolTests.NetStandard.csproj
. The structure for the protocol test cases can be found here in the smithy docs.
NuGet Packages
- AWSSDK.AccessAnalyzer
- Introducing AWS IAM Access Analyzer, an IAM feature that makes it easy for AWS customers to ensure that their resource-based policies provide only the intended access to resources outside their AWS accounts.
- AWSSDK.Account
- This release of the Account Management API enables customers to manage the alternate contacts for their AWS accounts. For more information, see https://docs.aws.amazon.com/accounts/latest/reference/accounts-welcome.html
- AWSSDK.ACMPCA
- AWS Certificate Manager (ACM) Private Certificate Authority (CA) is a managed private CA service that helps you easily and securely manage the lifecycle of your private certificates. ACM Private CA provides you a highly-available private CA service without the upfront investment and ongoing maintenance costs of operating your own private CA. ACM Private CA extends ACM's certificate management capabilities to private certificates, enabling you to manage public and private certificates centrally.
- AWSSDK.Amplify
- Amplify is a fully managed continuous deployment and hosting service for modern web apps.
- AWSSDK.AmplifyBackend
- (New Service) The Amplify Admin UI offers an accessible way to develop app backends and manage app content. We recommend that you use the Amplify Admin UI to manage the backend of your Amplify app.
- AWSSDK.AmplifyUIBuilder
- This release introduces the actions and data types for the new Amplify UI Builder API. The Amplify UI Builder API provides a programmatic interface for creating and configuring user interface (UI) component libraries and themes for use in Amplify applications.
- AWSSDK.APIGateway
- Amazon API Gateway helps developers deliver robust, secure and scalable mobile and web application backends. Amazon API Gateway allows developers to securely connect mobile and web applications to APIs that run on AWS Lambda, Amazon EC2, or other publicly addressable web services that are hosted outside of AWS.
- AWSSDK.ApiGatewayManagementApi
- This is the initial SDK release for the Amazon API Gateway Management API, which allows you to directly manage runtime aspects of your APIs. This release makes it easy to send data directly to clients connected to your WebSocket-based APIs.
- AWSSDK.ApiGatewayV2
- This is the initial SDK release for the Amazon API Gateway v2 APIs. This SDK will allow you to manage and configure APIs in Amazon API Gateway; this first release provides the capabilities that allow you to programmatically setup and manage WebSocket APIs end to end.
- AWSSDK.AppConfig
- Introducing AWS AppConfig, a new service that enables customers to quickly deploy validated configurations to applications of any size in a controlled and monitored fashion.
- AWSSDK.AppConfigData
- AWS AppConfig Data is a new service that allows you to retrieve configuration deployed by AWS AppConfig. See the AppConfig user guide for more details on getting started. https://docs.aws.amazon.com/appconfig/latest/userguide/what-is-appconfig.html
- AWSSDK.AppFabric
- Initial release of AWS AppFabric for connecting SaaS applications for better productivity and security.
- AWSSDK.Appflow
- Amazon AppFlow is a fully managed integration service that securely transfers data between AWS services and SaaS applications. This update releases the first version of Amazon AppFlow APIs and SDK.
- AWSSDK.AppIntegrationsService
- The Amazon AppIntegrations service (in preview release) enables you to configure and reuse connections to external applications.
- AWSSDK.ApplicationAutoScaling
- Application Auto Scaling is a general purpose Auto Scaling service for supported elastic AWS resources. With Application Auto Scaling, you can automatically scale your AWS resources, with an experience similar to that of Amazon EC2 Auto Scaling.
- AWSSDK.ApplicationCostProfiler
- APIs for AWS Application Cost Profiler.
- AWSSDK.ApplicationDiscoveryService
- AWS Application Discovery Service helps Systems Integrators quickly and reliably plan application migration projects by automatically identifying applications running in your data center, their associated dependencies, and their performance profile.
- AWSSDK.ApplicationInsights
- CloudWatch Application Insights detects errors and exceptions from logs, including .NET custom application logs, SQL Server logs, IIS logs, and more, and uses a combination of built-in rules and machine learning, such as dynamic baselining, to identify common problems. You can then easily drill into specific issues with CloudWatch Automatic Dashboards that are dynamically generated. These dashboards contain the most recent alarms, a summary of relevant metrics, and log snippets to help you identify root cause.
- AWSSDK.ApplicationSignals
- This is the initial SDK release for Amazon CloudWatch Application Signals. Amazon CloudWatch Application Signals provides curated application performance monitoring for developers to monitor and troubleshoot application health using pre-built dashboards and Service Level Objectives.
- AWSSDK.AppMesh
- AWS App Mesh is a service mesh that makes it easy to monitor and control communications between microservices of an application. AWS App Mesh APIs are available for preview in eu-west-1, us-east-1, us-east-2, and us-west-2 regions.
- AWSSDK.AppRegistry
- AWS Service Catalog AppRegistry provides a repository of your applications, their resources, and the application metadata that you use within your enterprise.
- AWSSDK.AppRunner
- AWS App Runner is a service that provides a fast, simple, and cost-effective way to deploy from source code or a container image directly to a scalable and secure web application in the AWS Cloud.
- AWSSDK.AppStream
- Amazon AppStream is a fully managed, secure application streaming service that allows you to stream desktop applications from AWS to a web browser.
- AWSSDK.AppSync
- AWS AppSync is an enterprise-level, fully managed GraphQL service with real-time data synchronization and offline programming features.
- AWSSDK.AppTest
- AWS Mainframe Modernization Application Testing is an AWS Mainframe Modernization service feature that automates functional equivalence testing for mainframe application modernization and migration to AWS, and regression testing.
- AWSSDK.ARCZonalShift
- Amazon Route 53 Application Recovery Controller Zonal Shift is a new service that makes it easy to shift traffic away from an Availability Zone in a Region. See the developer guide for more information: https://docs.aws.amazon.com/r53recovery/latest/dg/what-is-route53-recovery.html
- AWSSDK.Artifact
- This is the initial SDK release for AWS Artifact. AWS Artifact provides on-demand access to compliance and third-party compliance reports. This release includes access to List and Get reports, along with their metadata. This release also includes access to AWS Artifact notifications settings.
- AWSSDK.Athena
- This release adds support for Amazon Athena. Amazon Athena is an interactive query service that makes it easy to analyze data in Amazon S3 using standard SQL. Athena is serverless, so there is no infrastructure to manage, and you pay only for the queries that you run.