我可以使用 Amazon.S3.IO.S3FileInfo 使用适用于 .Net 的 AWS 开发工具包创建公共文件吗

Esc*_*ar5 1 .net amazon-s3 amazon-web-services

我正在使用适用于 .Net 的 AWS 开发工具包在 S3 存储桶中创建文件,我正在使用 S3FileInfo,一切正常,但文件是私有创建的,我似乎无法找到公开创建它们的方法。

Ale*_*tin 5

“默认情况下,您的 Amazon S3 存储桶和对象是私有的。要使用 URL(例如https://s3.amazonaws.com/Bucket/Object)使对象可见,您必须使该对象公开可读。否则,您将需要创建一个签名 URL,其中包含带有身份验证信息的签名。”

您可以通过向访问控制列表添加条目来使对象公开可读。它可以通过类中的PutACL()方法来完成AmazonS3Client

这是工作示例:

static void Main()
{
    // data
    const string accessKeyId = "AKIAIR42XOXH7RXDLVTA";
    const string secretAccessKey = "z4cODfNLYU0YGf7MnXMCXGib2QaxM+inbA1UZw3k";
    const string testBucket = "qwe.SampleBucket";
    const string testFile = "testFile.txt";

    using (var s3Client = new AmazonS3Client(accessKeyId, secretAccessKey, RegionEndpoint.USEast1))
    {
        // creating a file
        var s3FileInfo = new S3FileInfo(s3Client, testBucket, testFile);
        using (var streamWriter = s3FileInfo.CreateText())
        {
            streamWriter.Write("TestContent");
        }

        // setting a permission
        s3Client.PutACL(new PutACLRequest
        {
            BucketName = testBucket,
            Key = testFile,
            CannedACL = S3CannedACL.PublicRead
        });
    }
}
Run Code Online (Sandbox Code Playgroud)