Я следовал руководству от 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?