AWS入门实践-S3对象存储的基本用法
AWS S3(Simple Storage Service)是亚马逊云服务提供的一种高度可扩展、安全且经济高效的对象存储服务。它允许用户在任何位置存储和检索任意数量的数据,非常适合存储和分发静态文件、备份数据以及作为数据湖的存储层。
一、S3上传和下载文件(AWS门户)
1、创建 S3 存储桶
-
登录AWS控制台
访问 https://console.aws.amazon.com/ 并使用您的AWS账户凭证登录。 -
打开S3服务控制台
在AWS服务列表中,找到"存储"部分,然后选择"S3"服务。 -
创建存储桶
在S3控制台中,单击"创建存储桶"按钮。 -
命名存储桶
输入一个全局唯一的存储桶名称。存储桶名称必须遵循特定的命名规则,例如只能包含小写字母、数字和连字符(-)。 -
选择AWS区域
选择要在其中创建存储桶的AWS区域。通常选择离您的应用程序或用户最近的区域,以获得更好的性能和更低的延迟。 -
配置存储桶设置(可选)
根据您的需求,您可以配置存储桶的其他设置,例如:- 存储桶所有权
- 存储桶版本控制
- 存储桶加密
- 对象锁定
- 标签
- 静态网站托管等
-
创建存储桶
检查您的设置,然后单击"创建存储桶"按钮。
2、上传文件
- 选择要上传文件的目标存储桶
- 点击 "上传" 按钮
- 点击 "添加文件" 或“添加文件夹”并从本地选择要上传的文件
- 可以选择加密、元数据等高级选项(可选)
- 点击 "上传" 开始上传文件
3、下载文件
-
选择包含目标文件的存储桶
- 在 S3 控制台中,找到并选择包含您要下载文件的存储桶
-
选择要下载的文件
- 在存储桶内容列表中,找到并选中您要下载的文件
- 您可以通过文件名、前缀等条件过滤文件列表
-
下载文件
- 选中文件后,点击顶部的 "下载" 按钮
- 或者右键单击文件,选择 "下载" 选项
- 浏览器会提示您保存文件到本地
-
选择保存位置并确认下载
- 选择要将文件保存到本地的目录路径
- 点击 "保存" 按钮开始下载文件
-
等待下载完成
- 根据文件大小,下载可能需要一些时间
- 下载完成后,您可以在指定的本地目录中找到该文件
二、S3上传和下载文件(AWS命令行)
1、AWS命令行工具的安装
在 Windows 上安装和配置 AWS CLI 的步骤如下:
-
安装 AWS CLI
- 下载 AWS CLI MSI 安装程序: https://awscli.amazonaws.com/AWSCLIV2.msi
- 运行下载的 MSI 安装程序,按照提示进行安装。
-
验证 AWS CLI 安装
打开命令提示符或 PowerShell,输入以下命令验证安装:
aws --version
如果安装成功,将显示 AWS CLI 版本。
-
配置 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
替换为您的实际凭证。
-
-
验证配置
您可以运行以下命令来验证配置是否正确:
aws iam get-user
如果一切配置正确,该命令将显示关于您的 AWS 用户的信息。如果出现错误,请检查您的凭证是否正确。
-
其他配置选项
您还可以配置其他选项,如默认区域和输出格式。例如:
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月的副业规划目标ÿ…...
学习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的一个主要思想是:对于任何一个满二叉树ÿ…...

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…...

springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...
pam_env.so模块配置解析
在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...
C# SqlSugar:依赖注入与仓储模式实践
C# SqlSugar:依赖注入与仓储模式实践 在 C# 的应用开发中,数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护,许多开发者会选择成熟的 ORM(对象关系映射)框架,SqlSugar 就是其中备受…...

从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践
作者:吴岐诗,杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言:融合数据湖与数仓的创新之路 在数字金融时代,数据已成为金融机构的核心竞争力。杭银消费金…...
React从基础入门到高级实战:React 实战项目 - 项目五:微前端与模块化架构
React 实战项目:微前端与模块化架构 欢迎来到 React 开发教程专栏 的第 30 篇!在前 29 篇文章中,我们从 React 的基础概念逐步深入到高级技巧,涵盖了组件设计、状态管理、路由配置、性能优化和企业级应用等核心内容。这一次&…...

DAY 45 超大力王爱学Python
来自超大力王的友情提示:在用tensordoard的时候一定一定要用绝对位置,例如:tensorboard --logdir"D:\代码\archive (1)\runs\cifar10_mlp_experiment_2" 不然读取不了数据 知识点回顾: tensorboard的发展历史和原理tens…...
LangChain【6】之输出解析器:结构化LLM响应的关键工具
文章目录 一 LangChain输出解析器概述1.1 什么是输出解析器?1.2 主要功能与工作原理1.3 常用解析器类型 二 主要输出解析器类型2.1 Pydantic/Json输出解析器2.2 结构化输出解析器2.3 列表解析器2.4 日期解析器2.5 Json输出解析器2.6 xml输出解析器 三 高级使用技巧3…...

篇章一 论坛系统——前置知识
目录 1.软件开发 1.1 软件的生命周期 1.2 面向对象 1.3 CS、BS架构 1.CS架构编辑 2.BS架构 1.4 软件需求 1.需求分类 2.需求获取 1.5 需求分析 1. 工作内容 1.6 面向对象分析 1.OOA的任务 2.统一建模语言UML 3. 用例模型 3.1 用例图的元素 3.2 建立用例模型 …...
npm install 相关命令
npm install 相关命令 基本安装命令 # 安装 package.json 中列出的所有依赖 npm install npm i # 简写形式# 安装特定包 npm install <package-name># 安装特定版本 npm install <package-name><version>依赖类型选项 # 安装为生产依赖(默认&…...