

的版本 4 (V4) 适用于 .NET 的 AWS SDK 已经发布！

有关重大更改和迁移应用程序的信息，请参阅[迁移主题](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/net-dg-v4.html)。

 [https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/net-dg-v4.html](https://docs.aws.amazon.com/sdk-for-net/v4/developer-guide/net-dg-v4.html)

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 正在迁移到版本 4 的 适用于 .NET 的 AWS SDK
<a name="net-dg-v4"></a>

 适用于 .NET 的 AWS SDK 版本 4 (V4) 与 SDK 的版本 3 (V3) 相比有大量重大更改。本主题介绍版本 4 中的重大更改以及从 V3 迁移环境或代码可能需要完成的工作。有关 SDK 中其他值得注意的变更的更多信息，请参阅以下资源：
+ 上的开发跟踪器问题:. GitHub [https://github.com/aws/aws-sdk-net/issues/3362](https://github.com/aws/aws-sdk-net/issues/3362) 
+ 博客文章 [适用于 .NET 的 AWS SDK V4 的预览 1](https://aws.amazon.com/blogs/developer/preview-1-of-aws-sdk-for-net-v4/)。
+ 博客文章 [适用于 .NET 的 AWS SDK V4 的预览 4](https://aws.amazon.com/blogs/developer/preview-4-of-aws-sdk-for-net-v4/)。
+ 博客文章 [适用于 .NET 的 AWS SDK V4.0 的正式上市](https://aws.amazon.com/blogs/developer/general-availability-of-aws-sdk-for-net-v4-0/)。

## NET Framework。
<a name="net-dg-v4-framework3.5"></a>

.NET Framework 3.5 目标已从的 V4 中 适用于 .NET 的 AWS SDK删除。因此，软件开发工具包不再支持.NET Framework 3.5。此版本的 SDK 是针对.NET Framework 4.7.2 编译的，并在.NET 4.0 运行时中运行。有关更多信息，请参阅[支持的平台](net-dg-supported-platforms.md#net-dg-platform-diff-netfx45)。

## 值类型
<a name="net-dg-v4-value-types"></a>

在用于发出请求和响应的类中使用值类型的属性已更改为使用可为空的值类型。以下类型的属性已更改：
+ `bool`已更改为 `bool?` 
+ `double`已更改为 `double?` 
+ `int`已更改为 `int?` 
+ `float`已更改为 `float?` 
+ `long`已更改为 `long?` 
+ `Datetime`已更改为 `Datetime?`

有关此更改的更多信息，请参阅博客文章 [适用于 .NET 的 AWS SDK V4 的 Preview 1](https://aws.amazon.com/blogs/developer/preview-1-of-aws-sdk-for-net-v4/)。

## 集合
<a name="net-dg-v4-collections"></a>

现在，在用于发出请求和响应的类中使用集合的属性默认为`null`。因此，在尝试使用集合之前，您的代码需要验证集合是否为空。例如：

```
var sqsClient = new AmazonSQSClient();
var listResponse = await sqsClient.ListQueuesAsync(new ListQueuesRequest());
if (listResponse.QueueUrls != null)
{
    foreach (string qUrl in listResponse.QueueUrls)
    {
        // Perform operations on each queue such as displaying all the attributes.
    }
}
```

通过将设置为，可以恢复 V3 初始化集合的行为`Amazon.AWSConfigs.InitializeCollections`。`true`V3 中也存在此属性，供想要在升级到 V4 之前尝试此行为更改的用户使用。

有关此更改的更多信息，请参阅博客文章 [适用于 .NET 的 AWS SDK V4 的 Preview 1](https://aws.amazon.com/blogs/developer/preview-1-of-aws-sdk-for-net-v4/)。

## AWS Security Token Service (STS)
<a name="net-dg-v4-sts"></a>
+ **区域终端节点**

  使用依赖的凭证提供商时 AWS STS，呼叫始终使用区域终端节点。这与 SDK 的 V3 不同，后者在公共分区中运行时默认使用`us-east-1`区域，无论配置了哪个区域。
+ **`StsRegionalEndpointsValue`枚举**

  该`StsRegionalEndpointsValue`枚举已从 [Amazon.R](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/NRuntime.html) untime 命名空间中删除。任何使用该枚举的代码都应该被删除。
+ **`STSAssumeRoleAWSCredentials` 类**

  [已从 Amazon 上移除已弃用的 STS 代入角色凭证提供程序。`STSAssumeRoleAWSCredentials` SecurityToken](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/SecurityToken/NSecurityToken.html)命名空间。改为使用 [AssumeRoleAWSCredentials](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TAssumeRoleAWSCredentials.html)[Amazon.Runtime。](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/NRuntime.html)

## 与以下内容相关的更改 `ClientConfig`
<a name="net-dg-v4-clientconfig"></a>

[Amazon.Runtime。 ClientConfig](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TClientConfig.html)类是像 [Amazons](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/S3/TS3Config.html) 3Config 这样的服务客户端配置类的基类。对该基类进行了以下更改。
+  **默认重试模式** 

  该`RetryMode`属性默认为`Standard`而不是`Legacy`。因此，该`Legacy`值已从 [Amazon.Runtime 中删除。 RequestRetryMode](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TRequestRetryMode.html)枚举。
+  **默认配置模式** 

  该`DefaultConfigurationMode`属性默认为`Standard`而不是`Legacy`。因此，该`Legacy`值已从 [Amazon.Runtime 中删除。 DefaultConfigurationMode](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TDefaultConfigurationMode.html)枚举。
+  **该`ReadWriteTimeout`财产** 

  已从除.NET Framework 4.7.2 之外的所有目标中删除了过时的`ReadWriteTimeout`属性。

## AWSSDK.Extensions NETCore.Setup 软件包 NuGet
<a name="net-dg-v4-netcore-setup"></a>

[AWSSDK.Extensions NETCore.Setup](https://www.nuget.org/packages/AWSSDK.Extensions.NETCore.Setup/) NuGet 软件包已更新，以缓解 SDK V3 中存在的问题，并使该软件包对原生 AOT 来说是安全的。这些变化概述如下。有关详细信息，请参阅[aws-sdk-net](https://github.com/aws/aws-sdk-net)存储库中的 [PR 3353](https://github.com/aws/aws-sdk-net/pull/3353)。 GitHub
+ **`DefaultClientConfig` 类**

  该`DefaultClientConfig`类不再继承自服务客户端配置基类 [Amazon.Runtime。 ClientConfig](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TClientConfig.html)。中的相关属性`ClientConfig`已`DefaultClientConfig`使用可为空的值类型进行复制。此更改使我们能够在将值复制到为服务客户端创建的配置`DefaultClientConfig`时检测何时设置了值。

  此更改的一个特别结果`DefaultClientConfig.HttpClientFactory`是，它在 V4 中不再可用。请改用 `AWSConfigs.HttpClientFactory`。有关更多信息，请参阅[GitHub 问题 3790](https://github.com/aws/aws-sdk-net/issues/3790)。

  此更改的另一个结果是，接受服务配置对象的`IConfiguration.GetAWSOptions`扩展方法的通用重载已被删除。应改用非通用重载，SDK 将自动处理填充特定于服务的设置。有关更多信息，请参阅[GitHub 问题 3866](https://github.com/aws/aws-sdk-net/issues/3866)。
+ **原生 AOT**

  该软件包中添加了一种用于创建使用 C\$1 11 静态接口方法的服务客户端的新机制。此更改无需加载程序集类型来创建服务客户端实例，包括对服务接口名称进行字符串操作以计算服务客户端类型，这与 Native AOT 不兼容。此更改仅适用于.NET 8 及更高版本；旧版本仍使用原始机制。

有关本指南中有关此软件包的更多信息，请参阅[AWSSDK. 扩展。 NETCore.Setup 和 IConfiguration](net-dg-config-netcore.md)。该软件包的源代码 GitHub 位于[https://github.com/aws/aws-sdk-net/tree/main/extensions/src/AWSSDK.Extensions.NETCore.Setup](https://github.com/aws/aws-sdk-net/tree/main/extensions/src/AWSSDK.Extensions.NETCore.Setup)。

## `CookieSigner` 和 `UrlSigner`
<a name="net-dg-v4-CookieSigner-UrlSigner"></a>

Amazon 的`CookieSigner`和`UrlSigner`扩展 CloudFront 已移至名为 [AWSSDK.Extensions 的单独扩展包中。 CloudFront.Signers。](https://www.nuget.org/packages/AWSSDK.Extensions.CloudFront.Signers)[此更改是为了支持 OpenSSL 3 并依赖 BouncyCastle .Cryptography。](https://www.nuget.org/packages/BouncyCastle.Cryptography)

该软件包的源代码 GitHub 位于[https://github.com/aws/aws-sdk-net/tree/main/extensions/src/AWSSDK.Extensions.CloudFront.Signers](https://github.com/aws/aws-sdk-net/tree/main/extensions/src/AWSSDK.Extensions.CloudFront.Signers)。

## DateTime 对阵世界标准时间 DateTime
<a name="net-dg-v4-utc-datetime"></a>

某些 V3 类具有标记为 “已弃用” 或 “已过时” 的 DateTime 属性，以及备用 UTC DateTime 属性。在这些类中，过时的 DateTime 属性已被删除，UTC DateTime 属性的名称已更改为该 DateTime属性的原始名称。

以下是一些已实现此更改的类的示例。
+ [DescribeSpotPriceHistoryRequest](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/EC2/TDescribeSpotPriceHistoryRequest.html):
  + 已删除过时的`StartTime`属性，并且该`StartTimeUtc`属性的名称已更改为 “StartTime”。
  + 已删除过时的`EndTime`属性，并且该`EndTimeUtc`属性的名称已更改为 “EndTime”。
+  [CreateFleetRequest](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/EC2/TCreateFleetRequest.html) 
  + 已删除过时的`ValidFrom`属性，并且该`ValidFromUtc`属性的名称已更改为 “ValidFrom”。
  + 已删除过时的`ValidUntil`属性，并且该`ValidUntilUtc`属性的名称已更改为 “ValidUntil”。

如果应用程序使用的是原始的、过时的 DateTime属性，则此更改可能会导致偏移时间。使用 UTC DateTime 属性的代码将发生编译时错误。

## DateTime 正在解析
<a name="net-dg-v4-datetime-parsing"></a>

该 DateTimeUnmarshaller 类已更新。该类一直在按本地时间解析和返回 DateTime字符串。在某些情况下，由于之前的更新，这些值会被转换回 UTC，但并非总是如此。现在，假定未编组的 DateTime 字符串为 UTC，并将按照 UTC 进行指定和解组。此更新包括以下行为更改。

基于该 DateTime 类的某些时间戳属性正在被解析为当地时间。其中包括用于时间戳的响应解组器和格式的列表时间戳以及。`TimestampFormat.ISO8601` `TimestampFormat.RFC822` DateTime 解析已更新，改为返回 UTC 时间。

## `ConvertFromUnixEpochSeconds` 和 `ConvertFromUnixEpochMilliseconds`
<a name="net-dg-v4-ConvertFromUnixEpoch"></a>

[ConvertFromUnixEpochSeconds](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Util/MAWSSDKUtilsConvertFromUnixEpochSecondsInt32.html)和[ConvertFromUnixEpochMilliseconds](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Util/MAWSSDKUtilsConvertFromUnixEpochMillisecondsInt64.html)方法将 Unix 纪元秒转换为 DateTime结构，它们将 Unix 纪元时间作为本地时间而不是 UTC 时间返回。这些方法现在返回 UTC 时间。

## 日志记录
<a name="net-dg-v4-logging"></a>

在 SDK 中启用登录功能的方式已针对 V4 进行了更新。登录控制台和系统诊断与 V3 的工作原理相同；也就是说，通过将[AWSConfigs](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Amazon/TAWSConfigs.html)类的`LoggingConfig.LogTo`属性设置为`LoggingOptions.Console`或`LoggingOptions.SystemDiagnostics`。的[LoggingOptions](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Amazon/TAWSConfigs.html)选项以及用于使用反射附加到内存中实例的 SDK 的内部逻辑`log4net`已被删除。`log4net`

为了将 SDK 登录到日志框架，需要使用单独的适配器包将 SDK 与日志框架连接起来。[使用.extensions [AWSSDK.Logging.Log4 包和.extens.Logg NetAdaptor](https://www.nuget.org/packages/AWSSDK.Extensions.Logging.Log4NetAdaptor) ing。`log4net` AWSSDK ILogger](https://www.nuget.org/packages/AWSSDK.Extensions.Logging.ILoggerAdaptor/#readme-body-tab)适配器包适用于. `Microsoft.Extensions.Logging` 以下代码示例向您展示了如何在这两种情况下配置日志记录。

### log4net 的配置示例
<a name="w2aac25c11c27b7b1"></a>

添加`AWSSDK.Extensions.Logging.Log4NetAdaptor` NuGet 软件包并从中调用静态`ConfigureAWSSDKLogging`方法`Log4NetAWSExtensions`。

```
using Amazon.DynamoDBv2;
using Amazon.Extensions.Logging.Log4NetAdaptor;
using log4net;

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config")]

Log4NetAWSExtensions.ConfigureAWSSDKLogging();
var logger = LogManager.GetLogger(typeof(Program));
```

### Microsoft.extens.Loggin
<a name="w2aac25c11c27b7b3"></a>

添加`AWSSDK.Extensions.Logging.ILoggerAdaptor` NuGet 软件包并从`ILoggerFactory`接口调用`ConfigureAWSSDKLogging`扩展方法。

```
var builder = WebApplication.CreateBuilder(args);

var app = builder.Build();

app.Services.GetRequiredService<ILoggerFactory>()
    .ConfigureAWSSDKLogging();
```

## 对 HTTP 2 的支持
<a name="net-dg-v4-http2"></a>

已添加对 HTTP 2 的 Support 以启用双向流式传输。有关更多信息，请参阅 [对 HTTP 2 的支持](http2-support.md)。

## 单点登录
<a name="net-dg-v4-sso"></a>

[SSOAWSCredentials选项](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TSSOAWSCredentialsOptions.html)类`SupportsGettingNewToken`属性的默认值已从更改`true`为`false`。如果您的应用程序使用该[SSOAWSCredentials](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TSSOAWSCredentials.html)类来获取 SSO 凭证，则可能需要将该`Options.SupportsGettingNewToken`属性设置为。`true`有关此配置的示例，请参阅中的[代码示例](sso-tutorial-app-only.md#sso-tutorial-app-only-code)[仅使用 .NET 应用程序的 SSO 教程](sso-tutorial-app-only.md)。有关更多信息，请参阅[aws-sdk-net](https://github.com/aws/aws-sdk-net) GitHub 存储库中的 [PR 3737](https://github.com/aws/aws-sdk-net/pull/3737)。

## 特定于 DynamoDB 的更改
<a name="net-dg-v4-ddb-specific"></a>

以下更改特定于亚马逊 DynamoDB。其中许多都是突破性的变化。

有关在 V4 中对 DynamoDB 进行更改的更多信息，请参阅博客[文章](https://aws.amazon.com/blogs/developer/preview-4-of-aws-sdk-for-net-v4/) V4 的 适用于 .NET 的 AWS SDK预览 4。 适用于 .NET 的 AWS SDK 

### 打开以查看项目
<a name="w2aac25c11c35b7b1"></a>

适用于 DynamoDB 的 SDK 中的 V4 更改解决了一些与可测试性有关的问题，但主要集中在高级库上：
+ 代码[DocumentModel](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/DynamoDBv2/NDynamoDBv2DocumentModel.html)中命名的 [.NET 文档模型](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DotNetSDKMidLevel.html)。
+ 代码中命名的 [[DataModel](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/DynamoDBv2/NDynamoDBv2DataModel.html).NET 对象持久化模型](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DotNetSDKHighLevel.html)。

有关这些编程模式的详细信息，请参阅本指南[DynamoDB](dynamodb-intro.md)中的。

#### 文档模型：更新了模拟`IAmazonDynamoDB`界面的异常
<a name="w2aac25c11c35b7b1b9"></a>

在 SDK 版本 4 之前的文档模型中，如果使用模拟的 D [IAmazonynamoDB](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/DynamoDBv2/TIDynamoDB.html) 接口初始化[表](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/DynamoDBv2/TTable.html)，它将返回。`NullReferenceException``InvalidOperationException`改为返回 SDK 的 V4。异步`Table`方法应该适用于模拟客户端，但是从中调用同步方法时，您可能仍会看到异常。`.NET/Core/Standard`

有关此变更的更多信息，请参阅上的 [PR 3388](https://github.com/aws/aws-sdk-net/pull/3388)。 GitHub

#### 文档模型：`FromJson`和`ToJson`方法
<a name="w2aac25c11c35b7b1c11"></a>

D [oc](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/DynamoDBv2/TDocument.html) ument 类的`FromJson`和`ToJson`方法现在使用`System.Text.Json`而不是序列化，并且 LitJson 已从 SDK 的 V4 中删除。 LitJson 使用的一个好处`System.Text.Json`是，此解析器支持使用.NET `Decimal` 类型，该类型支持更高的数字浮点属性的精度。

#### 对象持久化模型：该`DynamoDBOperationConfig`类
<a name="w2aac25c11c35b7b1c13"></a>

在对象持久化模型中，对共享的 [Dynamo DBOperation Config](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/DynamoDBv2/TDynamoDBOperationConfig.html) 类进行了以下更改：
+ 该类已被分成新的特定于操作的类 [SaveConfig](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/DynamoDBv2/TSaveConfig.html)，例如[LoadConfig](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/DynamoDBv2/TLoadConfig.html)、和。[QueryConfig](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/DynamoDBv2/TQueryConfig.html)采用的方法`DynamoDBOperationConfig`已被标记为已过时，将来可能会被删除。

  有关此变更的更多信息，请参阅上的 [PR 3421](https://github.com/aws/aws-sdk-net/pull/3421)。 GitHub
+ `MetadataCachingMode`和`DisableFetchingTableMetadata`属性已从类中移除。这些属性未包含在前面提到的新的特定于操作的类中。[https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Amazon/TAWSConfigsDynamoDB.html](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Amazon/TAWSConfigsDynamoDB.html)

  有关此变更的更多信息，请参阅上的 [PR 3422](https://github.com/aws/aws-sdk-net/pull/3422)。 GitHub
+ 该类不再继承自 [Dynamo Confi DBContext g](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/DynamoDBv2/TDynamoDBContextConfig.html) 类。这可以防止您将`DynamoDBOperationConfig`对象传递给 [Dynamo](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/DynamoDBv2/TDynamoDBContext.html) 的构造函数DBContext，在该构造函数中，特定于操作的配置（例如`OverrideTableName`）中的某些属性不适用。

  有关此变更的更多信息，请参阅上的 [PR 3422](https://github.com/aws/aws-sdk-net/pull/3422)。 GitHub

#### 对象持久化模型：多态性
<a name="w2aac25c11c35b7b1c15"></a>

D [ynamo DBPolymorphic TypeAttribute](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/DynamoDBv2/TDynamoDBPolymorphicTypeAttribute.html) 类已添加到对象持久化模型中。该类支持多态类型的序列化和反序列化。有关更多信息，请参阅上的 [PR 3643](https://github.com/aws/aws-sdk-net/pull/3643)。 GitHub

#### 文档模型和对象持久化模型：可模拟的操作
<a name="w2aac25c11c35b7b1c17"></a>

添加了新的特定于操作的接口，允许客户模拟 DynamoDB 操作。[IDynamoDBContext](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/DynamoDBv2/TIDynamoDBContext.html)接口上的出厂方法已更新为返回新接口。

有关此变更的更多信息，请参阅上的 [PR 3450](https://github.com/aws/aws-sdk-net/pull/3450)。 GitHub
+ 对象持久化模型
  + 通过`IBatchGet`和`IMultiTableBatchGet`接口模拟`BatchGet`操作。
  + 通过`IBatchWrite`和`IMultiTableBatchWrite`接口模拟`BatchWrite`操作。
  + 通过`ITransactGet`和`IMultiTableTransactGet`接口模拟`TransactGet`操作。
  + 通过`ITransactWrite`和`IMultiTableTransactWrite`接口模拟`TransactWrite`操作。
  + 通过`IAsyncSearch`界面进行模拟`Scan`和`Query`操作。
+ 文档模型
  + 通过`ITable`接口模拟`Table`操作。
  + 通过`ISearch`界面进行模拟`Scan`和`Query`操作。
  + 通过`IDocumentTransactWrite`和`IMultiTableDocumentTransactWrite`接口模拟`TransactWrite`操作。
  + 通过`IDocumentTransactGet`和`IMultiTableDocumentTransactGet`接口模拟`TransactGet`操作。
  + 通过`IDocumentBatchWrite`和`IMultiTableDocumentBatchWrite`接口模拟`BatchWrite`操作。
  + 通过`IDocumentBatchGet`和`IMultiTableDocumentBatchGet`接口模拟`BatchGet`操作。

#### 文档模型和对象持久化模型：对原生 AOT 的支持
<a name="w2aac25c11c35b7b1c19"></a>

原生 AOT 的一个限制是支持嵌套的.NET 类型。在某些情况下，.NET 编译器的修剪组件可能会忽略这些嵌套类型。在这种情况下，您可能会收到异常，例如：“`System.InvalidOperationException: Type <type> is unsupported, it cannot be instantiated.`”

你可以通过在代码路径中的`DynamicDependency`某处添加一个来解决这个限制，告知修剪器对子类型的依赖性。保存的顶级.NET 类型的构造函数可能位于此处。以下代码示例向您展示了如何使用该`DynamicDependency`属性：

```
[DynamoDBTable("TestTable")]
class TypeWithNestedTypeProperty
{
    [DynamicDependency(DynamicallyAccessedMemberTypes.All, typeof(SubType))]
    public TypeWithNestedTypeProperty()
    {

    }

    [DynamoDBHashKey]
    public string Id { get; set; }
    public string Name { get; set; }

    public SubType SubType { get; set; }
}

class SubType
{
    public string SubName { get; set; }
}
```

#### 迪纳摩 DBStreams
<a name="w2aac25c11c35b7b1c21"></a>

[Dynamo DBStreams](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Streams.html) 已从 [AWSSDK.dynamoDB](https://www.nuget.org/packages/AWSSDK.DynamoDBv2) NuGet 软件包中移除，可在自己的软件包 [AWSSDK.Dynamo](https://www.nuget.org/packages/AWSSDK.DynamoDBStreams) 中使用DBStreams，并有自己的命名空间。`Amazon.DynamoDBStreams`

#### 允许删除该`TableNamePrefix`值
<a name="w2aac25c11c35b7b1c23"></a>

现在，您可以在单个操作级别上删除 [Dynamo DBContext Config](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Util/TDynamoDBContextConfig.html) 类中的`TableNamePrefix`属性值。有关此变更的更多信息，请参阅上的 [PR 3476](https://github.com/aws/aws-sdk-net/pull/3476)。 GitHub

#### `RetrieveDateTimeInUtc` 属性
<a name="w2aac25c11c35b7b1c25"></a>

对于 [Dynamo DBContext Config](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Util/TDynamoDBContextConfig.html) 类，该`RetrieveDateTimeInUtc`属性的默认值已更改为。`true`

#### `DynamoDBContextTableNamePrefix` 属性
<a name="w2aac25c11c35b7b1c27"></a>

已从 [AWSConfigsDynamoDB](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Amazon/TAWSConfigsDynamoDB.html) 类中移除该`DynamoDBContextTableNamePrefix`属性。用户应该打电话`AWSConfigsDynamoDB.Context.TableNamePrefix`而不是 

## 特定于 EC2 的更改
<a name="net-dg-v4-ec2-specific"></a>

以下更改特定于 Amazon EC2。它们中的大多数或全部都是重大变化。

### 打开以查看项目
<a name="w2aac25c11c39b5b1"></a>

#### `GetDecryptedPassword`
<a name="w2aac25c11c39b5b1b3"></a>

Amazon EC2 的`GetDecryptedPassword`扩展已移至一个名为.extension [AWSSDKs.ec2 的单独扩展包中。 DecryptPassword](https://www.nuget.org/packages/AWSSDK.Extensions.EC2.DecryptPassword)。[此更改是为了支持 OpenSSL 3 并依赖 BouncyCastle .Cryptography。](https://www.nuget.org/packages/BouncyCastle.Cryptography)

该软件包的源代码 GitHub 位于[https://github.com/aws/aws-sdk-net/tree/main/extensions/src/AWSSDK.Extensions.EC2.DecryptPassword](https://github.com/aws/aws-sdk-net/tree/main/extensions/src/AWSSDK.Extensions.EC2.DecryptPassword)。

#### 对 Amazon EC2 的支持 IMDSv1
<a name="w2aac25c11c39b5b1b5"></a>

已移除对实例元数据服务版本 1 (IMDSv1) 的支持。从 IMDS 获取凭证和其他元数据时，SDK 的 V4 始终使用实例元数据服务版本 2 (IMDSv2)。有关 IMDS 的更多信息，请参阅 [Amazon EC2 用户](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/)[指南中的使用 IMDS](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html)。

#### 已更改或移除的编程元素
<a name="w2aac25c11c39b5b1b7"></a>
+ 整个`Amazon.EC2.Import`命名空间和代码已被删除。
+ 整个`Amazon.EC2.Util`命名空间和代码已被删除，其中包括用于查找 Windows 版 EC2 的 AMIs AMI 实用程序。
+ 已从[IpPermission](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/EC2/TIpPermission.html)类中移除过时的`IpRanges`属性。改用`Ipv4Ranges`或`Ipv6Ranges`属性。
+ 以下过时的字段已从[EC2InstanceMetadata](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Util/TEC2InstanceMetadata.html)类中删除：`EC2_METADATA_SVC``EC2_METADATA_ROOT`、`EC2_USERDATA_ROOT`、`EC2_DYNAMICDATA_ROOT`、和`EC2_APITOKEN_URL`。

## 特定于 S3 的更改
<a name="net-dg-v4-s3-specific"></a>

以下更改特定于 Amazon S3。它们中的大多数或全部都是重大变化。

### 打开以查看项目
<a name="w2aac25c11c43b5b1"></a>

#### AWS 区域 us-east-1
<a name="w2aac25c11c43b5b1b3"></a>

为`us-east-1`该区域配置的 Amazon S3 服务客户端无法再访问其他区域中的存储桶。必须使用为存储桶所在区域配置的 S3 服务客户端来访问存储桶。

有关此更改的更多信息，请参阅博客文章 V4 的 Pre [适用于 .NET 的 AWS SDK view 4](https://aws.amazon.com/blogs/developer/preview-4-of-aws-sdk-for-net-v4/)。

#### S3 加密客户端
<a name="w2aac25c11c43b5b1b5"></a>

在`Amazon.S3.Encryption`命名空间中定义的 Amazon S3 加密客户端已从 [AWSSDK.S3](https://www.nuget.org/packages/AWSSDK.S3) 软件包中删除。该客户端已移至自己的名为 [Amazon.extensions.S3.](https://www.nuget.org/packages/Amazon.Extensions.S3.Encryption) Encryption 的软件包中，其文档位于。[https://aws.github.io/amazon-s3-encryption-client-dotnet/api/Amazon.Extensions.S3.Encryption.html](https://aws.github.io/amazon-s3-encryption-client-dotnet/api/Amazon.Extensions.S3.Encryption.html)有关迁移的更多信息，请参阅[S3 加密客户端迁移（从 V1 到 V2）](s3-encryption-migration-v1-v2.md)。有关 S3 加密的更多信息，请参阅 [Amazon S3 加密客户端开发人员指南中的支持的加密](https://docs.aws.amazon.com/amazon-s3-encryption-client/latest/developerguide)[算法](https://docs.aws.amazon.com/amazon-s3-encryption-client/latest/developerguide/encryption-algorithms.html)。

#### 适用于 S3 的标记指令 `CopyObject`
<a name="w2aac25c11c43b5b1b7"></a>

该`TaggingDirective`属性已作为该[CopyObjectRequest](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/S3/TCopyObjectRequest.html)类的公共属性公开，`AmazonS3Client.CopyObject`方法使用该属性。此属性对应于[CopyObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)操作中定义的 Amazon S3 `x-amz-tagging-directive` 参数。

标记指令不再自动设置为 COPY。如果开发人员未指定标记指令，则 S3 后端会自动假设该指令是 COPY，但是如果开发人员明确将该属性设置为空，则根本不会设置该值。

#### S3 配置的`UseArnRegion`属性
<a name="w2aac25c11c43b5b1b9"></a>

[Amazon.s3.amazons3Config](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/S3/TS3Config.html) 类的`UseArnRegion`属性已更新，因此`AWS_S3_USE_ARN_REGION`环境变量优先于共享文件中的设置。`s3_use_arn_region` AWS `config`有关这些变量和设置的更多信息，请参阅[AWS SDKs 和工具[参考指南中的设置](https://docs.aws.amazon.com/sdkref/latest/guide/settings-reference.html)参考](https://docs.aws.amazon.com/sdkref/latest/guide/)。

#### `CopyObject`和`CopyPart`方法的前导斜杠
<a name="w2aac25c11c43b5b1c11"></a>

Amazon S3 `CopyObject` 和`CopyPart`方法的前导斜线将不再被修剪。该`DisableTrimmingLeadingSlash`属性已从[CopyObjectRequest](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/S3/TCopyObjectRequest.html)和[CopyPartRequest](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/S3/TCopyPartRequest.html)类中移除。

#### 这些`DoesS3BucketExist...`方法
<a name="w2aac25c11c43b5b1c13"></a>

[已从实现 AmazonS3 接口的 [Amazons3uTil](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/S3/TS3Util.html) 类中删除了过时的`DoesS3BucketExist`和`DoesS3BucketExistAsync`方法。ICore](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TICoreS3.html)这些方法之所以被删除，是因为它们始终使用 HTTP。改用 [doess3 BucketExist V2 和 doesS3 V2A](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/S3/MS3UtilDoesS3BucketExistV2IS3String.html) syn [c BucketExist](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/S3/MS3UtilDoesS3BucketExistV2AsyncIS3String.html)。

#### SDK 总是使用 sigv4
<a name="w2aac25c11c43b5b1c15"></a>

的版本 4 适用于 .NET 的 AWS SDK 始终使用 AWS 签名版本 4 (Sigv4) 对请求进行签名。此更改会导致以下相关更改：
+ [AWSConfigsS3](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Amazon/TAWSConfigsS3.html) 类的`UseSignatureVersion4`属性已被删除。
+ [Amazon.Runtime 的`SignatureVersion`财产。 ClientConfig](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TClientConfig.html)类已被删除。为了向后兼容，Amazon S3 仅使用此属性。
+ 该`RegionEndpoint.Endpoint`类已被删除。这包括用于覆盖 Amazon S3 签名版本的`SignatureVersionOverride`属性。请改用特定于服务的`client.DetermineServiceOperationEndPoint()`方法。
+ 更新了 [Amazons3util 的方法。 PostUpload](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/S3/MS3UtilPostUploadS3PostUploadRequest.html)和 [S3 PostUploadSignedPolicy。 GetSignedPolicy](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/S3/MS3PostUploadSignedPolicyGetSignedPolicyStringAWSCredentialsString.html)使用 sigv4。因此，该`S3PostUploadSignedPolicy.GetSignedPolicyV4`方法已被删除，因为`GetSignedPolicy`现在执行的功能相同。此外，`GetSignedPolicy`还为区域终端节点提供了第三个参数。

#### `GetACL`和`PutACL`方法
<a name="w2aac25c11c43b5b1c17"></a>

[Amazons3Client](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/S3/TS3Client.html) 类的`GetACL`和`PutACL`方法已被标记为已过时。要访问这些方法的功能，请改用以下新方法：`GetBucketACL``PutBucketACL`、`GetObjectACL`、和`PutObjectACL`。

#### 已移除过时的编程元素
<a name="w2aac25c11c43b5b1c19"></a>

Amazon S3 实现中的许多编程元素已从 SDK 的 V4 中删除，包括枚举值、类型、方法、命名空间等。下面列出了这些内容（如果之前尚未介绍），以及您可以采取哪些可能的措施来适应它们的删除。
+ 该`DisableMD5Stream`属性已从[TransferUtilityUploadRequest](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/S3/TTransferUtilityUploadRequest.html)类中删除。请改用 `DisableDefaultChecksumValidation` 属性。

  此外，该`CalculateContentMD5Header`属性已从`TransferUtilityUploadRequest`类中删除。不再需要此属性，因为 SDK 默认会计算校验和。
+ `ServerSideEncryptionMethod`和`ServerSideEncryptionKeyManagementServiceKeyId`属性已从[CopyPartRequest](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/S3/TCopyPartRequest.html)类中删除。改用类中同名的属性，[Amazons3](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/S3/TS3Client.html) Client [InitiateMultipartUploadRequest](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/S3/TInitiateMultipartUploadRequest.html)类的某些`InitiateMultipartUpload...`方法中使用了该属性。
+ 该`Expires`属性已从[GetObjectResponse](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/S3/TGetObjectResponse.html)类中删除。请改用 `ExpiresString` 属性。该字符串可能不是有效的时间戳格式，因此您的代码在转换为 a `DateTime` 时应使用该`TryParse`方法。
+ 已从 [S3Re](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/S3/TS3Region.html) gion 枚举中删除了过时的 AWS 区域 标识符。
+ 该`Prefix`属性已从[LifecycleRule](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/S3/TLifecycleRule.html)类中删除。请改用 `Filter` 属性。

  此外，`NoncurrentVersionTransition`和`Transition`属性已从`LifecycleRule`类中删除。改用`NoncurrentVersionTransitions`和`Transitions`集合。
+ 该`Event`属性已从[TopicConfiguration](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/S3/TTopicConfiguration.html)类中删除。改用该`Events`集合。
+ CalculateContentMD5标题属性。不再需要设置此属性，因为 SDK 默认会计算校验和。
+ 该`Bucket`属性已从[SelectObjectContentRequest](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/S3/TSelectObjectContentRequest.html)类中删除。请改用 `BucketName` 属性。
+ 该`NumberOfUploadThreads`属性已从[TransferUtilityConfig](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/S3/TTransferUtilityConfig.html)类中删除。改用`ConcurrentServiceRequests`属性。

## 已移除的编程元素
<a name="net-dg-v4-removed"></a>

从 SDK 的 V4 中删除了许多编程元素，包括枚举值、类型、方法、命名空间等。下面列出了这些内容（如果之前尚未介绍），以及您可以采取哪些可能的措施来适应它们的删除。

### 打开以查看项目
<a name="w2aac25c11c47b5b1"></a>

#### `Amazon.Auth.AccessControlPolicy.ActionIdentifiers` 命名空间
<a name="w2aac25c11c47b5b1b3"></a>

`Amazon.Auth.AccessControlPolicy.ActionIdentifiers`命名空间已被删除。这包括在`IdentityandAccessManagementActionIdentifiers`类中定义的 IAM 操作标识符。应将使用这些操作标识符的代码更改为使用操作名称的字符串值。

有关更多信息，请参阅 [通过 JSON 创建 IAM 托管式策略](iam-policies-create-json.md) [IAM 用户指南](https://docs.aws.amazon.com/IAM/latest/UserGuide/)中的 [JSON 策略概述](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html#access_policies-json)。

#### `ClientConfig` 类
<a name="w2aac25c11c47b5b1b7"></a>

[Amazon.Runtime。 ClientConfig](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TClientConfig.html)类是像 [Amazons](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/S3/TS3Config.html) 3Config 这样的服务客户端配置类的基类。以下编程元素已从该类中删除。
+ `DetermineServiceURL`和`DetermineDnsSuffix`方法已被删除。改用服务客户端`DetermineServiceOperationEndpoint`的方法；例如，[Amazons3Client。 DetermineServiceOperationEndpoint](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/S3/MS3DetermineServiceOperationEndpointWebServiceRequest.html)。
+ 该`ReadEntireResponse`属性已被移除。请改用以下方法之一：
  + 的`LogResponses`财产[AWSConfigs。 LoggingConfig](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Util/TLoggingConfig.html)班级。
  + 客户端配置的`LogResponse`属性；例如 [Amazons](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/S3/TS3Config.html) 3Config。

#### `Amazon.Runtime` 命名空间
<a name="w2aac25c11c47b5b1c11"></a>

[Amazon.Runtime](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/NRuntime.html) 命名空间已更新如下：
+ 过时的`ECSTaskCredentials`类已从命名空间中删除。改用[GenericContainerCredentials](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TGenericContainerCredentials.html)提供商，它还支持 [Amazon EKS Pod 身份](https://docs.aws.amazon.com/eks/latest/userguide/pod-identities.html)。
+ 已从命名空间中移除过时的`StoredProfileAWSCredentials`和`StoredProfileCredentials`类。使用[网络SDKCredentials文件](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TNetSDKCredentialsFile.html)或 [Amazon.Runtime 的[SharedCredentialsFile](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TSharedCredentialsFile.html)类。 CredentialManagement](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/NRuntimeCredentialManagement.html)改为命名空间。
+ 该[SSOAWSCredentials](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TSSOAWSCredentials.html)类的过时`HasCachedAccessTokenAvailable`方法已从命名空间中删除。
+ 过时的`EnvironmentAWSCredentials`类已从命名空间中删除。请改用 [AppConfigAWSCredentials](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TAppConfigAWSCredentials.html) 类。
+ 过时的`StoredProfileFederatedCredentials`类已从命名空间中删除。改用[联合AWSCredentials](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TFederatedAWSCredentials.html)类。
+ 以下过时的类已从命名空间中删除：`EnvironmentVariableAWSEndpointDiscoveryEnabled``ProfileAWSEndpointDiscoveryEnabled`、和`FallbackEndpointDiscoveryEnabledFactory`。
+ 已从[AmazonWebServiceRequest](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TWebServiceRequest.html)类中移除过时的`UseSigV4`属性。请改用 `SignatureVersion` 属性。
+ `Amazon.Runtime.Internal.Util`命名空间中的`ProfileIniFile`类有一个名为的重载方法。`TryGetSection`不支持`out`参数的方法版本`nestedProperties`已从类中删除。
+ `Amazon.Runtime.Internal.Auth`命名空间中的过时`EventBridgeSigner`类已被删除。
+ 已从[WebServiceRequestEventArgs](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TWebServiceRequestEventArgs.html)类中移除过时的`Parameters`字典属性。请改用 `ParameteCollection` 属性。

#### BouncyCastle
<a name="w2aac25c11c47b5b1c13"></a>

的源副本 BouncyCastle 已从 SDK 的 V4 中删除。

#### `StoredProfileSAMLCredentials` 类
<a name="w2aac25c11c47b5b1c15"></a>

[Amazon 中的过时`StoredProfileSAMLCredentials`类。 SecurityToken.SAML](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/SecurityToken/NSecurityTokenSAML.html) 命名空间已被删除。请改用 [Amazon.Runtime](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/NRuntime.html) 命名空间中的[联合AWSCredentials](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TFederatedAWSCredentials.html)类。

#### `AWSSDKUtils` 类
<a name="w2aac25c11c47b5b1c17"></a>

以下方法已从[AWSSDKUtils](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Util/TAWSSDKUtils.html)类中删除：`ResolveResourcePath``ProtectEncodedSlashUrlEncode`、和`ConvertToUnixEpochMilliSeconds`。

#### `ProfileManager` 类
<a name="w2aac25c11c47b5b1c19"></a>

该过时的`ProfileManager`类已从 [Amazon.Util](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Util/NUtil.html) 命名空间中删除。使用 [Amazon.Runtime 中的[网络SDKCredentials文件](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TNetSDKCredentialsFile.html)或[SharedCredentialsFile](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/TSharedCredentialsFile.html)类。 CredentialManagement](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Runtime/NRuntimeCredentialManagement.html)改为命名空间。

#### `AWSConfigs` 类
<a name="w2aac25c11c47b5b1c21"></a>

已从[AWSConfigs](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Amazon/TAWSConfigs.html)类中删除了以下过时的属性：`Logging``ResponseLogging`、和`LogMetrics`。请改用 `LoggingConfig` 属性。

#### `ConditionFactory` 类
<a name="w2aac25c11c47b5b1c23"></a>

具有以下签名的方法已从[ConditionFactory](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Auth/TConditionFactory.html)类中删除:`NewCondition(ConditionFactory.DateComparisonType, DateTime)`. 改用该[NewConditionUtc](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Auth/MConditionFactoryNewConditionUtcConditionFactoryDateComparisonTypeDateTime.html)方法。

#### Amazon CloudFront 实用工具
<a name="w2aac25c11c47b5b1c25"></a>

已删除过时的`Amazon.CloudFront.Util`命名空间和`AmazonCloudFrontUtil`类。

#### AWS IoT
<a name="w2aac25c11c47b5b1c27"></a>

在该[ListPrincipalThingsResponse](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/IoT/TListPrincipalThingsResponse.html)类中，已移除对`NextToken`覆盖的旧版自定义，转而使用分页。

#### AWS Lambda
<a name="w2aac25c11c47b5b1c29"></a>

由于名称混乱，该[AmazonLambdaClient](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/Lambda/TLambdaClient.html)类的以下`Invoke...`方法已被删除。
+ 带有以下签名的V3方法已被删除:`InvokeAsyncResponse InvokeAsync(InvokeAsyncRequest)`. 这是 SDK V3 中的一种同步方法。改用`InvokeResponse Invoke(InvokeRequest)`（用于同步处理）或`Task InvokeAsync(InvokeRequest, CancellationToken)`（用于异步处理）。
+ 带有以下签名的V3方法已被删除:`Task InvokeAsyncAsync(InvokeAsyncRequest, CancellationToken)`. 这是 SDK 的 V3 中的一种异步方法。请改用 `Task InvokeAsync(InvokeRequest, CancellationToken)`。

#### 亚马逊 SageMaker 运行时
<a name="w2aac25c11c47b5b1c31"></a>

该[PayloadPart](https://docs.aws.amazon.com/sdkfornet/v4/apidocs/items/SageMakerRuntime/TPayloadPart.html)类的过时构造函数已被删除。