如何使用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"
}
});
}
一切都很完美,但转码后的文件是私密的。我如何将其设置为公开?
答案 0 :(得分:19)
我今天刚遇到这个问题,解决问题的方法如下:
在“为转码文件和播放列表配置Amazon S3存储桶”下的管道中
您可以对以下部分中生成的任何缩略图重复此操作:“为缩略图配置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参数中指定文件夹。还没有尝试扩展,但是我想那些扩展也应该起作用。