【发布时间】:2022-01-02 03:23:38
【问题描述】:
我想知道为什么我能够列出甚至删除 s3 存储桶中的对象,尽管公共访问被阻止并且只有存储桶所有者拥有存储桶的列表/写入权限。
这就是我在代码中所做的:
using (var s3Client = new AmazonS3Client(Amazon.RegionEndpoint.USWest2))
{
ListObjectsV2Request request = new ListObjectsV2Request
{
BucketName = bucketName,
MaxKeys = 10
};
ListObjectsV2Response response;
do
{
response = await s3Client.ListObjectsV2Async(request);
foreach (Amazon.S3.Model.S3Object obj in response.S3Objects)
{
Console.WriteLine(obj.Key);
}
request.ContinuationToken = response.NextContinuationToken;
} while (response.IsTruncated);
DeleteObjectResponse resp = await s3Client.DeleteObjectAsync(new Amazon.S3.Model.DeleteObjectRequest() { BucketName = bucketName, Key = "dummykey" });
知道我做错了什么吗? acl 不应该阻止我列出任何内容吗?
【问题讨论】:
-
您的连接字符串是否包含凭据?
-
正如文档所说的构造函数 - “使用从应用程序的默认配置加载的凭证构造 AmazonS3Client,如果从 EC2 实例上的实例配置文件服务不成功。”
-
我在创建 amazons3client-object 时没有使用任何凭据。
-
@stuartd:这是否意味着使用安装在 Visual Studio 中的 AWS-Explorer 的凭证?
-
@harryh100 我不能说。但是,如果您正在访问对象,几乎可以肯定它是从 somewhere 获取它们的。
标签: c# amazon-web-services amazon-s3