amazon s3的声明性配置管理和部署工具

s3tup的Python项目详细描述


#s3tup

python包,通过简单的声明性yaml文件为amazon s3提供配置管理和部署。



因为通过boto编写用于配置和部署到s3的自定义脚本是一个很大的痛苦。尽管像s3sync这样的工具已经存在,但它们缺乏健壮的配置选项,而且您通常仍然需要一些自定义或外部脚本来让它们完全按照您的要求来执行。

使用s3tup配置非常简单。它使用etag只上载和删除需要更改的文件,就像周围的许多其他工具一样,但也支持将配置同步到已上载的文件,使您的配置真正具有声明性。

$pip install s3tup

从源代码安装:

$git clone git://github.com/heyimalex/s3tup.git
$cd s3tup
$python setup.py

只需写出一个配置文件(以下设置一个简单的网站):

``yaml
config.yml
--
-bucket:example bucket
rsync:/path/to/your/website
key配置:
-canted\u acl:public read
reduced\u冗余:true
-patterns:['static/*']
缓存控制:'max age=32850000'
网站:
<;网站配置xmlns='http://s3.amazonaws.com/doc/2006-03-01/'>;
<;indexdocument>;
<;suffix>;index.html<;suffix>;
<;indexdocument>;
<;错误文档>;
<;key>;404<;key>;
<;/errordocument>;
<;/websiteconfiguration>;
````

设置aws_access_key_id和aws_secret_access_key env vars,然后运行:

$s3tup config.yml

配置文件可以根据需要简单或健壮,repo中有几个示例可以帮助您解决问题。

制作它们。

或者,您可以在python中使用s3tup作为库。

``python
from s3tup.connection import connection
from s3tup.bucket import bucket

