具有Unauth角色的AWS / Cognito / IAM错误

时间:2018-04-27 09:40:12

标签: amazon-web-services amazon-s3 amazon-cognito amazon-iam amazon-elastic-transcoder

此消息最初发布在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_RoleCognito_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:assume-role / Cognito_video_converter_test_02Unauth_Role / CognitoIdentityCredentials无权执行:elastictranscoder:资源上的CreateJob:arn:aws:elastictranscoder:eu-west-1:529773801731:pipeline / 1522763370759-mmowmr

我尝试使用IAM策略模拟器来理解错误,但是当使用相同的参数时,我得到“允许”......

我确定我在这里做错了什么,却无法理解。我尝试了很多东西,但没有任何效果。任何帮助将不胜感激:)

提前致谢,再见!

1 个答案:

答案 0 :(得分:0)

我联系了AWS开发人员支持,解决方案似乎是将这些内容包含在IAM策略中:

{
    "Sid": "VisualEditor3",
    "Effect": "Allow",
    "Action": "cognito-sync:*",
    "Resource": "*"
},
{
    "Sid": "VisualEditor3",
    "Effect": "Allow",
    "Action": "mobileanalytics:PutEvents",
    "Resource": "*"
}