正如我问题的标题所说,我想知道这是否是一个好的做法,

我知道我可以将它安装在EC2实例中,但我想知道是否,因为我将添加更多实例来扩展我的应用程序,这可能会导致一些问题;你有这方面的经验吗?

我使用S3来允许通过PHP脚本上传文件,所以基本上问题是:

使用mouting是一种好的做法还是有更好的方法来处理用户文件上传?

提前致谢

如果您使用S3来存储来自用户上传的数据,特别是在分布式环境中,一个重要的考虑因素是S3“最终是一致的”(尽管某些区域是写后读一致的).这样做的结果是您可以成功上传文件,但如果您之后立即检查其存在,可能会发现它不存在.对于诸如更新或删除之类的情况,此问题更为明显,即使是写后读写一致性也无济于事.

无论您采取何种方法,上述内容都适用于您上传到S3.实际上,对于人们可能期望的S3的大多数问题都是如此 – 用于存储数据的方法并非如此,因为S3的局限性可能是最成问题的.

S3fs使用S3 API – 就像PHP(或其他)SDK一样.此外,S3旨在处理相当高的并发性 – 因此(除了一致性问题)将它安装在多个实例上应该没有问题(请记住它不是传统的文件系统 – 锁定等问题,等等在S3方面处理).

也就是说,每种实现都有一些潜在的优点和缺点:

S3fs:

>不支持部分/分块下载(据我所知) – 所以你必须下载完整的文件来阅读它的任何部分 – 如果你只是用来存储(和提供)上传,可能不是问题.
>写在C可能的性能提升
>您的应用程序将受益于对s3fs的任何更新
>实现缓存(完整文件和文件信息) – 有可能提高速度,降低成本
>仅限于融合曝光的功能

SDK:

>公开S3提供的全套功能 – 根据您的使用情况,这可能足以值得使用SDK
>与您的应用程序可能更紧密地集成 – 返回的错误等可能允许您的应用程序做出更明智(因此更精确)的选择
>任何可能的优势都需要编码 – 您的应用程序必须利用它们并随时更新S3
>代码的复杂性和开销更大

就“安全”而言,您可能意味着“防止数据损坏”或“防止未经授权的访问”.关于前者,SDK可能有助于处理最终的一致性(以更详细的错误的形式),但底层存储是相同的,我希望差异很小.关于访问控制 – 您可以使用IAM创建受限帐户,但该帐户仍需要对S3文件进行读/写访问.两者都应该足够安全,在任何一种情况下,您的系统都需要被破坏才能访问您的S3存储桶 – 我建议使用S3fs(因为凭据通常存储在webroot之外,并且根本无法访问PHP)有更好的安全性.

个人意见:我赞成s3fs用于存在单个上传目录的情况(例如,一个站点使用它),并且访问将非常简单(只需要上传文件并偶尔更新/删除).如果您需要更复杂的访问(例如部分下载,多个存储桶等)或者将S3 SDK用于其他目的,那么我也会坚持使用SDK进行上传.

