当前位置: 首页 > news >正文

AWS入门实践-S3对象存储的基本用法

AWS S3(Simple Storage Service)是亚马逊云服务提供的一种高度可扩展、安全且经济高效的对象存储服务。它允许用户在任何位置存储和检索任意数量的数据,非常适合存储和分发静态文件、备份数据以及作为数据湖的存储层。

一、S3上传和下载文件(AWS门户)

1、创建 S3 存储桶

  1. 登录AWS控制台
    访问 https://console.aws.amazon.com/ 并使用您的AWS账户凭证登录。

  2. 打开S3服务控制台
    在AWS服务列表中,找到"存储"部分,然后选择"S3"服务。

  3. 创建存储桶
    在S3控制台中,单击"创建存储桶"按钮。

  4. 命名存储桶
    输入一个全局唯一的存储桶名称。存储桶名称必须遵循特定的命名规则,例如只能包含小写字母、数字和连字符(-)。

  5. 选择AWS区域
    选择要在其中创建存储桶的AWS区域。通常选择离您的应用程序或用户最近的区域,以获得更好的性能和更低的延迟。

  6. 配置存储桶设置(可选)
    根据您的需求,您可以配置存储桶的其他设置,例如:

    • 存储桶所有权
    • 存储桶版本控制
    • 存储桶加密
    • 对象锁定
    • 标签
    • 静态网站托管等
  7. 创建存储桶
    检查您的设置,然后单击"创建存储桶"按钮。

2、上传文件

  • 选择要上传文件的目标存储桶
  • 点击 "上传" 按钮
  • 点击 "添加文件" 或“添加文件夹”并从本地选择要上传的文件
  • 可以选择加密、元数据等高级选项(可选)
  • 点击 "上传" 开始上传文件

 

 

3、下载文件

  1. 选择包含目标文件的存储桶

    • 在 S3 控制台中,找到并选择包含您要下载文件的存储桶
  2. 选择要下载的文件

    • 在存储桶内容列表中,找到并选中您要下载的文件
    • 您可以通过文件名、前缀等条件过滤文件列表
  3. 下载文件

    • 选中文件后,点击顶部的 "下载" 按钮
    • 或者右键单击文件,选择 "下载" 选项
    • 浏览器会提示您保存文件到本地 
  4. 选择保存位置并确认下载

    • 选择要将文件保存到本地的目录路径
    • 点击 "保存" 按钮开始下载文件
  5. 等待下载完成

    • 根据文件大小,下载可能需要一些时间
    • 下载完成后,您可以在指定的本地目录中找到该文件

二、S3上传和下载文件(AWS命令行)

1、AWS命令行工具的安装

在 Windows 上安装和配置 AWS CLI 的步骤如下:

  1. 安装 AWS CLI

    • 下载 AWS CLI MSI 安装程序: https://awscli.amazonaws.com/AWSCLIV2.msi
    • 运行下载的 MSI 安装程序,按照提示进行安装。
  2. 验证 AWS CLI 安装

    打开命令提示符或 PowerShell,输入以下命令验证安装:

    aws --version
    

    如果安装成功,将显示 AWS CLI 版本。

  3. 配置 AWS 凭证

    AWS CLI 需要使用 AWS 访问密钥和秘密访问密钥进行身份验证。您可以使用以下两种方式之一来配置凭证:

    • 使用 aws configure 命令

      在命令提示符或 PowerShell 中输入:

      aws configure
      

      系统将提示您输入 AWS Access Key ID、AWS Secret Access Key、默认区域名称和默认输出格式。您可以从 AWS 管理控制台获取访问密钥和秘密访问密钥。

    • 手动创建凭证文件

      转到 %USERPROFILE%\.aws 目录(如果不存在则创建),在该目录下创建一个名为 credentials 的文件,并添加以下内容:

      [default]
      aws_access_key_id = YOUR_AWS_ACCESS_KEY_ID
      aws_secret_access_key = YOUR_AWS_SECRET_ACCESS_KEY
      

      将 YOUR_AWS_ACCESS_KEY_ID 和 YOUR_AWS_SECRET_ACCESS_KEY 替换为您的实际凭证。

  4. 验证配置

    您可以运行以下命令来验证配置是否正确:

    aws iam get-user
    

    如果一切配置正确,该命令将显示关于您的 AWS 用户的信息。如果出现错误,请检查您的凭证是否正确。

  5. 其他配置选项

    您还可以配置其他选项,如默认区域和输出格式。例如:

    aws configure set default.region us-west-2
    aws configure set default.output json
    

    这将把默认区域设置为 us-west-2,默认输出格式设置为 JSON。

2、AWS S3 存储桶创建

aws S3 mb s3://my-bucket

3、AWS S3 文件上传

aws s3 cp example.txt s3://my-bucket/

4、AWS S3 文件下载

aws s3 cp s3://my-bucket/example.txt .

上面命令是将S3文件下载到当前目录 

5、AWS S3 文件批量上传和下载

AWS S3 SYNC 命令用于同步本地目录或 S3 存储桶中的内容与另一个 S3 存储桶。它可以上传、更新和删除对象,以确保源和目标之间的内容保持同步。

(1). 将本地目录同步到 S3 存储桶

aws s3 sync /path/to/local/dir s3://my-bucket

这将把本地目录 /path/to/local/dir 中的所有文件和子目录上传到 S3 存储桶 my-bucket。如果存储桶中已经存在同名对象,它们将被覆盖。

(2). 将 S3 存储桶同步到本地目录

aws s3 sync s3://my-bucket /path/to/local/dir

这将把 S3 存储桶 my-bucket 中的所有对象下载到本地目录 /path/to/local/dir。如果本地目录中已经存在同名文件,它们将被覆盖。

(3). 在两个 S3 存储桶之间同步

aws s3 sync s3://source-bucket s3://destination-bucket

这将把 S3 存储桶 source-bucket 中的所有对象复制到 destination-bucket。如果目标存储桶中已经存在同名对象,它们将被覆盖。

(4). 排除某些文件或目录

您可以使用 --exclude 参数排除某些文件或目录。例如:

aws s3 sync /path/to/local/dir s3://my-bucket --exclude "*.tmp" --exclude "temp/*"

这将同步本地目录,但排除所有以 .tmp 结尾的文件和 temp 子目录中的所有文件。

(5). 删除目标中多余的对象

默认情况下,sync 命令不会删除目标中多余的对象。如果您希望在同步过程中删除目标中多余的对象,可以使用 --delete 参数:

aws s3 sync /path/to/local/dir s3://my-bucket --delete

这将同步本地目录,并删除 S3 存储桶 my-bucket 中多余的对象。

aws s3 sync 命令还支持许多其他选项,如设置 ACL、元数据、存储类和加密等。您可以使用 aws s3 sync help 获取更多信息。

三、通过签名数据共享S3上的数据

AWS S3 提供了一种通过签名 URL 或签名 Cookie 共享存储桶或对象的方法,无需提供您的 AWS 访问密钥。这种方式可以安全地向他人授予临时访问权限,而不会泄露您的凭证。

以下是通过签名共享 S3 上数据的步骤:

1. 签名 URL

签名 URL 可以提供对特定对象的临时访问权限。您可以使用 AWS CLI 或 AWS SDK 生成签名 URL。

使用 AWS CLI 生成签名 URL:

aws s3 presign s3://my-bucket/my-object --expires-in 3600

这将为 my-bucket 存储桶中的 my-object 对象生成一个签名 URL,有效期为 1 小时(3600 秒)。您可以将此 URL 共享给其他人,他们就可以在有效期内访问该对象。

2. 签名 Cookie

签名 Cookie 可以提供对整个存储桶的临时访问权限。您需要使用 AWS SDK 生成签名 Cookie。

使用 AWS SDK for Java 生成签名 Cookie:

import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.Bucket;AmazonS3 s3Client = AmazonS3ClientBuilder.defaultClient();
String bucketName = "my-bucket";// 生成签名 Cookie
String signedCookie = s3Client.generatePresignedUrl(new GeneratePresignedUrlRequest(bucketName, null).withMethod(HttpMethod.GET).withExpiration(DateTime.now().plusHours(1))
).toString();

这将为 my-bucket 存储桶生成一个签名 Cookie,有效期为 1 小时。您可以将此 Cookie 共享给其他人,他们就可以在有效期内访问该存储桶中的所有对象。

3. 限制访问权限

您可以在生成签名 URL 或签名 Cookie 时设置一些限制,例如:

  • 过期时间: 设置访问权限的有效期。
  • IP 地址范围: 限制只有特定 IP 地址范围可以访问。
  • HTTP 方法: 限制只允许特定的 HTTP 方法(GET、PUT 等)。
  • 请求头和查询参数: 限制只有特定的请求头和查询参数才能访问。

