返回顶部
首页 > 资讯 > 后端开发 > Python >AWS之s3
  • 925
分享到

AWS之s3

AWS 2023-01-31 02:01:43 925人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

AWS已在中国落地!详情请猛击此处。S3是AWS中的存储服务,为用户随时随地存储和访问大量数据提供了WEB service接口,为开发者提供了一种可以快速低廉访问数据存储的服务。并且,开发者可以利用s3实现ec2访问大量的数据资源。其价格低

AWS已在中国落地!详情请猛击此处。


S3是AWS中的存储服务,为用户随时随地存储和访问大量数据提供了WEB service接口,为开发者提供了一种可以快速低廉访问数据存储的服务。并且,开发者可以利用s3实现ec2访问大量的数据资源。其价格低廉,受到了广泛开发者的青睐。


s3中均是以bucket,key来区分数据,类似与文件系统中的文件夹,文件的概念。有所不同的是,s3中没有文件系统中的层级关系,只有bucket-key两层,key保存在指定的bucket中。当然key的名称可以自己定义,你可以将‘/'添加在key名字中(如'dir1/dir2/file'),以作为子文件夹,但s3并不会将其视为文件夹的层级结构,在查看bucket的key时,返回的结果也不会考虑。


既然是Web service,那么其使用方式就是set_contents_from_file非常简单的,不外乎两种形式,一种是用AWS的command line工具(cli),另一种是aws利用各种开发语言的sdk进行数据的存储、访问、修改。下面分别简单介绍cli和aws在python中的sdk boto中,s3的使用方法。


1. cli

在这里我们假设已经配置好cli的key,关于配置可以参看此文。

shell风格类似地,cli提供了以下几种对s3的方法:

单个文件操作:
cp, mv, rm (single local file and s3 object operations)
文件夹相关操作:

sync, mb, rb, ls (directory and s3 prefix operations)

其中,对于文件夹操作,可以利用--recursive和--exclude实现文件夹的递归操作以及过滤操作。

查看当前帐户中的所有buckets

$ aws s3 ls
$ aws s3 ls s3://mybucket


When you may need to specify the region of the bucket

$ aws s3 rm s3://mybucket --recursive --region us-east-1


# Uploading local files onto s3

$ aws s3 cp myfolder s3://mybucket/myfolder --recursive


# A sync command makes it easy to synchronize the contents of a local folder with a copy in an S3 bucket.

$ aws s3 sync myfolder s3://mybucket/myfolder --exclude *.tmp


You can also get help with the command:

$ aws s3 help


2.boto

在这里我们假设已经配置好boto的key,关于配置可以参看此文。

1)创建s3的连接:

conn=S3Connection(access_key_id, secret_key)

2)创建bucket:

bucket=conn.create_bucket(bucket_name, headers=None, location='', policy=None)

你需要注意你的bucket_name的设置,可以将其考虑成域名的格式,使用period(.)进行层级划分,关于bucket_name设置的规则请猛击这里。


你可以通过设置location来安排你上传的位置,默认是us-east-1,其他位置如下:

class boto.s3.connection.LocationAPNortheast = 'ap-northeast-1'
APSoutheast = 'ap-southeast-1'
APSoutheast2 = 'ap-southeast-2'
CNNorth1 = 'cn-north-1'
DEFAULT = ''
EU = 'EU'
SAEast = 'sa-east-1'
USWest = 'us-west-1'
USWest2 = 'us-west-2'

       需要注意的是,在创建bucket你有可能遇到

       创建bucket时你有可能会遇到S3CreateError的异常,返回BucketAlreadExists的错误,这是由于在s3中所有用户的bucket都放在同一层,如果你创建的bucket名称比较常见,如test,则很有可能已被其他用户使用,从而出现该问题。

       在boto的reference文档中提到了这一点,原文如下:

"Well, the thing you have to know aboutbuckets is that they are kind of like domain names.  It’s one flat namespace that everyone who uses S3 shares.  So, someone has already createa bucket called “mybucket” in S3 and that means no one else can grab that bucket name.  So, you have to come up with a name that hasn’t been taken yet.For example, something that uses a unique string as a prefix.  YourAWS_ACCESS_KEY (NOT YOUR SECRET KEY!) could work but I’ll leave it toyour imagination to come up with something.  I’ll just assume that youfound an acceptable name."


