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,任何拥有它们的人都可以在有效期内访问相应的对象或存储桶,因此请谨慎共享。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/511076.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【zlm】音视频流与音频流合并的设计

目录 设想一 设想二 方案三 关键技术 测试语句 测试脚本 参考文档 设想一 //开始录制_option.mp4_save_path custom_path;_option.mp4_max_second max_second;vector<Track::Ptr> mytracks getTracks();auto src MediaSource::find( DEFAULT_VHOST, "1&quo…

RN实现全局数据共享(非Redux,使用原生内置的方法实现)

下面这个方法是在RN使用全局数据共享的,使用原生React的方式搞得,相对于Redux配置相对简单,适合小型项目 项目内创建MyContext.js // MyContext.jsimport React from react;const MyContext React.createContext();export default MyContext;App.js引入 // App.jsimport Rea…

浏览器工作原理与实践--WebAPI:XMLHttpRequest是怎么实现的

在上一篇文章中我们介绍了setTimeout是如何结合渲染进程的循环系统工作的&#xff0c;那本篇文章我们就继续介绍另外一种类型的WebAPI——XMLHttpRequest。 自从网页中引入了JavaScript&#xff0c;我们就可以操作DOM树中任意一个节点&#xff0c;例如隐藏/显示节点、改变颜色、…

github 仓库 修改开源协议

记录一下如何修改协议。 然后commit到你想要的主干或者分支就可以了。

视频汇聚/安防监控/EasyCVR平台播放器EasyPlayer更新:新增【性能面板】

视频汇聚/安防监控/视频存储平台EasyCVR基于云边端架构&#xff0c;可以在复杂的网络环境中快速、灵活部署&#xff0c;平台视频能力丰富&#xff0c;可以提供实时远程视频监控、视频录像、录像回放与存储、告警、语音对讲、云台控制、平台级联、磁盘阵列存储、视频集中存储、云…

什么是Redis共享Session?

如图所示&#xff0c;一个分布式部署的Web服务器将用户的Session信息&#xff08;例如用户登录信息&#xff09;&#xff0c;保存在各自服务器内部。这样会造成一个问题&#xff0c;在分布式部署多个Web服务器时&#xff0c;我们通常会采用负载均衡算法&#xff0c;将多个用户的…

探索设计模式的魅力:AI大模型如何赋能C/S模式,开创服务新纪元

​&#x1f308; 个人主页&#xff1a;danci_ &#x1f525; 系列专栏&#xff1a;《设计模式》《MYSQL应用》 &#x1f4aa;&#x1f3fb; 制定明确可量化的目标&#xff0c;坚持默默的做事。 &#x1f680; 转载自热榜文章&#xff1a;探索设计模式的魅力&#xff1a;AI大模型…

全能视频下载工具:支持 100+ 网站 | 开源日报 No.212

KurtBestor/Hitomi-Downloader Stars: 18.6k License: NOASSERTION Hitomi-Downloader 是一个桌面实用程序&#xff0c;可以从各种网站下载图片/视频/音乐/文本等。 该项目的主要功能、关键特性和核心优势包括&#xff1a; 简单清晰的用户界面下载加速单个任务支持 24 个线程…

数据库之迁移常规操作(Postgresql篇)

一、docker安装postgresql 1. 拉取postgres docker pull postgres2. 创建容器 注&#xff1a;默认登录账户postgres, 密码123456, 对外暴露端口5432, 卷映射&#xff1a;可在物理机修改数据库配置文件 引用文章查看&#x1f440; docker run --name postgres -e POSTGRES_P…

Linux提权!!!

上一篇文章讲了Windows的提权&#xff0c;那么这篇文章就来讲一下Linux的提权 1.SUID提权 suid权限 作用&#xff1a;让普通用户临时拥有该文件的属主的执行权限&#xff0c;suid权限只能应用在二进制可执行文件&#xff08;命令&#xff09;上&#xff0c;而且suid权限只能设置…

腾讯C++面试题分享

面试专栏&#xff1a;http://t.csdnimg.cn/0i089 目录 1.引言 2.分析 2.1.在C语言中定义一个全局变量&#xff0c;但不初始化&#xff0c;它默认的值是多少&#xff1f; 2.2.-2的源码&#xff0c;反码、补码分别是什么&#xff1f;-3呢&#xff1f;它的公式是什么&#xff…

Java | Leetcode Java题解之第4题寻找两个正序数组的中位数

题目&#xff1a; 题解&#xff1a; class Solution {public double findMedianSortedArrays(int[] A, int[] B) {int m A.length;int n B.length;if (m > n) { return findMedianSortedArrays(B,A); // 保证 m < n}int iMin 0, iMax m;while (iMin < iMax) {int…

二维相位解包理论算法和软件【全文翻译-二维相位解缠的离散形式 (2.5)】

我们已经指出,二维相位解包相当于在覆盖相关领域的路径上对相位梯度进行积分。在实践中,我们当然必须处理采样数据。然而,为了做到这一点,我们必须定义离散域中的二维相位解包问题,并明确本书中将会用到的相关术语。 从最一般、限制最少的意义上讲,二维相位解包是一个不…

实验四 微信小程序智能手机互联网程序设计(微信程序方向)实验报告

请编写一个用户登录界面&#xff0c;提示输入用户名和密码进行登录&#xff1b; 代码 index.wxml <view class"user"> <form bindreset""> <view>用户名&#xff1a;</view><input type"text"name""/>…

mysql锁表问题

问题描述 偶尔应用日志会打印锁表超时回滚 org.springframework.dao.CannotAcquireLockException: ### Error updating database. Cause: com.mysql.cj.jdbc.exceptions.MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transactionmysql锁…

C刊级 | Matlab实现GWO-BiTCN-BiGRU-Attention灰狼算法优化双向时间卷积双向门控循环单元融合注意力机制多变量回归预测

C刊级 | Matlab实现GWO-BiTCN-BiGRU-Attention灰狼算法优化双向时间卷积双向门控循环单元融合注意力机制多变量回归预测 目录 C刊级 | Matlab实现GWO-BiTCN-BiGRU-Attention灰狼算法优化双向时间卷积双向门控循环单元融合注意力机制多变量回归预测效果一览基本介绍程序设计参考…

ArcGIS Pro打不开Excel?Microsoft驱动程序安装不上?

刚用ArcGIS pro的朋友们可能经常在打开xls或者xlsx文件的时候都会提示&#xff0c;未安装所需的Microsoft驱动程序。 怎么办呢&#xff1f;当然&#xff0c;按照提示装一下驱动就会好吗&#xff1f;有什么状况会出现&#xff1f;有什么临时替代方案呢&#xff1f; 全文目录&a…

C++的并发世界(二)——初识多线程

0.引言 C的并发世界&#xff08;零&#xff09;和C的并发世界&#xff08;一&#xff09;的东西真的对于我这种初学者难以理解&#xff0c;我确定从第一个多线程案例进行学习归纳总结。 1.多线程的目的 ①将耗时的任务进行分解&#xff0c;进行实时响应;   ②充分利用多核CP…

ICMP,ARP协议,免费ARP

ICMP:ping检测链路通断&#xff0c;到目的地的连通性。 internet网控制消息协议&#xff0c;工作在网络层。 ttl超时&#xff0c;也是icmp报文。

LeetCode刷题记(一):1~30题

1. 两数之和 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案里不能重复出现。 你可以…