Подписанный URL-адрес AWS Cloudfront с неподписанными параметрами запроса

.equals() сравнивает данные в классе (при условии, что функция реализована). == сравнивает местоположения указателя (расположение объекта в памяти).

== возвращает true, если оба объекта (NOT TALKING OF PRIMITIVES) указывают на экземпляр SAME. .equals() возвращает true, если два объекта содержат одни и те же данные equals() Versus == в Java

Это может вам помочь.

1
задан Bryce Sampson 10 March 2019 в 03:17
поделиться

1 ответ

Sovled! Спасибо @Michael - sqlbot. Используя пользовательскую политику, я могу вернуть любые размеры изображения, которые я хочу, включая исходный размер, используя один URL-адрес со знаком. Если у кого-то еще есть такая проблема, вот как я это сделал:

Мой php-код для генерации подписанного URL:

public static function signedImageUrl($resource)
{

    // Build Url
    $url = self::CLOUDFRONT_BASE . ltrim($resource, '/') . '?w=*&h=*';

    // Create a CloudFront Client
    $client = new CloudFrontClient([
        'version' => '2014-11-06',
        'region' => 'us-east-2'
    ]);

    // Set up parameter values for the resource
    $expires = time() + 300;

    // Policy
    $policy = '{ 
    "Statement": [
        { 
            "Resource":"' . $url . '",
            "Condition":{ 
                "DateLessThan":{"AWS:EpochTime":' . $expires . '}
            } 
        }
    ] 
    }';

    // Create a signed URL for the resource using the canned policy
    $signedUrlCannedPolicy = $client->getSignedUrl([
        'url' => $url,
        'policy' => $policy,
        'private_key' => env('AWS_CLOUDFRONT_PRIVATE_KEY_PATH'),
        'key_pair_id' => env('AWS_CLOUDFRONT_KEY_PAIR_ID')
    ]);

    return $signedUrlCannedPolicy;
}

Где CLOUDFRONT_BASE - это домен .cloudfront.net / для моего облачного фронта. дистрибутив, а $ resource - это имя файла (например, my_profile_image.png)

На этом этапе я получаю свое подписанное изображение и затем могу изменить параметры запроса w и h на клиенте в соответствии с содержанием моего сердца. Моя лямбда-функция запускается по событию Cloudfront ViewerRequest и будет указывать Cloudfront загружать либо изображение с указанными размерами, либо загружать исходное изображение, если w и h оба *.

0
ответ дан Bryce Sampson 10 March 2019 в 03:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: