gpt4 book ai didi

java - aws cloudfront 使用私有(private)流设置并使用 Java 生成过期链接

转载 作者:太空宇宙 更新时间:2023-11-04 08:19:17 25 4
gpt4 key购买 nike

我正在尝试使用 amazon s3 和 cloudfront 设置安全流。我已完成以下步骤,但总是收到错误消息

"stream not found".

  1. 设置 s3 存储桶并上传 mp3 文件(file.mp3)进行测试。
  2. 在 cloudfront 中创建源访问策略,获取 Id 和 S3 canonicle 使用的 Id。
  3. 赋予 S3 canonicle 用户 ID 对 s3 存储桶的读取权限。 (为了测试,我也向每个人授予了读取权限。)
  4. 为 Cloudfront 创建了 RSA 公钥/私钥。
  5. 在 Cloudfront 中创建流分配,以之前的 s3 存储桶为源,以可信签名者为自身。此请求的结果显示具有公钥 ID 的自信任签名者。
  6. 使用私钥生成签名网址。
  7. 创建了 html 文件以使用 jwplayer 显示此 mp3。

下面是我用来创建原始签名网址的代码

    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);

这给出了签名的网址。然后我使用了以下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. 它不适用于 mp3 文件(已通过我上传的一个文件进行检查),但适用于 mp4 视频。
  2. 假设我为不存在的文件生成了签名链接并尝试加载视频。当然我会得到错误。此后,即使我上传同名文件,我仍然继续收到错误。

关于java - aws cloudfront 使用私有(private)流设置并使用 Java 生成过期链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9873273/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com