首页 > 其他分享 >如何使用 AWS CLI 为私有 AWS S3 存储桶中的对象创建预签名 URL

如何使用 AWS CLI 为私有 AWS S3 存储桶中的对象创建预签名 URL

时间:2024-08-26 14:23:11浏览次数:9  
标签:存储 s3 CLI URL AWS S3 对象 --

本文档的目的是介绍使用 AWS CLI 为 s3 对象创建预签名 URL 的步骤。欢迎来到雲闪世界

快速事实

  • “如果您使用预签名 URL,则无需将存储桶公开,事实上,最好不要这样做。” — AWS Support

背景

  • Amazon Web Services 简单存储服务 (AWS S3) 是 AWS 的服务之一,您可以以低廉的价格存储任何对象(文件)。
  • 当您能够存储大量数据和任何数据时,可能会出现业务用例,以允许外部在一段时间内访问某些数据。

使用案例

  • 示例 1 — 当您的亚马逊包裹到达时,您会收到一张图片作为证明。如果他们愿意,他们可以使用 S3 来存储这些图片,并让这些图片在一定时间后过期
  • 示例 2 — 如果您是一家处理客户数据的企业,并且客户想要自定义数据范围。您可以使用一些 ETL 流程将其提取到对象中并将其上传到 s3。然后,您可以与客户共享此对象的链接。

先决条件

  • 控制台和 CLI 访问现有 AWS 账户
  • S3 服务的权限

免责声明

以下步骤仅用于演示目的 - 不建议用于生产用途

  1. 转到 AWS S3 服务并创建一个存储桶
<span style="background-color:#f2f2f2"><span style="color:#242424">存储桶可以是对象的容器。就像在 PC 世界中一样,文件夹是文件的容器。</span></span>

2. 按照此配置

Bucket 名称命名一个你独有且符合你目的的名称

AWS 区域您的偏好也可能取决于您的应用程序存储在哪个区域

从现有存储桶复制设置保留空白

对象所有权除非另有规定,否则保留默认设置

阻止公共访问设置: 阻止所有公共访问(所有四个子项目符号都应显示为灰色)

存储桶版本控制除非另有规定,否则保留其默认设置。

<span style="background-color:#f2f2f2"><span style="color:#242424">存储桶版本控制允许您跟踪同一对象的多个版本。在某些情况下,您可能会上传同一对象,如果启用此设置 - 它将每次作为新版本上传。然后,您以后就可以查看和检索任何版本。</span></span>

标签添加对您和您的公司有意义的标签。所有资源最好使用标签模板。

默认加密: 单击“启用”并选择您的加密类型。常见选择 - Amazon S3 托管密钥 (SSE-S3)

高级设置: 除非另有规定,否则保留其默认设置。

3.单击创建存储桶

4. 验证你的对象是否已创建

5. 将随机对象从本地计算机拖放到存储桶,然后单击上传。

6. 对象上传后,需要为该对象创建一个预签名的 URL 链接,以便与其他人共享此文件

7.假设您已将 AWS CLI 配置为具有您创建的 AWS S3 存储桶的正确账户。执行以下命令

<span style="background-color:#f2f2f2"><span style="color:#242424">aws s3 presign --endpoint-url <a data-cke-saved-href="https://s3.us-east-1.amazonaws.com/" href="https://s3.us-east-1.amazonaws.com/" class="af ui">https://s3.{region}.amazonaws.com</a> s3://{bucketname}/{object} --region {region} --expires-in {seconds}</span></span>

我执行的命令

<span style="background-color:#f2f2f2"><span style="color:#242424">aws s3 presign --endpoint-url <a data-cke-saved-href="https://s3.us-east-1.amazonaws.com/" href="https://s3.us-east-1.amazonaws.com/" class="af ui">https://s3.us-east-1.amazonaws.com</a> s3://sai-pre-signed-url-test/Dance.mov --region us-east-1 --expires-in 86400</span></span>

8.输出应类似于此

