Лямбда-доступ в AWS запрещен по предварительно подписанному URL-адресу CloudFront - PullRequest
0 голосов
/ 28 октября 2018

Я следовал руководству от https://docs.aws.amazon.com/solutions/latest/serverless-image-handler/deployment.html, чтобы создать новую лямбда-функцию поверх моего дистрибутива CloudFront.Однако у меня есть дополнительное требование использовать только предварительно подписанные URL-адреса .Идея заключается в том, что мой сервис генерирует CloudFront pre-signed URL и передает этот URL-адрес клиенту для доступа к нему.Однако клиент должен иметь возможность вызывать лямбда-функцию для этого URL.

Например, должно быть возможным следующее:

Все это работает по умолчанию, но если для Да в параметре *1022* Да *1023* в параметре *1022* Да *1023* установить параметр Ограничить доступ для просмотра (Использовать подписанные URL-адреса или подписанные файлы cookie), то внезапно любой вызов моей функции Lambda вернет Доступ.Отказано ответ.

Политика IAM роли, которую использует моя лямбда-функция

    {
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents"
            ],
            "Resource": "arn:aws:logs:*:*:*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject"
            ],
            "Resource": "arn:aws:s3:::myBucket/*"
        }
    ]
}

Bucket Policy

    {
    "Version": "2008-10-17",
    "Id": "PolicyForCloudFrontPrivateContent",
    "Statement": [
        {
            "Sid": "1",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity EN2PJ6YY7V8EE"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::myBucket/*"
        },
        {
            "Sid": "2",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity E2EM2OLBKAK85T"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::myBucket/*"
        }
    ]
}

Как я могу использовать предварительно назначенные URL-адреса с Lambda?

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