栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

通过AWS开发工具包创建签名的S3和Cloudfront URL

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

通过AWS开发工具包创建签名的S3和Cloudfront URL

更新: 我将签名功能从下面的示例代码移到了NPM上的aws-cloudfront-
sign
软件包中。这样,您只需要此程序包并致电即可

getSignedUrl()


经过进一步的研究,我找到了一种解决方案,该解决方案是此答案与我在Boto库中找到的方法之间的组合。确实,S3URL签名与CloudFrontURL签名的处理方式不同。如果您只需要签名S3链接,那么我最初的问题中的示例代码将对您很好。但是,如果您要生成利用CloudFront发行版的签名URL,它将变得更加复杂。这是因为AWSSDK当前不支持CloudFrontURL签名,因此您必须自己创建签名。如果您还需要执行此操作,请执行以下基本步骤。我假设您已经有一个S3存储桶设置:

配置CloudFront

  1. 创建一个CloudFront发行版
  2. 使用以下设置配置您的来源
    • 原始域名:{your-s3-bucket}
    • 限制存储桶访问:是
    • 授予存储桶读取权限:是,更新存储桶策略
  3. 创建CloudFront密钥对。应该可以在这里做到这一点。

创建签名的CloudFront URL

要获得一个经过签名的CloudFront URL,您只需要使用RSA-
SHA1签署您的策略并将其包含为查询参数即可。您可以在此处找到有关自定义策略的更多信息,但是我在下面的示例代码中包含了一个基本的自定义策略,可以帮助您正常运行。该示例代码适用于Node.js,但是该过程可以应用于任何语言。

var crypto = require('crypto')  , fs = require('fs')  , util = require('util')  , moment = require('moment')  , urlParse = require('url')  , cloudfrontAccessKey = '<your-cloudfront-public-key>'  , expiration = moment().add('seconds', 30)  // epoch-expiration-time// Define your policy.var policy = {   'Statement': [{      'Resource': 'http://<your-cloudfront-domain-name>/path/to/object',      'Condition': {         'DateLessThan': {'AWS:EpochTime': '<epoch-expiration-time>'},      }   }]}// Now that you have your policy defined you can sign it like this:var sign = crypto.createSign('RSA-SHA1')  , pem = fs.readFileSync('<path-to-cloudfront-private-key>')   , key = pem.toString('ascii')sign.update(JSON.stringify(policy))var signature = sign.sign(key, 'base64')// Finally, you build the URL with all of the required query params:var url = {  host: '<your-cloudfront-domain-name>',  protocol: 'http',  pathname: '<path-to-s3-object>'}    var params = {  'Key-Pair-Id=' + cloudfrontAccessKey,  'Expires=' + expiration,  'Signature=' + signature}var signedUrl = util.format('%s?%s', urlParse.format(url), params.join('&'))return signedUrl


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/368825.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号