AWS S3 GetObjectAsync挂起/超时

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AWS S3 GetObjectAsync挂起/超时相关的知识,希望对你有一定的参考价值。

注意:回答我自己的问题以帮助其他人。

我正在关注official documentation从S3存储桶中获取文本文件并挂起:

static async Task ReadObjectDataAsync()
{
    string responseBody = "";
    try
    {
        GetObjectRequest request = new GetObjectRequest
        {
            BucketName = bucketName,
            Key = keyName
        };
        //THIS NEXT LINE HANGS!!!!
        using (GetObjectResponse response = await client.GetObjectAsync(request)) 
        using (Stream responseStream = response.ResponseStream)
        using (StreamReader reader = new StreamReader(responseStream))
        {
            string title = response.Metadata["x-amz-meta-title"];

我如何让它工作?

答案

这个问题在这里有解决方案https://github.com/aws/aws-sdk-net/issues/152

对我来说问题是我从WinForm应用程序运行此示例。

Winform apps Main()方法标有Single Threaded Apartment属性[STAThread]。这会导致Async失败。

要么删除[STAThread]属性,要么在没有它的情况下制作另一个Main()方法。

以上是关于AWS S3 GetObjectAsync挂起/超时的主要内容,如果未能解决你的问题,请参考以下文章

多个 AWS Lambda 中的 AWS::S3::Bucket LambdaConfiguration

使用 aws.s3 包从 AWS S3 一次读取多个 CSV 文件对象

AWS S3

AWS Redshift:出现“and not true”子句时删除挂起

AWS Lambda Snowflake Python 连接器在尝试连接时挂起

开发板S3C2440挂起NFS步骤