Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.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
Php Amazon s3存储,用于内容管理等社交网络_Php_Amazon Web Services_Amazon S3 - Fatal编程技术网

Php Amazon s3存储,用于内容管理等社交网络

Php Amazon s3存储,用于内容管理等社交网络,php,amazon-web-services,amazon-s3,Php,Amazon Web Services,Amazon S3,我有类似于任何社交网络平台的要求。详情如下: 用户可以分组发布内容 组中的所有用户都可以查看该内容 用户可以上传/下载内容 不是固定数量的用户/组。i、 这是一项公共服务,所以我不能明确管理访问列表。 我已经看过了。总结如下: 下载 用户请求他想要查看的图像 我们为用户生成临时的有时间限制的URL。AmazonS3API 允许您为您创建的任何私有对象生成临时URL 已存储在S3中。您可以为此URL和 通常,S3图像就是这样显示的 在网站上。我们使用这种机制通过我们的 应用程序编程接口。在设定的时

我有类似于任何社交网络平台的要求。详情如下:

用户可以分组发布内容 组中的所有用户都可以查看该内容 用户可以上传/下载内容 不是固定数量的用户/组。i、 这是一项公共服务,所以我不能明确管理访问列表。 我已经看过了。总结如下:

下载 用户请求他想要查看的图像 我们为用户生成临时的有时间限制的URL。AmazonS3API 允许您为您创建的任何私有对象生成临时URL 已存储在S3中。您可以为此URL和 通常,S3图像就是这样显示的 在网站上。我们使用这种机制通过我们的 应用程序编程接口。在设定的时间之后,您不再具有访问权限。 上传 上传更为棘手

我们首先决定用户只能发布到 [ourS3bucketPath]/[userId]/imagename.jpg路径。使用S3,您可以 限制用户对特定密钥路径的访问。 当用户想要发布时,他会请求服务器临时访问。Amazon提供了一个有趣的临时用户,称为“联邦用户”。 你可以在飞行中创建一个,它们就像 设置时间后的临时URL。此外,您可以限制访问 具体来说,就是一个S3 bucket密钥路径。所以在这里,我们提供一个 短时间内创建新的联合用户。 用户告诉服务器 将要上载的图像。 用户上传到amazon以 给定的桶路径。 用户与服务器确认已完成的 下载完成。 下载方面还可以,但我不太确定上传。 创建联邦用户后,如果用户将文件上载到s3,然后告诉我的服务器一个路径名,则可能会手动更改路径名以防恶意意图

如何执行以下操作:

允许我自己的服务器决定的授权用户查看文件。 再次允许授权用户,我的服务器将决定上载文件。 我还欢迎对bucket结构命名的建议。 我想到:

CONTENTbucket名称->->uuid命名文件

这意味着,如果有一百万个组,那么将有一百万个组文件夹,后面是一些uuid,它们将表示文件本身


我的服务器将记录UUID,并使用组id计算绝对路径,组id也将保存在我自己的服务器中。

如果您的站点/应用程序从未如此繁忙,那么几乎任何命名约定都会起作用-因此您提到的结构都会起作用,但通常出于性能原因,最好不要让很多对象都以相同的前缀开头,因为您希望随机化对象名称的开头部分,而不是文件夹名称的结尾部分,因此,如果您希望发展壮大并拥有一个非常繁忙的站点,您可能希望现在就计划这样做:

AmazonS3维护每个AWS区域中的对象键名称索引。 对象键以UTF-8二进制顺序存储在多个 索引中的分区。密钥名称指示密钥的分区 存储在。使用顺序前缀,如时间戳或 字母顺序,增加Amazon S3将 针对大量密钥的特定分区, 超过分区的I/O容量。如果你介绍一些 密钥名称前缀、密钥名称以及 I/O负载将分布在多个分区上

然而:

本主题中的Amazon S3最佳实践指南仅适用于以下情况: 每秒例行处理100个或更多请求。如果你的 典型的工作负载只涉及偶尔突发的100个请求 每秒的请求数小于800个,您无需遵循 这些准则


如果您的站点/应用程序从未如此繁忙过,那么几乎任何命名约定都会起作用-因此您提到的结构都会起作用,但通常出于性能原因,您最好不要有很多以相同前缀开头的对象-您希望随机化对象名称的开头部分,不是文件夹名称的结尾部分,因此,如果您希望发展并拥有一个非常繁忙的站点,您可能希望现在就计划:

AmazonS3维护每个AWS区域中的对象键名称索引。 对象键以UTF-8二进制顺序存储在多个 索引中的分区。密钥名称指示密钥的分区 存储在。使用顺序前缀,如时间戳或 字母顺序,增加Amazon S3将 针对大量密钥的特定分区, 超过分区的I/O容量。如果你介绍一些 密钥名称前缀、密钥名称以及 I/O负载将被分配 在多个分区上执行ted

然而:

本主题中的Amazon S3最佳实践指南仅适用于以下情况: 每秒例行处理100个或更多请求。如果你的 典型的工作负载只涉及偶尔突发的100个请求 每秒的请求数小于800个,您无需遵循 这些准则


创建临时用户似乎有些过火,特别是当有更直接的方法可用时:

使用表单post上载文件允许您创建和签署一个不能篡改的策略文档,并且此策略文档不仅可以限制上载的关键路径,还可以选择限制上载文件的大小-S3将拒绝太大的文件。或小

还有一点可能需要澄清:

AmazonS3API允许您为存储在S3中的任何私有对象生成临时URL

这取决于API的含义。生成这些代码的不是S3,而是完全在本地代码中完成的,不需要联系S3。SDK有代码可以为您执行此操作,您也可以使用已发布的规范编写自己的代码。我甚至编写了一个MySQL存储函数,可以在查询中直接从数据库生成这些函数,并将URL作为参数

根据您的应用程序,您可能还想了解CloudFront如何支持bucket内容的预签名URL,其中CloudFront位于bucket前面-CloudFront预签名URL,使用自定义策略可以做S3预签名URL不能做的几件事-按IP地址限制URL的使用,并允许访问与特定路径模式匹配的所有对象,如https://example.com/files/uuid/images/*

可以使用与零个或多个字符匹配的通配符*或与字符串中任意一个字符完全匹配的通配符

可以想象,您可以为应用程序服务器节省一些处理时间,方法是对此进行一次签名,然后使用基本签名URL替换每个可见对象的路径。这仅在CloudFront处理身份验证时有效-用于下载的S3签名URL不支持通配符


对URL进行签名非常快,但它确实涉及到一些相当严重的幕后操作,因此,如果在同一html页面上可以看到很多图像,那么这些毫秒数就可以开始累积,这可能是一个有用的优化。。。更不用说,使用CloudFront,您通常会看到更快的下载速度,因为频繁访问的对象缓存在离下载它们的用户更近的地方。

创建临时用户似乎有些过火,特别是当有更直接的方法可用时:

使用表单post上载文件允许您创建和签署一个不能篡改的策略文档,并且此策略文档不仅可以限制上载的关键路径,还可以选择限制上载文件的大小-S3将拒绝太大的文件。或小

还有一点可能需要澄清:

AmazonS3API允许您为存储在S3中的任何私有对象生成临时URL

这取决于API的含义。生成这些代码的不是S3,而是完全在本地代码中完成的,不需要联系S3。SDK有代码可以为您执行此操作,您也可以使用已发布的规范编写自己的代码。我甚至编写了一个MySQL存储函数,可以在查询中直接从数据库生成这些函数,并将URL作为参数

根据您的应用程序,您可能还想了解CloudFront如何支持bucket内容的预签名URL,其中CloudFront位于bucket前面-CloudFront预签名URL,使用自定义策略可以做S3预签名URL不能做的几件事-按IP地址限制URL的使用,并允许访问与特定路径模式匹配的所有对象,如https://example.com/files/uuid/images/*

可以使用与零个或多个字符匹配的通配符*或与字符串中任意一个字符完全匹配的通配符

可以想象,您可以为应用程序服务器节省一些处理时间,方法是对此进行一次签名,然后使用基本签名URL替换每个可见对象的路径。这仅在CloudFront处理身份验证时有效-用于下载的S3签名URL不支持通配符

对URL进行签名非常快,但它确实涉及到一些相当严重的幕后操作,因此,如果在同一html页面上可以看到很多图像,那么这些毫秒数就可以开始累积,这可能是一个有用的优化。。。更不用说,使用CloudFront,您通常会看到更快的下载,因为频繁访问的对象被缓存在更靠近用户的位置 哼哼