C# Amazon S3无法在C中找到凭据#

C# Amazon S3无法在C中找到凭据#,c#,amazon-web-services,amazon-s3,C#,Amazon Web Services,Amazon S3,我正在尝试将一个图像文件上载到aws s3的storage中,并取回该图像URL。我正在使用密钥和访问密钥创建凭据。但当程序运行时,它会说 “找不到凭据” 这是我使用的代码 public string sendMyFileToS3(string from,string to, string bucketName, string fileName) { BasicAWSCredentials awsCreds = new BasicAWSCredentials(bu

我正在尝试将一个图像文件上载到aws s3的
storage中,并取回该图像
URL
。我正在使用密钥和访问密钥创建凭据。但当程序运行时,它会说

“找不到凭据”

这是我使用的代码

    public string sendMyFileToS3(string from,string to, string bucketName, string fileName)
    {
        BasicAWSCredentials awsCreds = new BasicAWSCredentials(bucketName, fileName);
        AmazonS3Client client = new AmazonS3Client(awsCreds);
        TransferUtility utility = new TransferUtility(client);
        TransferUtilityUploadRequest request = new TransferUtilityUploadRequest();
        request.BucketName = bucketName;
        request.Key = fileName; 
        request.FilePath = from; 
        utility.Upload(request); 
        string urlString = "";
        GetPreSignedUrlRequest request1 = new GetPreSignedUrlRequest
        {
            BucketName = bucketName,
            Key = fileName,
            Expires = DateTime.Now.AddYears(2)

        };
        urlString = client.GetPreSignedURL(request1);
        Console.WriteLine(urlString);

        File.Move(from, to);

        return urlString ;
    }

我想猜测一下,您的应用程序正在使用的凭据与您可能已安装到开发人员或测试机器上的其他凭据(即凭据文件或app.config)之间存在冲突

我会检查并确保您只使用一种方法向程序提供这些凭据

此链接显示SDK将查找凭据的优先级:


要创建S3客户端,您需要提供凭据、区域和端点:

AWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey);
AmazonS3Config config = new AmazonS3Config();
config.ServiceURL = "s3.amazonaws.com";
config.RegionEndpoint = Amazon.RegionEndpoint.GetBySystemName("us-east-1");
client = new AmazonS3Client(credentials, config);
列出了可能的区域,这取决于创建bucket的位置,默认值为
us-east-1

虽然可能的端点是这三个:

  • s3.amazonaws.com
  • s3-accelerate.amazonaws.com
  • s3-accelerate.dualstack.amazonaws.com

第一个是标准的,因为其他的需要你按照上面解释的那样配置你的bucket。

哪行代码产生了错误?您的服务在哪个地区?如果您有该地区,则ServicURL是可选的