conn=connection()
b=bucket(conn,"test bucket")
b.canted acl='public read'
b.sync()
```

目前缺少这里的文档,但我正在处理它(源代码是一个简短的阅读)。


config file

s3tup配置文件是纯yaml。基础是下面定义的bucket配置列表。这里有一个示例配置(https://github.com/heyimalex/s3tup/blob/master/examples/complete.yml)可以帮助您,我会尽量让它保持最新。因为s3tup只是s3 rest api上的一个薄包装,所以理解所有这些选项实际作用的最好方法是查阅[online documentation for s3](http://docs.aws.amazon.com/amazons3/latest/api/api rest.html)。

**注意**:将选项设置为"none",而不将其设置为完全不是一回事。对于许多字段,"none"将断言配置选项根本没有设置。


所有其他字段都是可选的。


field default description
:——————————————————————————————————————————————————————————————————————————————————————————————————有效值:eu、eu-west-1、us-west-1、us-west-2、ap-东南-1、ap-东南-2、ap-东北-1、sa-east-1、空字符串(适用于美国经典地区)。注意,bucket的region不能改变;如果bucket已经存在且区域不匹配。
存储桶的[存储ACL](http://docs.aws.amazon.com/amazons3/latest/dev/acloverview.html canned acl)已存在。有效值:private、public read、public read write、authenticated read、bucket owner read、bucket owner full control。
website;bucket的网站配置。有效值:字符串XML网站配置(详细信息请参见[此](http://docs.aws.amazon.com/amazons3/latest/api/restbucketputwebsite.html)页)或"无",它们将一起删除此存储桶的网站配置。
acl此存储桶上设置的acl。有效值:一个字符串XML ACL(详细信息见[此](http://docs.aws.amazon.com/amazons3/latest/api/restbucketputcors.html)页)或"none",它将设置存储桶上的defualt ACL。
cors存储桶的CORS配置。有效值:字符串XML CORS配置(详见[本](http://docs.aws.amazon.com/amazons3/latest/api/restbucketputcors.html)页)或"无",它们将一起删除此存储桶的CORS配置。
lifecycle存储桶的生命周期配置。有效值:字符串XML生命周期配置(详细信息请参见[此](http://docs.aws.amazon.com/amazons3/latest/api/restbucketputfecycle.html)页)或"无",它们将一起删除此存储桶的生命周期配置。
记录buck的日志配置et.有效值:字符串XML日志记录配置(详细信息见[此](http://docs.aws.amazon.com/amazons3/latest/api/restbucketputlogging.html)页)或"无",它们将一起删除此存储桶的日志记录配置。
通知桶。有效值:字符串XML通知配置(详细信息请参见[此](http://docs.aws.amazon.com/amazons3/latest/api/restbucketputnotification.html)页)或"无",它们将一起删除此存储桶的通知配置。
policy此存储桶上设置的策略。有效值:字符串JSON策略(详细信息请参见[此](http://docs.aws.amazon.com/amazons3/latest/dev/accessPolicyLanguage_howtowritepolicies.html)页)或"无",它们将从该存储桶中一起删除该策略。
标记存储桶的标记配置。有效值:字符串XML标记配置(详细信息见[此](http://docs.aws.amazon.com/amazons3/latest/api/restbucketputtagging.html)页)或"无",将删除此存储桶中的所有标记。
版本控制布尔值,表示是否启用或挂起版本控制。注意:一旦对bucket启用了版本控制,就不能禁用,只能挂起!任何启用版本控制的bucket都不能设置生命周期配置!
key_config获取密钥配置指令列表,并将它们应用于存储桶中的所有适用密钥。有关详细信息,请参阅"密钥配置"一节。
rsync;获取rsync配置dict或它们的列表,并"rsyncs"一个包含bucket的文件夹。有关详细信息,请参阅rsync configuration一节。
redirects[]获取[key,redirect location]对的列表,并将在"key"处创建一个零字节对象,该对象将重定向到您指定的任何重定向位置。


定义应用于匹配器字段匹配的所有密钥的密钥配置。这些配置按它们出现的顺序应用,冲突字段将被最后应用的配置覆盖。bucket配置包含一系列关键配置,因此您可以拥有任意数量的配置。请记住,这些选项中的许多不是等幂的;如果您已经在s3键上设置了配置,那么s3tup将在同步时覆盖它。


field default description
:----她在下面的字段中。
reduced_redundancy_false使用reduced redundancy storage的布尔选项。
encrypted false使用服务器端加密的布尔选项。
密钥的[加密的ACL](http://docs.aws.amazon.com/amazons3/latest/dev/acloverview.html canned acl)。
此项的acl字符串xml acl策略。
cache control none cache control头的字符串值。
content disposition none content disposition头的字符串值。
content encoding none content encoding头的字符串值。S3tup不会猜测内容编码。
内容语言头的content_language_none字符串值。
内容类型头的content_type none字符串值。如果未显式设置,s3tup将根据扩展名进行最佳猜测。
expires none expires头的字符串值。
要在键上设置的元数据头的元数据{}dict。


一个S3桶。上载的所有密钥都由任何现有密钥配置配置。记住,rsync配置定义包含matcher字段,任何不匹配的*本地路径*(相对于同步目录)都不会被rsynced。这有助于在rsync期间忽略某些文件或文件夹(基本上模拟s3cmd的sync的include/exclude/rinclude/rexclude选项)。匹配过程在相对于src的本地路径名上运行。


字段默认描述
:————————————————————————————————————————————————————————————————————————————————————————————————————————————————尾随斜杠并不重要。
dest''''(可选)允许您与S3上的特定文件夹进行rsync。
delete false选项删除存储桶中不存在于本地的键。如果存在冲突,其他rsync和重定向将覆盖此项。


它们的目的是尽可能直观地工作,但以明确的名义:

如果"patterns"和"regex"都不存在,则除"ignore_patterns"和"ignore_regex"匹配的键之外的所有键都将匹配。如果存在"patterns"或"regex",则只匹配"patterns"或"regex"匹配且不与"ignore_patterns"或"ignore_regex"匹配的键。嘘。

记住一定要把名单传进去!

字段默认值描述
:————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————ttrens exclude

cli


位置参数:

**config**-配置文件的相对或绝对路径

s3tup
-**--rsync**-仅上载和删除修改和删除的密钥。无密钥同步、无重定向、无存储桶配置。
-**-c**<;concurrency>;-要发出的并发请求数。任何低于1的都是线性的。默认为5.
-**-v,--verbose**-增加输出详细度
-**-q,--quiet**-使所有输出静音
-**--访问密钥ID**<;访问密钥ID>;-您的AWS访问密钥ID
-**--机密访问密钥**<;机密访问密钥>;-您的AWS机密访问密钥

o

该项目处于早期开发阶段,在我可以自信地说它已经准备好生产之前,还有大量的工作要做。但是它正在慢慢地到达那里。

*需要优雅地处理对象同步>;5gb
*更大的测试套件
*实现请求者付费
*实现mfa删除

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何使用从PreparedStatement返回的RowId。getGeneratedKeys()?   selenium chrome驱动程序中下一个网站url的java空白页   java如何将参数化匿名类转换为lambda?   java JUnit在AfterClass上获取测试结果   java将动态XML/JSON内容与静态标记化负载进行比较,并检索标记值   java共享一个需要数据持久性的项目[数据库]   java在调用方法时获取意外的参数类型。getParameterTypes()   java如何用jdbc在swing中用另一个字段替换外键?   需要java Jersey Tomcat CDI依赖项解释   java如何生成UML图   java如何编写Jersey rest服务可以通过给定的spring代码访问   SpringMaven存储库管理器Nexus与Java依赖项的Artifactory   java将包从另一个项目导入eclipse中的当前项目   加密Java使用密码加密文件