例如,以下命令将生成一个只允许从 192.168.1.0/24 IP 范围进行 GET 请求访问的签名 URL:

aws s3 presign s3://my-bucket/my-object \--expires-in 3600 \--ip-range 192.168.1.0/24 \--allowed-method GET

通过签名 URL 或签名 Cookie 共享 S3 上的数据是一种安全且灵活的方式,可以根据您的需求设置不同的访问权限。但请记住,一旦共享了签名 URL 或签名 Cookie,任何拥有它们的人都可以在有效期内访问相应的对象或存储桶,因此请谨慎共享。

相关文章:

AWS入门实践-S3对象存储的基本用法

AWS S3(Simple Storage Service)是亚马逊云服务提供的一种高度可扩展、安全且经济高效的对象存储服务。它允许用户在任何位置存储和检索任意数量的数据,非常适合存储和分发静态文件、备份数据以及作为数据湖的存储层。 一、S3上传和下载文件(AWS门户) …...

el-tree-v2渲染树形大数据并设置默认展开

el-tree-v2无 el-tree中默认展开节点的属性,需要自行设置 default-expand-all是否默认展开所有节点 需求:首次默认展开全部节点 实现1尝试失败:增加设置了属性 :default-expand-keys"props.treeData.map(itemitem.id)"无效&…...

损失函数篇 | YOLOv8更换损失函数之MPDIoU(23年7月首发论文)

前言:Hello大家好,我是小哥谈。损失函数是机器学习中用来衡量模型预测值与真实值之间差异的函数。在训练模型时,我们希望通过不断调整模型参数,使得损失函数的值最小化,从而使得模型的预测值更加接近真实值。不同的损失函数适用于不同的问题,例如均方误差损失函数适用于回…...

【力扣】200.岛屿数量(染色法DFS深搜)

