aws cloudfront Настройка приватной потоковой передачи и генерация ссылок с использованием Java - PullRequest
1 голос
/ 26 марта 2012

Я пытаюсь настроить безопасную потоковую передачу с amazon s3 и cloudfront. Я сделал следующие шаги, и я всегда получаю сообщение об ошибке

"поток не найден".

  1. Настройка корзины s3 и загруженного файла mp3 (file.mp3) для тестирования.
  2. Создана исходная политика доступа в облачном фронте, получены Id и S3 canonicle Используемый идентификатор.
  3. При условии, что S3 canonicle User Id имеет права на чтение для корзины s3. (Для тестирования я также дал разрешение на чтение всем).
  4. Создан открытый / закрытый ключ RSA для облачного фронта.
  5. Создано потоковое распространение в облачном фронте с предыдущей корзиной s3 в качестве источника и Trusted Signer в качестве собственного. Результатом этого запроса является подписчик, которому можно доверять, с открытым ключом Id.
  6. Сгенерированный подписанный URL с использованием закрытого ключа.
  7. Создан html-файл для показа этого mp3 с использованием jwplayer.

Ниже приведен код, который я использовал для создания исходного URL-адреса со знаком

    Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
    String distributionDomain = "sbngg4fbfkiq2.cloudfront.net";
    String privateKeyFilePath = "src/s3access/pk-APKAJRHSQBGT5CW7P2CA.der";
    String s3ObjectKey = "file.mp3";
    // Convert your DER file into a byte array.
    byte[] derPrivateKey = ServiceUtils.readInputStreamToBytes(new
            FileInputStream(privateKeyFilePath));
    String signedUrlCanned = CloudFrontService.signUrlCanned(
       s3ObjectKey, // Resource URL or Path
        "APKAJRHSQBGT5CW7P2CA.",     // Certificate identifier, 
                       // an active trusted signer for the distribution
        derPrivateKey, // DER Private key data
        new Date(112,3,29) // DateLessThan
        );
    System.out.println(signedUrlCanned);

Это дает подписанный URL. Тогда я использовал следующий HTML-файл.

<html><head>
<script type='text/javascript' src='jwplayer.js'></script>
</head><body>
<div id="container">Loading the player ...</div>

<script type="text/javascript">

  jwplayer('container').setup({
    'id': 'playerID',
    'width': '352',
    'height': '240',
'provider': 'rtmp',
    'streamer': 'rtmp://sbngg4fbfkiq2.cloudfront.net/cfx/st',
    'file': 
    'file.mp3?Expires=1335637800&Signature=asSUSIbGYZP9IXnmjWIKgXMP2DCCA1B-x0mQtsQbUBFWdbKzlU~NnId8VH8T5ww8I1nbZKHWoLpGr679~QoDSMScKpVxVbyYVjQ0kn-JejzSkM6~ZEC6r8nArEdrT9R-M6EjR~IBkuPD-0qW2OUk1MBC4oiNeytIolG6IrSTGOU_&Key-Pair-Id=APKAJRHSQBGT5CW7P2CA',
'modes': [
    {
        type: 'flash', src: 'player.swf'
    } 
]
 });

</script>

</body>
</html>

Отображает видеокадр. Нажав на кнопку воспроизведения, попытался загрузить поток, но через пару секунд он говорит:

 Stream not foundfile.mp3?Expires=1335637800&Signature=asSUSIbGYZP9IXnmjWIKgXMP2DCCA1B-x0mQtsQbUBFWdbKzlU~NnId8VH8T5ww8I1nbZKHWoLpGr679~QoDSMScKpVxVbyYVjQ0kn-JejzSkM6~ZEC6r8nArEdrT9R-M6EjR~IBkuPD-0qW2OUk1MBC4oiNeytIolG6IrSTGOU_&Key-Pair-Id=APKAJRHSQBGT5CW7P2CA

Пожалуйста, помогите мне настроить это. Дайте мне знать, если я что-то упустил.

1 Ответ

1 голос
/ 27 марта 2012

Я работал с такой же настройкой, как я упоминал выше, но мало случаев

  1. Он не работает для файлов mp3 (проверено с одним загруженным файлом), но работает для видео mp4.
  2. Предположим, я сгенерировал подписанную ссылку для файла, которого нет, и попытался загрузить видео. Конечно, я получу ошибку. После этого я даже загружаю файл с тем же именем, но все равно продолжаю получать сообщение об ошибке.
...