Кто-нибудь успешно использовал AWS SDK для создания подписанных URL-адресов для объектов в ведре S3, которые также работают над CloudFront? Я использую JavaScript AWS SDK, и очень просто создать подписанные URL-адреса через ссылки S3. Я просто создал личное ведро и использовал следующий код для создания URL-адреса:
var AWS = require('aws-sdk')
, s3 = new AWS.S3()
, params = {Bucket: 'my-bucket', Key: 'path/to/key', Expiration: 20}
s3.getSignedUrl('getObject', params, function (err, url) {
console.log('Signed URL: ' + url)
})
Это отлично работает, но я также хочу показать URL-адрес CloudFront для моих пользователей, чтобы они могли увеличить скорость загрузки с помощью CDN. Я установил дистрибутив CloudFront, который изменил политику ведра, чтобы разрешить доступ. Однако после этого можно было получить доступ к любому файлу через URL CloudFront, и Amazon, похоже, проигнорировала подпись в моей ссылке. Прочитав еще немного об этом, я увидел, что люди создают файл .pem, чтобы получить подписанные URL-адреса, работающие с CloudFront, но почему это не нужно для S3? Похоже, что метод getSignedUrl просто выполняет подписку с помощью секретного ключа AWS и ключа доступа AWS. Кто-нибудь получил настройку, подобную этой работе раньше?
Update: После дальнейших исследований выяснилось, что CloudFront обрабатывает сигнатуры URL, полностью отличные от S3 [link]. Тем не менее, я все еще не понимаю, как создать подписанный URL CloudFront с помощью Javascript.