我想为我的帐户启用cloudtrail日志,因此需要创建一个s3存储桶。我想使用Boto3自动完成此任务。目前我正在使用以下脚本
sess = Session(aws_access_key_id=tmp_access_key,
aws_secret_access_key=tmp_secret_key, aws_session_token=security_token)
s3_conn_boto3 = sess.client(service_name='s3', region_name=region)
bucket = s3_conn_boto3.create_bucket(Bucket=access_log_bucket_name,
CreateBucketConfiguration={'LocationConstraint':'us-east-1'},
ACL='authenticated-read',..).
我是Boto3的新手,因此我对其他参数的使用知之甚少,例如 GrantWrite , GrantWriteACP 等。
请帮我提供一些关于创建s3存储桶和启用cloudtrail日志的代码片段。
由于
答案 0 :(得分:4)
阅读以下文档
http://boto3.readthedocs.io/en/latest/guide/migrations3.html
创建连接
Boto 3同时拥有低级客户端和更高级别的资源。对于Amazon S3,更高级别的资源与Boto 2.x的s3模块最相似:
Boto 2.x import boto
s3_connection = boto.connect_s3()
Boto 3
import boto3
s3 = boto3.resource('s3')
制作广告
在Boto 2和Boto 3中创建存储桶非常相似,只是在Boto 3中必须通过关键字参数传递所有操作参数,并且必须手动指定存储桶配置:
Boto 2.x
s3_connection.create_bucket('mybucket')
s3_connection.create_bucket('mybucket', location=Location.USWest)
Boto 3
s3.create_bucket(Bucket='mybucket')
s3.create_bucket(Bucket='mybucket', CreateBucketConfiguration={
'LocationConstraint': 'us-west-1'})
存储数据
从文件,流或字符串存储数据非常简单:
Boto 2.x
from boto.s3.key import Key
key = Key('hello.txt')
key.set_contents_from_file('/tmp/hello.txt')
Boto 3
s3.Object('mybucket', 'hello.txt').put(Body=open('/tmp/hello.txt', 'rb'))
答案 1 :(得分:3)
首先,在boto3中,如果使用“aws configure”设置安全性,则无需声明“sess”部分(http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)
# if you already done aws configure
import boto3
s3 = boto3.client("s3")
s3.create_bucket(Bucket="mybucket", ....)
其次,是错误的boto3文档无法链接正确的信息。这可以在boto3 pdf,第2181页(https://media.readthedocs.org/pdf/boto3/latest/boto3.pdf)
下找到电子邮件:Grantee对象中的值是已注册的电子邮件 AWS账户的地址。
Grantee :您希望有权访问转码文件和播放列表的AWS用户或组。要识别用户或组,您可以 指定AWS账户的规范用户ID,原始访问权限 CloudFront分配的身份,已注册的电子邮件地址 AWS账户或预定义的Amazon S3组
更简单的解决方案就是使用策略设置(http://support.cloudcheckr.com/getting-started-with-cloudcheckr/preparing-your-aws-account/aggregate-cloudtrail/)。你可以使用put_bucket_policy()转换整个东西,跳过可怕的GrantWrite,GrantWriteACP
答案 2 :(得分:2)
要在AWS上使用Python创建S3存储桶,您需要具有“ aws_access_key_id_value”和“ aws_secret_access_key_value”。您可以将此类变量存储在config.properties中,并将代码写入create-s3-blucket.py文件
创建一个config.properties并将以下代码保存在其中。
aws_access_key_id_value='YOUR-ACCESS-KEY-OF-THE-AWS-ACCOUNT'
aws_secret_access_key_value='TOUR-SECRETE-KEY-OF-THE-AWS-ACCOUNT'
Bucket_value='S3-BUCKET-NAME'
LocationConstraint_value='REGION-FOR-S3-BUCKET'
创建create-s3-blucket.py并将以下代码保存在其中。
import boto3
def getVarFromFile(filename):
import imp
f = open(filename)
global data
data = imp.load_source('data', '', f)
f.close()
getVarFromFile('config.properties')
client = boto3.client(
's3',
aws_access_key_id=data.aws_access_key_id_value,
aws_secret_access_key=data.aws_secret_access_key_value
)
client.create_bucket(Bucket=data.Bucket_value, CreateBucketConfiguration={'LocationConstraint': data.LocationConstraint_value})
使用以下命令执行python代码。
python create-s3-blucket.py
以相同的方式,您可以添加不同的参数并自定义此代码。 请参阅AWS's official documentation,以了解更多信息。
答案 3 :(得分:-4)
import boto3
client = boto3.client('s3')
response = client.create_bucket(
ACL='private'|'public-read'|'public-read-write'|'authenticated-read',
Bucket='string',
CreateBucketConfiguration={
'LocationConstraint': 'EU'|'eu-west-1'|'us-west-1'|'us-west-2'|'ap-south-1'|'ap-southeast-1'|'ap-southeast-2'|'ap-northeast-1'|'sa-east-1'|'cn-north-1'|'eu-central-1'
},
GrantFullControl='string',
GrantRead='string',
GrantReadACP='string',
GrantWrite='string',
GrantWriteACP='string')