Ошибка AWS / Cognito / IAM с ролью Unauth - PullRequest
0 голосов
/ 27 апреля 2018

Это сообщение было первоначально размещено на форумах разработчиков AWS, но похоже, что толпа AWS находится на SO, поэтому я дублирую его здесь.

Привет, я абсолютный новичок в AWS, поэтому постараюсь быть максимально ясным.

Я пытаюсь использовать JS API, чтобы позволить любому пользователю на моем сайте загружать видео на S3 (это хорошо работает), а затем преобразовывать загруженные файлы в другие форматы (с помощью Elastic Transcoder).

Я настроил:

  • входные (не публичные) и выходные (публичные) сегменты на S3. На вход поступает пользовательское видео, эта часть работает:)
  • Трубопровод Эластичный Транскодер (video-converter-test-pipeline-01)
  • федеративное удостоверение на Cognito (video_converter_test_02)
  • соответствие ролей Auth и Unauth в IAM (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: предполагаемая роль / Cognito_video_converter_test_02Unauth_Role / CognitoIdentityCredentials не авторизован для выполнения :astictranscoder: CreateJob на ресурсе: arn: aws :astictranscoder: eu-west-011: 7: eu-west-1 01 / 1522763370759-mmowmr

Я пытался использовать IAM Policy Simulator, чтобы понять, в чем дело, но при этом с теми же параметрами я получаю «разрешено» ...

Я уверен, что я делаю что-то не так, но не могу понять, что. Я перепробовал много вещей, но ничего не получалось. Любая помощь будет оценена :) 1052 *

Заранее спасибо, пока!

1 Ответ

0 голосов
/ 27 июня 2018

Я связался со службой поддержки AWS, и решение, как представляется, заключается в том, чтобы включить их в политику IAM:

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