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 存储桶。不幸的是,它没有在文档中提到这些是必需的,并且默认情况下是按照 .
中所述从磁盘中查找的
我目前正在尝试通过 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 存储桶。不幸的是,它没有在文档中提到这些是必需的,并且默认情况下是按照