如何设置公共权限,Elastic Transcoder Amazon SDK

时间:2013-03-22 15:15:55

标签: c# asp.net amazon-s3

如何使用Amazon.ElasticTranscoder.Model(.NET,C#)公开所有文件。 这是我的代码:

 public static void CreateJobRequest(string videoPath, string bucketName)
{

string accsessKey = CloudSettings.AccessKeyID;
string secretKey = CloudSettings.SecreteKey;
var etsClient = new AmazonElasticTranscoderClient(accsessKey,secretKey, RegionEndpoint.USEast1);
var notifications = new Notifications()
{
Completed = "arn:aws:sns:us-east-1:XXXXXXXXXXXX:Transcode",
Error = "arn:aws:sns:us-east-1:XXXXXXXXXXXX:Transcode",
Progressing = "arn:aws:sns:us-east-1:XXXXXXXXXXXX:Transcode",
Warning = "arn:aws:sns:us-east-1:XXXXXXXXXXXX:Transcode"
};

var pipeline=etsClient.CreatePipeline(new CreatePipelineRequest()
{
Name = "MyFolder",
InputBucket = bucketName,
OutputBucket = bucketName,
Notifications = notifications,
Role = "arn:aws:iam::XXXXXXXXXXXX:role/Elastic_Transcoder_Default_Role"

}).CreatePipelineResult.Pipeline;
etsClient.CreateJob(new CreateJobRequest()
{
PipelineId = pipeline.Id,
Input = new JobInput()
{
AspectRatio = "auto",
Container = "mp4",
FrameRate = "auto",
Interlaced = "auto",
Resolution = "auto",
Key = videoPath

},
Output = new CreateJobOutput()
{
ThumbnailPattern = videoPath+"videoName{resolution}_{count}",
Rotate = "0",
PresetId = "1351620000000-000020",
Key = videoPath+"newFileName.mp4"
}
});

}

一切都很完美,但转码后的文件是私密的。我如何将其设置为公开?

3 个答案:

答案 0 :(得分:19)

我今天刚遇到这个问题,解决问题的方法如下:

在“为转码文件和播放列表配置Amazon S3存储桶”下的管道中

  1. 使用“+添加权限链接”。
  2. 选择“Grantee Type”作为“Amazon S3 Group”。
  3. 选择“受赠人”为“所有用户”。
  4. 然后选中“访问”作为“打开/下载”和“查看权限”
  5. 保存更改。
  6. 您可以对以下部分中生成的任何缩略图重复此操作:“为缩略图配置Amazon S3存储桶”。

答案 1 :(得分:7)

只是为了添加@timstermatic答案 - 我只需要授予“打开/下载”权限即可公开对象。

“查看权限”选项用于允许任何人阅读对象的ACL (Access Control List),而不是查看对象本身 - 由“打开/下载”选项处理。

与AWS术语一样,它很容易被误解 - 它不是'查看对象的权限',它是'查看对象的权限'。

(抱歉,我无法将其添加为评论,我没有足够的代表。)

答案 2 :(得分:0)

通常,政策冲突会导致这种情况。解决此问题的更简单方法是直接在“权限”选项卡的“存储桶策略”部分中,在存储桶上设置公共读取权限。这段代码可能会有所帮助。

{
    "Version": "2008-10-17",
    "Statement": [
        {
            "Sid": "AllowPublicRead",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::<BUCKET_NAME>/*"
        }
    ]
}

您也可以在Resource参数中指定文件夹。还没有尝试扩展,但是我想那些扩展也应该起作用。