php – 将S3存储桶直接安装到EC2实例中是否安全?的更多相关文章

  1. ios – 重用UICollectionView中的单元格时,会短暂显示重用的UICollectionViewCell的旧内容

    我正在使用UICollectionView来显示从URL异步加载的图片网格.我的集合视图使用可重用单元格来显示UICollectionViewCells.当不重复使用单元格时,所有内容都会正确显示,但是当我滚动一下时,重用的单元格会在它们开始正常行为之前短暂闪烁旧内容.以下是自定义UICollectionViewController的实现:这是自定义UICollectionViewCell的实现.

  2. 如何使用AWS iOS SDK从设备上传图像并设置为公开

    由于看起来我们只限于桶数,我试图找出如何完成以下操作:>我有一个iOS应用,用户可以上传一个个人资料图片.>个人资料可以被任何人查看(我想要公开).>理想情况下,我可以上传到一个桶(例如:myprofilepics.s3.amazonaws.com)>理想情况下,每个用户都可以上传到自己的子文件夹(例如:myprofilepics.s3.amazonaws.com/images/userXXX/>

  3. AmazonS3Client putObject只适用于iOS主线程?

    我正在尝试使用AmazonS3Client来放置对象.奇怪的是,它只在我在iOS主线程上运行putObject代码时才起作用.代码基本上是这样的:存在桶,我有权限等.如果我只是打电话在我的代码中,整个视频上传方法运行,但我从来没有得到任何状态回调,没有抛出异常,并且对象永远不会放入其存储桶在S3上.当我在主线程上调用上传函数时,如下所示:我获得进度回调,一切正常,对象成功放入S3存储桶.有没有人知道putObject是否仅适用于iOS主线程?

  4. 如何将我的ios应用程序中的图像上传到存储在aws s3上的存储桶中,并在Swift中完成所有这些操作?

    v=WZ54fH8AFUk(不幸的是它在目标C在这里,我会很感激,如果你能帮助我一个迅捷版……解决方法请确保您有一个桥接标头,您可以在其中导入相应的AWS标头.GitHub上有一个名为here的例子.这样做应该使S3方法可用.-Rohan

  5. swift -结构体

  6. OpenStack Swift发展历程

    Swift是一个提供RESTfulHTTP接口的对象存储系统,最初起源于Rackspace的CloudFiles,目的是为了提供一个和AWSS3竞争的服务。Swift于2010年开源,是OpenStack最初的两个项目之一。早在2010年,Swift就迎来了第一个Rackspace之外的商用案例——韩国电信,大家很熟悉的维基百科、ebay等也是Swift的用户。相信随着互联网技术的应用架构逐渐被传统行业接受,对象存储和Swift将受到越来越广泛的关注。总而言之,Swift和S3是当前对象存储里面最重要的两

  7. Android S3布局与Galaxy Nexus布局

    我开发了一个应用程序,应该针对galaxyNexus和galaxyS3.两者都有720x1280屏幕分辨率,我只在我的应用程序中使用’dp’值.资源存在于’layout-xhdpi’和’drawable-xhdpi’文件夹中.Nexus上的布局看起来非常精细,但是S3上的填充值略有偏差.我认为是因为S3的屏幕尺寸更大,密度不同.如何为Nexus和S3创建单独的文件夹,以便我可以考虑不同的屏幕尺寸?

  8. 解决RHAS3中Apache2的PHP上传文件大小的限制

    近日将论坛从VBB2升级到VBB3,将上传附件大小设置为2M,可每次上传超过500K的附件都会出错,而之前使用VBB2时却正常。再回忆一下,发现以前用VBB2时的操作系统为RHAS2.1,用的自带的Apache1.x版本,后来升级成VBB3之前,顺便也把系统更换为RHAS3,而RHAS3自带的Apache为2.x版本,其配置文件的组织方式有所改变,也许自己编译安装的Apache就不会出现此种问题,可自己比较懒,不喜欢编译,呵呵.

  9. 使用Powershell将EBS卷附加到Windows EC2

    我不想使用diskpart.exe,因为解析其结果更困难.希望这有助于那里的人.AWS的东西很简单,但我花了一些时间来追踪Windows使用它的所有东西.为简洁起见,此答案已被删除,因此请确保:>您已经处理了AWSPowershellAPI例外>在尝试将它们附加到EC2之前,您的卷“可用”>一旦您附加了卷,就会显示“正在使用”2和3可以通过Get-EC2VolumeAPI完成.创建EBS卷:将卷附加到EC2:Windows端:找到刚刚附上的ebs音量初始化磁盘创建最大空间分区,分配驱动器号,使“活动”格式

  10. Windows-server-2008 – Windows EC2机器上的固定MAC地址

    在我们拥有的Windows机器上,可以将MAC地址更改为预先分配的值.但是可以将EC2Windows机器上的MAC地址设置为预先分配的值吗?这是问题:我们提供一个运行AmazonEC2的虚拟实验室/培训/评估环境.客户往往希望在云中运行许可软件(他们拥有!

随机推荐

  1. PHP个人网站架设连环讲(一)

    先下一个OmnihttpdProffesinalV2.06,装上就有PHP4beta3可以用了。PHP4给我们带来一个简单的方法,就是使用SESSION(会话)级变量。但是如果不是PHP4又该怎么办?我们可以假设某人在15分钟以内对你的网页的请求都不属于一个新的人次,这样你可以做个计数的过程存在INC里,在每一个页面引用,访客第一次进入时将访问时间送到cookie里。以后每个页面被访问时都检查cookie上次访问时间值。

  2. PHP函数学习之PHP函数点评

    PHP函数使用说明,应用举例,精简点评,希望对您学习php有所帮助

  3. ecshop2.7.3 在php5.4下的各种错误问题处理

    将方法内的函数,分拆为2个部分。这个和gd库没有一点关系,是ecshop程序的问题。会出现这种问题,不外乎就是当前会员的session或者程序对cookie的处理存在漏洞。进过本地测试,includes\modules\integrates\ecshop.php这个整合自身会员的类中没有重写integrate.php中的check_cookie()方法导致,验证cookie时返回的username为空,丢失了登录状态,在ecshop.php中重写了此方法就可以了。把他加到ecshop.php的最后面去就可

  4. NT IIS下用ODBC连接数据库

    $connection=intodbc_connect建立数据库连接,$query_string="查询记录的条件"如:$query_string="select*fromtable"用$cur=intodbc_exec检索数据库,将记录集放入$cur变量中。再用while{$var1=odbc_result;$var2=odbc_result;...}读取odbc_exec()返回的数据集$cur。最后是odbc_close关闭数据库的连接。odbc_result()函数是取当前记录的指定字段值。

  5. PHP使用JpGraph绘制折线图操作示例【附源码下载】

    这篇文章主要介绍了PHP使用JpGraph绘制折线图操作,结合实例形式分析了php使用JpGraph的相关操作技巧与注意事项,并附带源码供读者下载参考,需要的朋友可以参考下

  6. zen_cart实现支付前生成订单的方法

    这篇文章主要介绍了zen_cart实现支付前生成订单的方法,结合实例形式详细分析了zen_cart支付前生成订单的具体步骤与相关实现技巧,需要的朋友可以参考下

  7. Thinkphp5框架实现获取数据库数据到视图的方法

    这篇文章主要介绍了Thinkphp5框架实现获取数据库数据到视图的方法,涉及thinkPHP5数据库配置、读取、模型操作及视图调用相关操作技巧,需要的朋友可以参考下

  8. PHP+jquery+CSS制作头像登录窗(仿QQ登陆)

    本篇文章介绍了PHP结合jQ和CSS制作头像登录窗(仿QQ登陆),实现了类似QQ的登陆界面,很有参考价值,有需要的朋友可以了解一下。

  9. 基于win2003虚拟机中apache服务器的访问

    下面小编就为大家带来一篇基于win2003虚拟机中apache服务器的访问。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  10. Yii2中组件的注册与创建方法

    这篇文章主要介绍了Yii2之组件的注册与创建的实现方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下

返回
顶部