-
Notifications
You must be signed in to change notification settings - Fork 853
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
V4 Development Tracker #3362
Comments
Is there any way to test those packages? Some preview nuget source? |
We'll publish the preview packages to NuGet (e.g. |
First preview packages have been released. Blog post for the release https://aws.amazon.com/blogs/developer/preview-1-of-aws-sdk-for-net-v4/ |
Are you able to provide a preview version of Trying to enable native AoT for a project that depends on the SSM package gives a bunch of warnings:
It's possible some of the above are also coming from internal libraries for transient dependencies that haven't been compiled against v4 yet either. The app is still blocked from 0 AoT warnings due to a dependency on another third-party library that hasn't published some fixes I made yet, but otherwise this SSM package is the final hurdle. |
@martincostello I don't have a timeline yet but we would like push out preview versions of all of our high level packages like |
FYI this is the error I get from an .NET 8 app running as a Lambda with the latest version of
|
V4 Development Tracker
This issue is for tracking the changes being made for V4 of the AWS SDK for .NET. Development of V4 is happening in the
v4-development
branch in this repository. V4 is an evolutionary major version change with minimal breaking changes so application code using the AWS SDK can upgrade to V4 with low effort.Update August 15, 2024
First preview packages have been released. Blog post for the release https://aws.amazon.com/blogs/developer/preview-1-of-aws-sdk-for-net-v4/
Breaking changes
The list of breaking changes made in V4.
bool
are changed tobool?
.null
. The V3 behavior of initializing collections can be restored by setting theAmazon.AWSConfigs.InitializeCollections
totrue
. This property also exists in V3 for users that want to try this behavior change before upgrading to V4.us-east-1
will no longer be able to access buckets in other regions. Buckets musts be accessed with S3 service clients configured for the region the bucket is in. This change avoids surprises in applications using the S3 service client when under the covers it makes multiple AWS requests to access buckets that are not in service clients configuredus-east-1
region.Amazon.Auth.AccessControlPolicy.ActionIdentifiers
namespace. These identifiers were previously marked as obsolete due to be being out of date with no mechanism to keep them up to date. Code using theseActionIdentifiers
should be upgrade to use the string value of the IAM action name.AWSSDK.S3
package. This client had been marked as obsolete with the encryption client moved to its separate packageAmazon.Extensions.S3.Encryption
package. The following migration guide to transition to the separate package. https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/s3-encryption-migration.htmlDetermineServiceURL
method on theClientConfig
, the base class of service client configs likeAmazonS3Config
, was removed. This had been marked obsolete and was tied to an internal endpoint resolution system that was removed in V4. Application code calling this method should switch to using theDetermineServiceOperationEndpoint
method on the service client.us-east-1
regardless of the configured region when running in the public partition. As part of this change theStsRegionalEndpointsValue
enum was removed. Any code using that enum should be removed.RetryMode
defaults toStandard
instead ofLegacy
. TheLegacy
enum value was removed.DefaultConfigurationMode
defaults toStandard
instead ofLegacy
. TheLegacy
enum value was removed.DefaultClientConfig
inAWSSDK.Extensions.NETCore.Setup
no longer extends from service client config base classClientConfig
. The service client config properties have been replicated onDefaultClientConfig
using nullable value types to allow detecting when a value has been set onDefaultClientConfig
when copying the values to the service client config being created for the service client.CookieSigner
andUrlSigner
have been moved to a separate extension package calledAWSSDK.Extensions.CloudFront.Signers
to support SSL3 and take a dependency onBouncyCastle.Cryptography
.GetDecryptedPassword
has been moved to a separate package calledAWSSDK.Extensions.EC2.DecryptPassword
to support OpenSSL 3 and take a dependency onBouncyCastle.Cryptography
.Other noteworthy changes
DynamoDB Changes
In V4 we're addressing issues around testability, improving configuring the high-level
Table
andDynamoDBContext
clients, and potentially additional fixes that require breaking changes.Table
with a mockedIAmazonDynamoDB
now returns anInvalidOperationException
instead of aNullReferenceException
. AsyncTable
methods should now work with a mocked client but you may still see exceptions when calling sync methods from .NET/Core/Standard. See PR #3388, this mostly addresses DynamoDBTable
misrepresents dependency onIAmazonDynamoDB
#1589.DynamoDBOperationConfig
into new operation-specific objects (SaveConfig
,LoadConfig
,QueryConfig
, etc.). The shared config has grown overtime, and contains properties that don't apply to every operation which can lead to confusion. we've marked the methods that takeDynamoDBOperationConfig
as obsolete. We won't remove them from V4 yet, though may do so in a future version. See PR #3421MetadataCachingMode
andDisableFetchingTableMetadata
fromDynamoDBOperationConfig
, and did not include these on the new operation-specific configs that were introduced above. These are table-level settings that should be specified on the globalAWSConfigsDynamoDB.Context
or onDynamoDBContextConfig
. See PR #3422DynamoDBOperationConfig
no longer inherits fromDynamoDBContextConfig
. This prevents you from passing aDynamoDBOperationConfig
in to the constructor forDynamoDBContext
, where some properties on the operation-specific config (such asOverrideTableName
) do not apply. See PR #3422The following changes were made in the SDK. They do not require changes to applications code using the SDK.
AssemblyVersion
will match theAssemblyFileVersion
. In .NET Framework 4.7.2 targetAssemblyVersion
will continue to use the V3 pattern of locking the version to the first 2 parts of the theAssemblyFileVersion
. This is done because .NET Framework treats theAssemblyVersion
as part of the identity assembly. This causes assembly collisions and forced recompilation when mixing versions of the SDK.endpoints.json
file in AWSSDK.Core was removed. This was a 1 MB json file that was parsed at startup for the SDK to determine the service endpoint for a region. Endpoint resolution has been replaced with a new system that generates rules into each individual service assembly for determining the service endpoints.AWSSDK.ToHex
performance. Thanks Steven WeerdenburgAWSSDK.CopyTo
performance. Thanks Daniel MarbachAWSSDKUtils.ParameterAsString
performance. Thanks Daniel MarbachAWSSDKUtils.DetermineService
performance. Thanks Daniel MarbachAWSSDKUtils.UrlEncode
performance. Thanks Daniel MarbachThe text was updated successfully, but these errors were encountered: