Как передать учетные данные пользователя для доступа к корзине s3 после аутентификации пользователя cognito? - PullRequest
0 голосов
/ 28 февраля 2019

Я использую javascript sdk в узле env и хочу иметь возможность назначить «ключ» / папку для каждого пользователя.Я могу аутентифицироваться и получить токен с Cognito.Однако со следующими правилами я получаю отказ в доступе.Как на самом деле передать учетные данные для доступа к объекту пользователей?

Политика в IAM следующая:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": [
                "s3:Get*",
                "s3:List*",
                "s3:Put*"
            ],
            "Resource": [
                "arn:aws:s3:::myBucket",
                "arn:aws:s3:::myBucket/*"
            ],
            "Condition": {
                "StringLike": {
                    "s3:prefix": [
                        "${aws:username}/*"
                    ]
                }
            }
        }
    ]
}

1 Ответ

0 голосов
/ 20 марта 2019

Ваша политика неверна.

Вот как это исправить. После настройки cognito в консоли AWS вы получите две роли: auth cognito role и unauth.Перейдите к роли авторизации в IAM и ресурсе, чтобы выглядеть примерно так ...

"Ресурс": ["arn: aws: s3 ::: mybucket / Users / $ {cognito-identity.amazonaws.com: sub} ",]

Идентификатор Cognito: sub part - это то, что связывает папку с аутентифицированным пользователем.

Затем в узле, когда вы кладете или получаете, просто используйте тот же ключ, но там, где он находится - $ {cognito-identity.amazonaws.com:sub передает идентификатор пользователя.Я не уверен, как получить идентификационные данные с консоли AWS, но вы определенно можете получить его, используя cli.Просто зайдите в раздел cognito api, чтобы узнать, как получить идентификатор.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...