3

我在 c# 中创建了一个应用程序,我需要将一些数据放在 S3 存储桶上,并调用 AWS sagemaker API。由于两个引用中都存在相同的 Amazon.RegionEndPoint 类,因此它给出了以下错误。

“RegionEndpoint”类型存在于“AWSSDK.Core, Version=3.3.0.0, Culture=neutral, PublicKeyToken=885c28607f98e604”和“AWSSDK, Version=2.3.55.2”中

基本上我正在尝试按照我使用过的代码在 AWS S3 上上传文件。

AmazonS3Client s3Client = new AmazonS3Client(_AWS_ACCESS_KEY_ID, _AWS_SECRETE_ACCESS_KEY, Amazon.RegionEndpoint.USEast2);
 PutObjectRequest request = new PutObjectRequest
  {
    BucketName = _BucketName,
    Key = i_sDestFileName,
    FilePath = i_sSourceFilePath,
    ContentType = "text/plain"
  };
  s3Client.PutObject(request);

它在单个应用程序上运行良好,但是当我将代码与 Sagemaker API 调用集成时,Amazon.RegionEndpoint.USEast2 发生冲突。

4

3 回答 3

2

不要将AWSSDKpackage 与AWSSDK.Core. 使用包管理器将其删除并添加特定于服务的包,例如,AWSSDK.S3AWSSDK.EC2.

AWSSDK.Core是一个具有 .NET 核心支持的新版本,您需要安装特定于服务的包,而旧版本AWSSDK是适用于所有服务的单个包。下面是AWSSDK来自 nuget 的旧包的描述:

这是适用于 .NET 的 AWS 开发工具包的上一代版本 2。适用于 .NET 的 AWS 开发工具包的新版本 3 对每项服务使用单独的包。例如,Amazon S3 位于 AWSSDK.S3 包中,Amazon SQS 位于 AWSSDK.SQS 中,Amazon DynamnoDB 位于 AWSSDK.DynamoDBv2 中。

一旦您删除旧的并使用特定的包,冲突将得到解决。但是,请注意,可能还有其他错误,因为结构略有变化,但很明显/很容易修复。从积极的方面来说,您可以获得异步版本。;)

--

// 注意到上面@Gerry-coll 关于主要问题的评论,也提到了这一点。为即使现在遇到这个问题的其他人留下详细的答案。

于 2020-06-10T12:36:34.003 回答
0

看起来您安装了两个不同版本的 AWS 开发工具包,一个比另一个旧得多。我会看看这样的问题,例如错误 CS0433“A.dll 和 B.dll 中已经存在类型'X'”来自哪里?寻求解决冲突的建议。

于 2018-07-11T00:23:38.623 回答
0

考虑将您的区域详细信息移动到配置文件并从那里访问它。https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/net-dg-region-selection.html 在此处输入图像描述

于 2020-11-11T11:32:55.017 回答