3)设置bucket的访问控制规则:

bucket.set_acl('public-read')

4)写入key:

key=bucket.new_key(file_path)
key.set_contents_from_filename(os.path.join(dir_path, file_path))

或者使用set_contents_from_file


5)读取所有的key

for bucket in conn.get_all_buckets():
    for key in bucket.get_all_keys():
        print bucket, key.key, key.md5


需要注意的是get_all_buckets()函數是一个底层的实现,其一次最多返回1000个key(one paging of results),因此在实际中可以使用以下方式

for key in [key for key in bucket]:
    key.get_contents_to_filename(local_file_path)


更多关于boto操作s3,可以参看boto的reference

Http://boto.readthedocs.org/en/latest/ref/s3.html


后面我还会介绍如何使用boto操作ec2,并在ec2上构建、配置自己的hadoop平台,敬请关注!

--结束END--

本文标题: AWS之s3

本文链接: https://lsjlt.com/news/185550.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • AWS之s3
    AWS已在中国落地!详情请猛击此处。S3是AWS中的存储服务,为用户随时随地存储和访问大量数据提供了Web service接口,为开发者提供了一种可以快速低廉访问数据存储的服务。并且,开发者可以利用s3实现ec2访问大量的数据资源。其价格低...
    99+
    2023-01-31
    AWS
  • Python 操作 AWS S3
    详情 https://boto3.readthedocs.io/en/latest/reference/services/s3.htm pip install boto3 == 1.6.12 #### pip install bo...
    99+
    2023-01-31
    操作 Python AWS
  • aws S3使用总结
      最近公司要上海外项目,要用到亚马逊。可把我折腾的够呛。好多坑。不得不说亚马逊的东西挺好最起码服务器性能比阿里云强多了。但在人性化这一点做的不如阿里。反正是各有千秋  这里说一下我的案例:要把图片cdn上的图片传到S3。这里我试了很多方法...
    99+
    2023-01-31
    aws
  • s3cmd管理aws-s3桶
    使用命令行工具s3cmd管理亚马逊AWS S3资源.md 尽管存在awscli这样的官方工具,但这些工具功能不够全面,于是一些第三方工具应运而生。 s3cmd安装通过pip可以直接安装,没有pip的需要安装pip pip search ...
    99+
    2023-01-31
    s3cmd aws
  • AWS S3在Laravel中如何使用
    今天小编给大家分享一下AWS S3在Laravel中如何使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。AWS S3 为我...
    99+
    2023-06-29
  • AWS S3 让IAM用户可以list
    使用Cloudberry Explorer是,如果没有加入此权限,用户是无法在打开软件的时候自动让其列出所有S3 bucket的,因此在IAM中需要给用户加上这个S3的Permission policy如下: {"Statement": ...
    99+
    2023-01-31
    用户可以 AWS list
  • php对接AWS S3云存储,上传S3及访问权限问题
    首先先下载sdk包 https://docs.aws.amazon.com/zh_cn/sdk-for-php/v3/developer-guide/getting-started_installat...
    99+
    2023-10-11
    s3 php
  • aws s3桶备份工具 s3cmd安装配
    在防止个人和工作文件丢失或受损方面,已安装的数据备份系统是远远不够的。理想情况下,数据应该安全可靠地存储一个或多个远离您家或办公室的地方。所以,即使已经在优盘里备份了(过时的)文档,并在Google Drive同步备份了一部分,再增加一种备...
    99+
    2023-01-31
    备份工具 aws s3cmd
  • AWS S3 ListObjectsV2 返回“文件夹”作为对象
    问题内容 我试图列出 s3 存储桶中特定目录下的所有文件(我知道 s3 并没有真正的目录。)。 结构是: bucket-名称:folder1/folder2/folder3/file ...
    99+
    2024-02-08
  • 在适用于 Go 的 aws-sdk-go-v2 中添加 AWS s3 的 Presign URL 过期
    有志者,事竟成!如果你在学习Golang,那么本文《在适用于 Go 的 aws-sdk-go-v2 中添加 AWS s3 的 Presign URL 过期》,就很适合你!文章讲解的知识点主要包括,若...
    99+
    2024-04-05
  • 如何将文件从AWS S3存储桶复制到Azure Blob存储
    php小编苹果将为您介绍如何将文件从AWS S3存储桶复制到Azure Blob存储的方法。在云计算时代,跨云平台的数据迁移变得越来越常见。AWS S3和Azure Blob存储都是两...
    99+
    2024-02-13
  • [ 云计算 | AWS 实践 ] Java 如何重命名 Amazon S3 中的文件和文件夹
    本文收录于【#云计算入门与实践 - AWS】专栏中,收录 AWS 入门与实践相关博文。 本文同步于个人公众号:【云计算洞察】 更多关于云计算技术内容敬请关注:CSDN【#云计算入门与实践 - AWS...
    99+
    2023-10-24
    云计算 aws 云平台 java
  • 为什么在内存中下载比从 aws s3 在文件系统中下载慢?
    为什么在内存中下载比从AWS S3在文件系统中下载慢? 在下载文件时,我们通常会选择从AWS S3存储桶中下载到本地文件系统。然而,有时候我们会发现,使用内存中的下载方式比直接从S3...
    99+
    2024-02-09
    overflow
  • 如何从AWS S3下载对象到内存中并通过Go中的请求发送它?
    问题内容 有人可以帮我解决尝试从 s3 下载文件时遇到的这个错误吗? 所以我想通过 go gin 创建存储服务 api,并且我想要一个使用 s3 对象密钥下载对象然后将此对象发送回客户...
    99+
    2024-02-08
  • Amazon EBS vs S3 vs
      在这篇文章我们解决了几个问题: 1、amazon的存储产品比较;介绍不同存储的使用场景分析; 2、s3-hosted p_w_picpaths 和EBS-backed p_w_picpaths的比较分析; 3、持久化存储和非持久存储在a...
    99+
    2023-01-31
    Amazon EBS
  • [ 云计算 | AWS ] Java 应用中使用 Amazon S3 进行存储桶和对象操作完全指南
    文章目录 一、前言二、所需 Maven 依赖三、先决必要的几个条件信息四、创建客户端连接五、Amazon S3 存储桶操作5.1. 创建桶5.2. 列出桶 六、Amazon S3 对象操作6.1. 上传对象6.2. 列出对象...
    99+
    2023-08-30
    云计算 aws java 云平台
  • EBS和S3的区别
    最大的区别是:EBS是块存储,S3是对象存储。EBS仅能与EC2实例结合使用。你可以把EBS想象成EC2的硬盘,如果EC2的实例挂掉,那么用来建立EC2的那个EBS卷也会挂掉(想像一下你装了windows然后把windows格了,那么C盘的...
    99+
    2023-01-31
    区别 EBS
  • 利用s3fs 将 s3 bucket 挂
    S3fs是基于FUSE的文件系统,允许Linux和Mac Os X挂载S3的存储桶在本地文件系统,S3fs能够保持对象原来的格式。关于s3fs-fuse的功能、使用方法、下载可参考:https://github.com/s3fs-fuse/...
    99+
    2023-01-31
    s3fs bucket
  • [ 云计算 | AWS 实践 ] Java 应用中使用 Amazon S3 进行存储桶和对象操作完全指南
    本文收录于【#云计算入门与实践 - AWS】专栏中,收录 AWS 入门与实践相关博文。 本文同步于个人公众号:【云计算洞察】 更多关于云计算技术内容敬请关注:CSDN【#云计算入门与实践 - AWS】专栏。 本系列已更新博文: [ 云计算...
    99+
    2023-12-23
    云计算 aws java 云平台
  • AWS Networking
    pcx-1a2b1a2b) above, assume the VPCs have the following information:VPC A: IPv6 CIDR block is 2001:db8:1234:1a00::/...
    99+
    2023-06-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作