8

如何使用 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"
}
});
}

一切正常,但转码文件是私有的。如何将其设置为公开?

4

3 回答 3

20

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

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

  1. 使用“+ 添加权限链接”。
  2. 选择“Grantee Type”作为“Amazon S3 Group”。
  3. 选择“受让人”作为“所有用户”。
  4. 然后将“访问”选中为“打开/下载”和“查看权限”
  5. 保存更改。

您可以对以下部分中生成的任何缩略图重复此操作:“为缩略图配置 Amazon S3 存储桶”。

于 2013-05-24T09:33:03.810 回答
7

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

“查看权限”选项用于允许任何人读取对象的ACL(访问控制列表),而不是查看对象本身 - 这是由“打开/下载”选项处理的。

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

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

于 2013-12-03T09:53:44.933 回答
0

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

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

您也可以在 Resource 参数中指定文件夹。没有尝试过扩展,但我想这些也应该可以工作。

于 2019-01-17T18:54:41.467 回答