【发布时间】:2020-12-15 15:14:01
【问题描述】:
我正在尝试将文件上传到 S3 存储桶,但出现空引用异常
await fileTransferUtility.UploadAsync(filePath, _bucket)
public class FileUploadService : IFileUploadService
{
private readonly string _bucket;
public FileUploadService()
{
_bucket = ConfigurationManager.AppSettings["S3Bucket"];
}
public async Task UploadFile(string filePath, CognitoAWSCredentials cred)
{
IAmazonS3 client = new AmazonS3Client(cred);
TransferUtility fileTransferUtility = new TransferUtility(client);
await fileTransferUtility.UploadAsync(filePath, _bucket);
}
}
这是异常堆栈跟踪的相关部分:
在 Amazon.S3.Util.BucketRegionDetector.GetUsEast1ClientFromCredentials(ImmutableCredentials 凭据)在 Amazon.S3.Util.BucketRegionDetector.GetHeadBucketPreSignedUrl(字符串 bucketName,ImmutableCredentials 凭证)在 Amazon.S3.Util.BucketRegionDetector.d__13.MoveNext() 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务 任务)在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)在 Amazon.S3.Util.BucketRegionDetector.d__12.MoveNext() ...
不知道我做错了什么,因为我是 AWS 的新手。我通过以下方式检索CognitoAWSCredentials:
string clientId = ConfigurationManager.AppSettings["CLIENT_ID"];
string poolId = ConfigurationManager.AppSettings["USERPOOL_ID"];
RegionEndpoint region = RegionEndpoint.EnumerableAllRegions.First(q => q.SystemName == "us-east-1");
provider = new AmazonCognitoIdentityProviderClient(new AnonymousAWSCredentials(), region);
CognitoUserPool userPool = new CognitoUserPool(poolId, clientId, provider);
CognitoUser user = new CognitoUser(username, clientId, userPool, provider);
AuthFlowResponse context = await user.StartWithSrpAuthAsync(new InitiateSrpAuthRequest()
{
Password = password
});
CognitoAWSCredentials cred = user.GetCognitoAWSCredentials(poolId, region);
【问题讨论】:
标签: c# amazon-web-services amazon-s3 amazon-cognito