我有本地堆栈(https://github.com/localstack/localstack https://github.com/localstack/localstack)正在运行,并且能够使用 aws s3 cli 将文件上传到其中。
我想要做的是将 .NET AWS SDK 与 localstack 结合使用。我想要以下代码将文件上传到 localstack 中:
using (var tfu = new TransferUtility())
{
await tfu.UploadAsync(new TransferUtilityUploadRequest
{
Key = key,
BucketName = bucketName,
ContentType = document.ContentType,
Headers = { ["Content-Disposition"] = "attachment; filename=\"test.txt\"" },
InputStream = stream
});
}
我的问题是我不知道如何设置端点以便 SDK 使用 localstack 而不是 aws。显然你可以设置AWSEndpointDefinition
在 AWS SDK 文档中提到的 appSettings.config 中,例如:
<add key="AWSEndpointDefinition" value="C:\Dev\localstack\endpoints.json"/>
但是我不知道这个 endpoints.json 配置应该是什么样子。我尝试使用这个文件:
https://raw.githubusercontent.com/aws/aws-sdk-net/master/sdk/src/Core/endpoints.json https://raw.githubusercontent.com/aws/aws-sdk-net/master/sdk/src/Core/endpoints.json
当我这样做时,一旦我新了一个TransferUtility
类我得到一个空引用异常 - 这是在我将任何内容指向我的本地堆栈设置之前。
AWS ASK 的版本是 3.3.0。
另一件需要注意的事情是,在文档中的某些地方,暗示配置应该是 xml 文件而不是 json,但是,当我尝试使用 xml 文件时,我在更新时会遇到不同的异常TransferUtility
: '输入字符串中无效字符 '