AWS的CloudFront + S3MediaStorage是否有默认解决方案?

2020-08-31 20:08发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我在" https://wiki.hybris.com中阅读了以下说明/display/release5/hybris+Platform+5.0 " URL:在hybris平台的第5版中,我们对媒体框架进行了模块化,以支持不同的存储技术,从而简化了基于云的部署并轻松使用了Content Delivery Networks( CDN)产品,例如Amazon Cloudfront和Windows Azure CDN。 有关更多详细信息,请参阅媒体存储概述。

但是在"媒体存储概述"部分中,我只能找到如何将图像文件存储在Amazon S3中,但是没有关于CloudFront的描述。

我计划让浏览器从S3存储中检索图像文件,但是它的反应似乎非常缓慢。 所以我希望它能像浏览器-> cloudfront-> s3storage一样工作。 但是,似乎在amazoncloudserver.jar中没有类,该类生成指向云前端资源的URL。

我是否必须自己实现功能?

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我在" https://wiki.hybris.com中阅读了以下说明/display/release5/hybris+Platform+5.0 " URL:在hybris平台的第5版中,我们对媒体框架进行了模块化,以支持不同的存储技术,从而简化了基于云的部署并轻松使用了Content Delivery Networks( CDN)产品,例如Amazon Cloudfront和Windows Azure CDN。 有关更多详细信息,请参阅媒体存储概述。

但是在"媒体存储概述"部分中,我只能找到如何将图像文件存储在Amazon S3中,但是没有关于CloudFront的描述。

我计划让浏览器从S3存储中检索图像文件,但是它的反应似乎非常缓慢。 所以我希望它能像浏览器-> cloudfront-> s3storage一样工作。 但是,似乎在amazoncloudserver.jar中没有类,该类生成指向云前端资源的URL。

我是否必须自己实现功能?

付费偷看设置
发送
2条回答
软件心理学工程师
1楼-- · 2020-08-31 20:50

实施CloudFront URL策略非常容易。 设置Hybris以正常方式使用S3媒体存储,并根据需要将CloudFront分发配置为通过签名或未签名的URL来提供存储桶的内容。

然后,您需要编写一个新的自定义类-CloudFrontMediaUrlStrategy。 如果您不需要签名的URL,则代码应该非常简单:

字符串distributionDomain = config.getParameter(" url.domain");
 最终的字符串位置= HttpUtils.urlEncode(media.getLocation(),true);
 url =" https://" + distributionDomain +"/" +位置;
 返回网址; 

然后您可以像这样配置存储桶:

(...这里通常的S3媒体存储属性...)
 media.folder.myfolder.url.strategy = cloudFrontMediaURLStrategy
 media.folder.myfolder.url.domain = mydistribution.cloudfront.net
 media.folder.myfolder.url.signed = false
 

如果您需要签名的URL,那就更麻烦了。 向您的自定义扩展添加依赖项到AWS Java SDK-CloudFront组件:

 
     com.amazonaws 
     aws-java-sdk-cloudfront 
     $ {aws.version} 
  

(对于我的Hybris版本,我使用了与amazoncloud扩展名相同的aws.version)

然后,您基本上需要调用CloudFrontUrlSigner.getSignedURLWithCannedPolicy()(如果需要自定义策略,则可以调用其他功能之一)以生成URL。 查看API文档以了解更多信息。

您需要在存储桶配置中添加一些额外的参数,以便获得必要的信息,并从URL策略类中访问这些参数:

 media.folder.myfolder.url.signed = true
 media.folder.myfolder.url.signed.keypair = mycloudfrontkeypairid
 media.folder.myfolder.url.signed.keyfile =/path/to/cloudfront/signer/private/key.pem
 media.folder.myfolder.url.signed.validFor = 30#该网址有效的时间(以分钟为单位)
 

请注意6.7之前的url.signed.validFor属性存在错误-您需要在Spring配置中实施小修正或使用其他属性名称。

SC_Yao
2楼-- · 2020-08-31 20:49

您只能在这三个现成的实现之间进行选择:Amazon S3,Windows Azure Blob和MongoDB GridFS。 但是,媒体存储实现的体系结构允许您创建自定义媒体存储策略:

https://wiki.hybris.com/display/ release5/Media + Storage + Overview#MediaStorageOverview-CreatingCustomMediaStorageandURLStrategy

一周热门 更多>