通过 BITS 下载 AWS S3
AWS S3 download via BITS
我知道我可以使用 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 对象,但您绝对可以对预签名的 s3 进行 BITS URL。
例如,如果您的 AWS 组中有用户 a/b/c,并且该组附加了允许对您的存储桶进行相关访问的策略 - 这些用户 a/b/c 将能够为该存储桶中的对象创建预签名 URLs。例如,以下为名为 'BITS-test.txt' 的对象创建预签名 url:
aws s3 presign s3://youbucketnamehere/BITS-test.txt
这将生成一个预签名的 URL,可以将其传递到 Invoke-WebRequest 命令中。
这个 URL 不仅限于那些用户,拥有这个 URL 的任何人都可以下载该对象 - 但只有用户 a/b/c(或有权访问该存储桶的任何其他人)将能够创建这些 URL。如果您不希望用户 a/b/c 能够再创建这些 URL,那么您可以像您提到的那样将它们从 AWS 组中删除。
您还可以向预签名命令添加一个过期参数,例如 --expires-in 60
,它使 link 仅在该时间段内有效(在本例中为 1 小时 - 已设置过期参数分钟)。
我知道我可以使用 Powershell 启动和管理通过 VPN 从我的服务器下载的 BITS(后台智能传输服务),我希望这样做以便在普通用户登录时在本地暂存大量安装资源,准备好在以后的软件安装和更新中使用。但是,我还想支持下载存储库的云服务,因为我预见到(一些)公司不再拥有集中式服务器和 VPN 连接,只有云存储库和分散的劳动力。为此,我使用 AWS Powershell 工具中的 Copy-S3Object
进行了测试,效果很好。但据我所知,它不能节流。所以我想知道,有没有一种方法可以配置我的 AWS 存储桶,以便我可以使用 BITS 进行下载,但仍然受到 AWS 凭证的限制?
如果存在,该技术是否适用于多种云服务,例如 Azure 和 Google Cloud?如果可能的话,我希望成为云平台不可知论者。
我发现
或者,如果有一种方法可以限制 Copy-S3Object
那也行。但据我所知,这不是一个选择。
不确定如何限制 copy-s3 对象,但您绝对可以对预签名的 s3 进行 BITS URL。
例如,如果您的 AWS 组中有用户 a/b/c,并且该组附加了允许对您的存储桶进行相关访问的策略 - 这些用户 a/b/c 将能够为该存储桶中的对象创建预签名 URLs。例如,以下为名为 'BITS-test.txt' 的对象创建预签名 url:
aws s3 presign s3://youbucketnamehere/BITS-test.txt
这将生成一个预签名的 URL,可以将其传递到 Invoke-WebRequest 命令中。
这个 URL 不仅限于那些用户,拥有这个 URL 的任何人都可以下载该对象 - 但只有用户 a/b/c(或有权访问该存储桶的任何其他人)将能够创建这些 URL。如果您不希望用户 a/b/c 能够再创建这些 URL,那么您可以像您提到的那样将它们从 AWS 组中删除。
您还可以向预签名命令添加一个过期参数,例如 --expires-in 60
,它使 link 仅在该时间段内有效(在本例中为 1 小时 - 已设置过期参数分钟)。