当用户从托管在 Digital Ocean 上的 Web 应用程序将图像上传到 AWS S3 时,是出站还是入站带宽传输?
Posted
技术标签:
【中文标题】当用户从托管在 Digital Ocean 上的 Web 应用程序将图像上传到 AWS S3 时,是出站还是入站带宽传输?【英文标题】:When user uploads image to AWS S3 from web app hosted on Digital Ocean, is that outbound or inbound bandwidth transfer? 【发布时间】:2020-07-23 22:06:55 【问题描述】:我对 DO 及其服务还很陌生,但我正计划创建一个允许用户将图像上传到 AWS S3 的 Web 应用程序。我打算在 DO 液滴上托管 Web 应用程序。图片上传是否会被视为入站或出站带宽传输?据我了解,图像是直接上传到 S3,但由于它是从网络应用程序上传的,我认为它是出站的,因为它必须先通过 Digital Ocean 的服务器(如果我错了,请纠正我)。
另外,您是否建议对 droplet 执行图像大小调整/压缩或将其卸载到 AWS?
【问题讨论】:
【参考方案1】:图片上传将被视为出站带宽传输。这是因为您使用公共网络接口从您的 Droplet 将数据传输到托管在 AWS 中的 S3 存储桶,这是一项外部服务。
我确定您已经了解 Droplet 的带宽计费详细信息,以防您不在这里了解详细信息,
Droplets 包括免费的出站数据传输,最小计划的起价为 1,000 GiB/月。超额数据传输按 0.01 美元/GiB 计费。例如,1,000 GiB 的超额成本为 10 美元。 Droplets 的入站带宽始终是免费的。
Droplet 使用公共网络接口发送的任何数据传输都将计入该 Droplet 帐户的传输池。所有 IPv6 流量都使用公共接口。通过专用网络或 VPC 网络在 Droplet 之间传输数据使用专用网络接口。
转账津贴在帐户级别累积汇总,而不是在 Droplet 级别单独汇总。例如,如果您运行两个 Droplet 整整一个月,每个具有 1,000 GiB/月的限额,您将累积 2,000 GiB 限额。假设您使用第一个 Droplet 传输 1,500 GiB 的数据,这超出了其单独的限制,而使用第二个 Droplet 传输 100 GiB 的数据,您仍将低于 2000 GiB 的总限制 400 GiB,并且不会收取任何费用超额费用。
来源:https://www.digitalocean.com/docs/accounts/billing/bandwidth/#droplets
回答你的第二个问题,
是否对Droplet执行图像大小调整/压缩或将其卸载到S3?
AWS S3 只是一个对象存储服务。它没有能力进行任何处理。 因此,您的选择是对液滴进行图像大小调整/压缩并将其上传到 S3。
如果您有兴趣,另一种选择是将您的图像大小调整/压缩委托给 AWS Lambda。 在这种情况下,托管在 Droplet 中的应用程序会将图像上传到 S3。 Lambda 在图像上传时触发,进行图像处理并将处理后的图像上传到 S3(您可以设置并检查前缀以防止 Lambda 被重新触发)。 这种方法的优点是您的 Droplet 不会在执行 CPU 密集型图像处理工作时加载,因此只需上传图像并让 Lambda 在幕后完成繁重的工作,它就可以提供更高的请求吞吐量。
【讨论】:
感谢您的跟进。这正是我使用 Lambdas 的想法,但是,权衡将使用 DO 计划限制的更多出站带宽。但是,如果调整大小/压缩是在液滴上完成的,那么它暂时只会消耗一点 RAM 或 CPU(不确定多少?)但不会占用带宽。现在,这就是我不确定哪种权衡更便宜或更好的地方?我不确定有多少 CPU/RAM 仅用于调整图像大小/压缩图像 另一个问题是,如果上传太多并且链接到 S3 的 Lambda 处理图像的速度不如我提供图像所需的速度。然后我将提供未经处理的图像。以上是关于当用户从托管在 Digital Ocean 上的 Web 应用程序将图像上传到 AWS S3 时,是出站还是入站带宽传输?的主要内容,如果未能解决你的问题,请参考以下文章
托管在 Digital Ocean 中的应用程序的 MySQL JDBC 驱动程序连接字符串应该是啥?
如何将 Amazon Route 53 与 Digital Ocean 水滴一起使用?
Digital Ocean 主机上的 phpMyAdmin 404 错误