【发布时间】:2018-10-08 03:10:51
【问题描述】:
这条消息最初是在 AWS 开发者论坛上发布的,但似乎 AWS 人群在 SO,所以我在这里复制它。
您好,我是 AWS 的绝对初学者,所以我会尽量说清楚。
我正在尝试使用 JS API 来允许我网站上的任何用户将视频上传到 S3(效果很好),然后将上传的文件转换为其他格式(使用 Elastic Transcoder)。
我已经设置好了:
- S3 上的输入(非公共)和输出(公共)存储桶。输入接收用户提交的视频,这部分工作:)
- 一个 Elastic Transcoder 管道 (
video-converter-test-pipeline-01) - Cognito 上的联合身份 (
video_converter_test_02) - 在 IAM 上匹配 Auth 和 Unauth 角色(
Cognito_video_converter_test_02Auth_Role和Cognito_video_converter_test_02Unauth_Role)
管道具有以下权限摘要:“已授予以下 IAM 角色访问此管道的权限:arn:aws:iam::529773801731:role/Elastic_Transcoder_Default_Role”
Cognito_video_converter_test_02Unauth_Role 有两个附加策略:
oneClick_Cognito_video_converter_test_02Unauth_Role_1522923667877-
video-converter-policy,我自己做的。
这是它的 JSON 表示:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "elastictranscoder:CreateJob",
"Resource": [
"arn:aws:elastictranscoder:*:*:pipeline/*",
"arn:aws:elastictranscoder:*:*:preset/*"
]
}
]
}
以下是我尝试使用 JS API 创建转码作业的方法:
function createJob(uploadedFileKey) {
console.log("Create job", uploadedFileKey);
var params = {
PipelineId: PipelineId,
Input: {
Key: uploadedFileKey
},
Output: {
PresetId: PresetId
}
};
elastictranscoder.createJob(params, function (err, data) {
if (err) console.error(err, err.stack); // an error occurred
else console.log(data); // successful response
});
}
执行时出现如下错误:
错误:用户:arn:aws:sts::529773801731:assumed-role/Cognito_video_converter_test_02Unauth_Role/CognitoIdentityCredentials 无权执行:elastictranscoder:CreateJob on resource:arn:aws:elastictranscoder:eu-west-1:529773801731:pipeline /1522763370759-mmowmr
我尝试使用 IAM 策略模拟器来了解问题所在,但使用相同的参数这样做时,我得到“允许”...
我确定我在这里做错了什么,但不明白是什么。我尝试了很多东西,但没有任何效果。任何帮助将不胜感激:)
提前致谢,再见!
【问题讨论】:
标签: amazon-web-services amazon-s3 amazon-cognito amazon-iam amazon-elastic-transcoder