通过BITS下载AWS S3



我知道我可以使用Powershell通过VPN从我的服务器启动和管理BITS(后台智能传输服务)下载,我希望这样做,以便在普通用户登录时在本地阶段大型安装资源,准备在软件安装和更新中使用。然而,我也希望为下载存储库提供云服务,因为我预见(一些)公司不再拥有集中式服务器和VPN连接,只有云存储库和分布式劳动力。为此,我使用AWS Powershell工具中的Copy-S3Object进行了测试,结果很好。但据我所知,它不能节流。所以我想知道,是否有一种方法可以配置我的AWS存储桶,以便我可以使用BITS进行下载,但仍然受到AWS凭据的限制?如果有的话,该技术在多个云服务(如Azure和Google cloud)上是否有效?如果可能的话,我想成为云平台不可知论者。

我发现了这个线程,这似乎表明创建预先指定的url会起作用。但我对这个过程的理解是不存在的。我目前正在为每个用户创建凭据。我是否将这些用户分配给一个AWS组并赋予该组一些权限,然后Powershell可以使用特定用户的凭据对URL进行签名,BITS使用的就是这个URL ?因此,从组中删除的用户将不再能够创建已签名的url,从而不再能够访问可用资源?

或者,如果有一种方法可以限制Copy-S3Object,也可以工作。但据我所知,这是不可能的。

不确定如何限制copy-s3对象,但您绝对可以BITS预签名的s3 URL。

例如,如果您的AWS组中有用户a/b/c,并且该组附加了一个策略,允许对您的桶进行相关访问-这些用户a/b/c将能够为该桶中的对象创建预签名的url。例如,下面为一个名为'BITS-test.txt'的对象创建一个预签名url:

aws s3 presign s3://youbucketnamehere/BITS-test.txt 

这将生成一个预先签名的URL,该URL可以传递到Invoke-WebRequest命令中。

这个URL并不仅仅局限于这些用户,任何拥有这个URL的人将能够下载对象-但只有用户a/b/c(或任何其他访问该桶)将能够创建这些url。如果您不希望用户a/b/c能够再创建这些url,那么您可以像您提到的那样将它们从AWS组中删除。

您也可以在preign命令中添加一个有效期参数,例如--expires-in 60,该参数将使链接仅在一段时间内有效(在本例中为1小时-有效期参数以分钟为单位设置)。

最新更新