9. 复制命令行的输出并将其粘贴到浏览器中(以 https://s3.us-east-1 开头)。此链接将根据您设置的时间过期。但是,对象不会被删除。

感谢关注雲闪世界。(Aws解决方案架构师vs开发人员&GCP解决方案架构师vs开发人员)

下一步

  • 您可能希望使用生命周期策略来删除对象
  • 使用最佳实践来保护存储桶访问——查看存储桶策略
  • 可能有第三方工具可以缩短你的 S3 预签名链接

标签:存储,s3,CLI,URL,AWS,S3,对象,--
From: https://blog.csdn.net/2401_85233349/article/details/141560674

相关文章

  • 题解:CF235C Cyclical Quest
    题意给定一个主串\(S\)和\(n\)个询问串,求每个询问串的所有循环同构在主串中出现的次数总和。分析后缀自动机好题。循环同构的过程可以看作从该串的头部删除一个字符,并在尾部加入一个字符。在后缀自动机上,跳parent树的过程就相当于删除头部的若干个字符。所以我们可......
  • ".prisma/client/index-browser" is imported by ".prisma/client/index-browser?comm
    背景在nuxt3项目中使用prisma操作数据库。dev阶段可以正常运行,但是到了build时出现以上错误。分析由于npm的依赖采用扁平化管理,而pnpm并不适用扁平化管理,从而导致pnpm存在兼容性问题。最简单的办法是直接换掉pnpm,直接改成yarn或者npm。yarnpnpm仔细观察可以发现,没有.prisma......
  • 通过Bat脚本获取Git某个账户下所有仓库的URL地址
    一、需求来源我个人之所以有这个需求,是因为我想定期备份我Git上的所有私人项目二、前期必备获取私人访问令牌要获取GitLab账号的私有访问令牌,可以按照以下步骤进行操作:1.打开GitLab网站并登录到你的账号。2.点击右上角的用户头像,然后选择"Settings"(设置)。3.在侧边栏中......
  • HttpClient
    介绍HttpClient是ApacheJakartaCommon下的子项目,可以用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本和建议。maven坐标<dependency>             <groupId>org.apache.httpcomponents<......
  • 当网站配置好https协议之后 全站url http怎么跳转到https
    如果是apache环境,在站点根目录下.htaccess文件里新增以下代码,具体位置请看参考下图:#http跳转到httpsRewriteCond%{SERVER_PORT}!^443$RewriteRule^(.*)$https://www.xxxxx.cn/$1[LR=301]当网站配置好了HTTPS协议之后,为了保证网站的安全性和统一性,通常会将所有的......
  • Platform - AWS基础初识
    前言什么是云?借助云计算将基础设施视为视为软件并使用,具备可编程资源、动态伸缩能力、随用随付的优势。传统方式:通过公司网络访问和管理本地部署的服务器、存储、数据库、应用程序等软硬件资源云计算:通过互联网使用和管理云服务提供商的存储、服务器、数据库、应用程序等云......
  • get_cli安装及使用
    1.安装flutterpubglobalactivateget_cli它的作用是在Flutter开发环境中激活一个名为get_cli的全局包。该命令的详细解释:flutterpub:这是Flutter命令行工具中的一个子命令,用于管理Flutter包(Package)。globalactivate:这部分表示要执行一个全局激活操作。ge......
  • Clion配置-运行多个单独cpp代码的main函数
    修改CMakeLists.txt文件为project(YourProjectName)set(CMAKE_CXX_STANDARD11)#遍历项目二级目录下所有的.cpp文件file(GLOBfiles*/*.cpp)foreach(file${files})string(REGEXREPLACE".+/(.+)/(.+)\\..*""\\1-\\2"exe${file})add_exec......
  • 【OpenFeign】OpenFeign指定url方式调用
    OpenFeign一般是结合注册中心一起使用的,也就是可以通过提供服务的名称而不是url来完成对目标服务的访问。但是出于本地调试的需要,或者考虑到一些简单的服务可能并不需要依赖注册中心,所以本篇我们就讲解一下OpenFeign直接通过目标服务的url进行调用的方式。FeignClient注解......
  • Kubernetes: client-go 源码剖析(一)
    kubernetes:client-go 系列文章:Kubernetes:client-go源码剖析(一)Kubernetes:client-go源码剖析(二)0.前言在看 kube-scheduler 组件的过程中遇到了 kube-scheduler 对于 client-go 的调用,泛泛的理解调用过程总有种隔靴搔痒的感觉,于是调转头先把 client-go 理清楚......