岛屿数量 题目描述 链接:力扣:200.岛屿数量 给你一个由 1(陆地)和 0(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆…...

达梦配置ODBC连接

达梦配置ODBC连接 基础环境 操作系统:Red Hat Enterprise Linux Server release 7.9 (Maipo) 数据库版本:DM Database Server 64 V8 架构:单实例1 下载ODBC包 下载网址:https://www.unixodbc.org/ unixODBC-2.3.0.tar.gz2 编译并…...

独孤思维:高客单价项目,必须来一个

01 上次和水龙聊完以后,完成了图书电商项目小报童的梳理。 而且还让我规划后端低转高产品的设计。 目前独孤,准备以图书电商项目私教作为切入点,捆绑自己的合伙人。 设计高客单价项目。 所以,独孤4月的副业规划目标&#xff…...

学习java第三十二天

Spring 会利用AutowiredAnnotationBeanPostProcessor.postProcessMergedBeanDefinition() 找出注入点并缓存, 找注入点的流程为: 遍历当前类的所有的属性字段 Field 查看字段上是否存在 Autowired、Value、Inject 中的其中任意一个,存在则认…...

力扣150. 逆波兰表达式求值

思路:又是有消消乐的感觉,只不过这里是遇到一个操作符号,就消掉两个数字合并成一个新数;所以想到用栈结构来处理;用一个栈来放当前遍历过的数字,当遍历遇到操作符时,就把前面最新入栈的两个数取…...

hololens 2 投屏 报错

使用Microsoft HoloLens投屏时,ip地址填对了,但是仍然报错,说hololens 2没有打开, 首先检查 开发人员选项 都打开,设备门户也打开 然后检查系统–体验共享,把共享都打开就可以了...

初次在 GitHub 建立仓库以及公开代码的流程 - 公开代码

初次在 GitHub 建立仓库以及公开代码的流程 - 公开代码 References 在已有仓库中添加代码并公开。 git clone 已有仓库 将已有仓库 clone 到本地的开发环境中。 strongforeverstrong:~$ mkdir github_work strongforeverstrong:~$ cd github_work/ strongforeverstrong:~/git…...

论文笔记 - :MonoLSS: Learnable Sample Selection For Monocular 3D Detection

论文笔记✍MonoLSS: Learnable Sample Selection For Monocular 3D Detection 📜 Abstract 🔨 主流做法限制 : 以前的工作以启发式的方式使用特征来学习 3D 属性,没有考虑到不适当的特征可能会产生不利影响。 🔨 本…...

LVS、HAProxy

集群:将很多个机器组织到一起,作为一个整体对外提供服务。集群在扩展性、性能方面都可以做到很灵活。集群的分类:负载均衡集群:Load Balance。高可用集群:High Available。高性能集群:High Performance Com…...

开发环境->生产环境

1、数据迁移 不涉及docker # 以数据库用户导出数据 mysqldump -h 192.168.1.168 -P 3307 -u abragent -pabragebb17 abragent > abragent.sql# 以root用户导出数据 mysqldump -h 192.168.1.168 -P 3307 -u root -p8d3Ba1b abragent > abragent.sql 涉及docker …...

基于AI智能识别技术的智慧展览馆视频监管方案设计

一、建设背景 随着科技的不断进步和社会安全需求的日益增长,展览馆作为展示文化、艺术和科技成果的重要场所,其安全监控系统的智能化升级已成为当务之急。为此,旭帆科技(TSINGSEE青犀)基于视频智能分析技术推出了展览…...

Leetcode-894-所有可能的真二叉树-c++

题目详见https://leetcode.cn/problems/all-possible-full-binary-trees/ 主搞动态规划,因为这玩意儿我还不是很懂 关于节点个数为奇数偶数的证明请见官方题解方法一中的如下内容: 这里DP的一个主要思想是:对于任何一个满二叉树&#xff…...

Django DRF视图

文章目录 一、DRF类视图介绍APIViewGenericAPIView类ViewSet类ModelViewSet类重写方法 二、Request与ResponseRequestResponse 参考 一、DRF类视图介绍 在DRF框架中提供了众多的通用视图基类与扩展类,以简化视图的编写。 • View:Django默认的视图基类&…...

SQLite全文搜索引擎:实现原理、应用实践和版本差异

文章目录 一、实现原理1.1 倒排索引1.2 虚拟表 二、应用在工程上的实施方法2.1 创建FTS虚拟表2.2 插入数据2.3 全文搜索2.4 关联普通表2.5 更新和删除数据2.6 优化FTS虚拟表2.7 小结 三、FTS3、FTS4和FTS5的区别3.1 FTS33.2 FTS43.3 FTS53.4 小结 四、更新SQLite的FTS版本的步骤…...

day17-二叉树part04

110.平衡二叉树 (优先掌握递归)后序遍历 左右中 class Solution {public boolean isBalanced(TreeNode root) {return getHeight(root) ! -1;}//递归三部曲 确定方法的参数与返回值private int getHeight(TreeNode root){//明确终止条件if(root null){r…...

书生浦语第一次课

模型的发展 从专业模型到通用模型 书生浦语大模型全链路开源体系 2023.06.07 -> InternLM千亿参数语言大模型发布 2023.07.06 -> InternLM千亿参数语言大模型全面升级,支持8K语境、26种语言。全面开源、免费商用:InternLM-7B、全链条开源工具…...

UE小:UE5.3无法创建C++工程

当您在使用Unreal Engine (UE) 构建项目时,如果遇到以下问题: Running C:/Program Files/Epic Games/UE\_5.3/Engine/Build/BatchFiles/Build.bat -projectfiles -project"C:/UEProject/Shp\_1/Shp\_1.uproject" -game -rocket -progress Usi…...

FFmpeg获取视频详情

话不多说&#xff0c;直接上代码&#xff1a; pom依赖&#xff1a; <!--视频多媒体工具包 包含 FFmpeg、OpenCV--><dependency><groupId>org.bytedeco</groupId><artifactId>javacv-platform</artifactId><version>1.5.3</versi…...

find: paths must precede expression

find: paths must precede expression 1. find: paths must precede expression2. 请在搜索字符串上添加单引号或者双引号References 1. find: paths must precede expression strongforeverstrong:~/ForeverStrong$ find /home/strong/ForeverStrong/image_results/ -name *.…...

RabbitMQ3.x之九_Docker中安装RabbitMQ

RabbitMQ3.x之_Docker中安装RabbitMQ 文章目录 RabbitMQ3.x之_Docker中安装RabbitMQ1. 官网2. 安装1 .拉取镜像2. 运行容器 3. 访问 1. 官网 rabbitmq - Official Image | Docker Hub 2. 安装 1 .拉取镜像 docker pull rabbitmq:3.13.0-management2. 运行容器 # latest Rabb…...

vue快速入门(四)v-html

注释很详细&#xff0c;直接上代码 上一篇 新增内容 使用v-html将文本以html的方式显示 源码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, …...

第19次修改了可删除可持久保存的前端html备忘录:换了一个特别的倒计时时钟

第19次修改了可删除可持久保存的前端html备忘录:换了一个特别的倒计时时钟 <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><met…...

C++ 2024-4-1 作业

#include <iostream> using namespace std;class A { public:int a;A(int a):a(a){cout<<"A的有参构造"<<endl;} }; class B:virtual public A { public:int b;B(int a,int b):A(a),b(b){cout<<"B的有参构造"<<endl;} }; cl…...

【滑动窗口】Leetcode 串联所有单词的子串

题目解析 30. 串联所有单词的子串 本题的意思就是在目标串s中寻找能够找到的words字符串的全排列&#xff0c;返回起始位置 算法讲解 我们可以将这道题转化为寻找目标串的words字母的异位词&#xff0c;按照上一次讲解的【滑动窗口】Leetcode 找到字符串中所有字母异位词我们…...

golang channel实践代码及注意事项

在使用Go语言&#xff08;Golang&#xff09;的通道&#xff08;Channel&#xff09;时&#xff0c;有几个重要的注意点可以帮助开发者更安全、高效地使用它们进行并发编程。以下是一些关键的注意事项&#xff1a; 选择正确的通道类型&#xff1a;Go语言提供了两种类型的通道&…...

面试题:RabbitMQ 消息队列中间件

1. 确保消息不丢失 生产者确认机制 确保生产者的消息能到达队列&#xff0c;如果报错可以先记录到日志中&#xff0c;再去修复数据持久化功能 确保消息未消费前在队列中不会丢失&#xff0c;其中的交换机、队列、和消息都要做持久化消费者确认机制 由spring确认消息处理成功后…...

wpf中引用自定义字体

在WPF&#xff08;Windows Presentation Foundation&#xff09;中&#xff0c;FontFamily属性用于指定控件或文本元素使用的字体。它是一个非常基础且重要的属性&#xff0c;影响着用户界面的视觉呈现和可读性。以下是关于WPF中FontFamily属性的一些关键信息和使用方法&#x…...

wordpress搭建企业官网/网络营销百度百科

第三十二~三十三章&#xff1a;最小操作数&#xff0c;木块砌墙问题作者&#xff1a;July、caopengcs、红色标记。致谢&#xff1a;fuwutu、demo。时间&#xff1a;二零一三年八月十二日题记再过一两月&#xff0c;便又到了每年的九月十月校招高峰期&#xff0c;在此依次推荐&a…...

网上国网推广方案怎么写/知乎关键词排名优化

下面通过一段代码给大家介绍python 使用for 循环实现九九乘法表&#xff0c;具体代码如下所示&#xff1a;#for 循环实现99乘法表for i in range (1,10):for j in range (1,i1):print("{}*{} {:<4}".format(i,j,i*j),end " ")print("")prin…...

东莞常平建网站公司/百度引擎提交入口

Kubernetes创建初期&#xff0c;其本身在业界地位并不占优&#xff0c;前有长期占有主流市场的Mesos和基于Mesos的DCOS围追堵截&#xff0c;后有Docker Swarm依托自己的容器事实标准异军突起&#xff0c;反倒是Kubernetes只有谷歌的品牌。Kubernetes为什么能最后胜出&#xff0…...

游戏怎么做充值网站/国家认可的赚钱软件

前端字体网站收藏 Fonts 提供免费字体以及基于字体的工具的网站 Github项目地址 Design Resources For Developers 网站 描述Google Fonts包含约1000个免费授权的字体家族库DaFont免费可下载字体的存档Use & Modify包含优美、高雅、朋克、专业、不…...

厦门外贸网站建设多少钱/百度如何做推广

arpspoof是一个好用的ARP欺骗工具&#xff0c;Kali linux中自带了该工具&#xff0c;在ubuntu中&#xff0c;安装它只需运行命令&#xff1a;sudo apt-get install dsniff安装完成后&#xff0c;输入命令&#xff1a;man arpspoof 可以查看使用手册&#xff0c;2.4版本的手册内…...

wordpress图片打叉/微信公众号软文怎么写

点击查看全文 刚刚过去的苹果秋季发布会上&#xff0c;万众瞩目的iPhoneX 手机亮相。十年前&#xff0c;首代iPhone开启了颠覆键盘功能机的序幕&#xff0c;十年过去了&#xff0c;智能触屏手机已经彻底普及。 关注个人智能手机升级的IT人士&#xff0c;是否也了解你的企业数仓…...