Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 缓存和SignedURL之间的冲突(使内容私有化)_Amazon Web Services_Caching_Amazon S3_Amazon Cloudfront_Cloudflare - Fatal编程技术网

Amazon web services 缓存和SignedURL之间的冲突(使内容私有化)

Amazon web services 缓存和SignedURL之间的冲突(使内容私有化),amazon-web-services,caching,amazon-s3,amazon-cloudfront,cloudflare,Amazon Web Services,Caching,Amazon S3,Amazon Cloudfront,Cloudflare,我正在制作一个包含消息功能的应用程序。通过消息功能,用户可以向其他用户发送照片。这些照片应该是完全保密的 首先,我想到了S3的signedURL特性。但后来我意识到,我不能让缓存工作,这是由我的CDN提供商和我的客户端完成的,因为缓存是基于URL完成的 所以我转到CloudFront的签名cookie。一开始似乎很有希望,但我发现了另一个问题。获得签名cookie的用户可以访问允许范围内的任何内容。但我不应该允许显示在其他聊天室发送的照片。已签署cookie的用户应无法访问其房间中未共享的照片U

我正在制作一个包含消息功能的应用程序。通过消息功能,用户可以向其他用户发送照片。这些照片应该是完全保密的

首先,我想到了S3的signedURL特性。但后来我意识到,我不能让缓存工作,这是由我的CDN提供商和我的客户端完成的,因为缓存是基于URL完成的

所以我转到CloudFront的签名cookie。一开始似乎很有希望,但我发现了另一个问题。获得签名cookie的用户可以访问允许范围内的任何内容。但我不应该允许显示在其他聊天室发送的照片。已签署cookie的用户应无法访问其房间中未共享的照片URL。所以我不能使用签名cookies

我转到CloudFlare,发现一篇文章说他们可以使用特殊的缓存键,而不是基于url的缓存。()我不知道企业计划是多少,但低于一级的商业计划是每月200美元

业务计划允许CloudFlare用户使用令牌身份验证。()通过使我的图像包含以下令牌,我可能能够利用此令牌身份验证:

<Image source={{
          uri: 'https:image_url.jpeg',
          method: 'GET',
          headers: {
            Authorization: token
          },
     }}
     style={{width: width, height: height}}
/>

我可以做的另一件事是从CloudFront获得签名URL,而不是从S3级别。通过这种方式,我可以使我的CDN(在本例中为CloudFront)正确缓存我的S3图像,然后为每张照片创建唯一的URL。但我仍然需要处理客户端缓存,因为客户端看到的URL总是不同的。我必须按照这个()答案的建议将URL保存在Localstorage中。或者我可以使用React本机缓存库。但是,我将在web和移动环境中部署此应用程序,因此我不确定使用此类缓存库是否可行

总之,签名URL会导致两个级别的问题。它不适用于CDN缓存。它不适用于客户端缓存。我应该使用CloudFront的签名URL并处理客户端缓存(这并不理想),或者我应该使用CloudFlare的令牌方法。CloudFlare的带宽是免费的,尽管商业计划需要200美元。那么,如果我假设我的应用程序可以很好地扩展,那么这是否值得呢

阻止我使用CloudFlare的是它没有很好的文档记录。我必须处理CloudFlare中的工作人员,但我找到的关于如何在CDN级别使用签名URL的唯一文档是this(),我找到的关于如何从CloudFlare访问S3私有bucket的唯一文档是this()

CloudFlare和令牌验证方法是否适合我?还有别的方法我可以试试吗?

怎么样?怎么样?