AWS C# 无法弄清楚如何将 zip 流上传到 S3 存储桶

AWS C# cant figure out how to upload zip stream to S3 bucket

我目前正在尝试通过 C# AWS Lambda 函数将第 3 方 API 数据放入 S3 存储桶。来自第 3 方的数据来自一个 zip 文件,我已经能够在本地很好地保存它,所以我假设它正在按我的需要工作。下一步是通过流将此数据上传到 S3 存储桶,而不是在本地保存文件并上传等。

public static async void PutObjectAsync()
    {
        try
        {
            using (var client = new AmazonS3Client(Amazon.RegionEndpoint.EUWest2))
            {

                var ms = new MemoryStream();
                GetStream().CopyTo(ms);    //GetStream() returns the api data stream (Stream object).

                var request = new PutObjectRequest()
                {
                    BucketName = "*BUCKETNAME*",
                    Key = "data.zip",
                    InputStream = ms

                };

                var response = await client.PutObjectAsync(request);                  

            }
        }
        catch (AmazonS3Exception e)
        {
            Console.WriteLine(
                    "Error encountered ***. Message:'{0}' when writing an object"
                    , e.Message);
        }
        catch (Exception e)
        {
            Console.WriteLine(
                "Unknown encountered on server. Message:'{0}' when writing an object"
                , e.Message);
        }

        Console.ReadKey();
    }
 }

我在调用 PutObjectAsync 函数时收到对象引用未设置为对象引用错误。我已经检查了请求,内存流似乎已按预期从 CopyTo 方法加载。我知道存储桶对超过 5MB 的文件有问题,但 zip 文件比 5MB 小很多。

这是我的第一个 lambda 函数,欢迎任何建议。提前致谢。

正如评论中所诊断的那样,AWS 需要凭据才能访问 S3 存储桶。不幸的是,它没有在文档中提到这些是必需的,并且默认情况下是按照 .

中所述从磁盘中查找的