我正在尝试将图像文件上传到aws s3
存储并获取该图像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 ;
}
要创建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);
可能的区域列出了here,并且取决于您创建存储桶的位置是us-east-1
的默认值。
虽然可能的端点是这三个:
第一个是标准的,因为其他人需要你配置你的桶,就像它解释here。
我将猜测并说您的应用程序使用的凭据与您可能已安装到开发或测试计算机上的其他凭据之间存在冲突,即在凭证文件或app.config中。
我会检查并确保您只使用一种方法将这些凭据提供给该程序。
这个链接显示了SDK查找凭据的优先级:
http://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/credentials.html