Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用Boto3创建s3存储桶?_Python_Amazon Web Services_Amazon S3_Boto_Boto3 - Fatal编程技术网

Python 如何使用Boto3创建s3存储桶?

Python 如何使用Boto3创建s3存储桶?,python,amazon-web-services,amazon-s3,boto,boto3,Python,Amazon Web Services,Amazon S3,Boto,Boto3,我想为我的帐户启用cloudtrail日志,因此需要创建一个s3 bucket。我想使用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

我想为我的帐户启用cloudtrail日志,因此需要创建一个s3 bucket。我想使用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新手,因此我对其他参数的使用不太了解,如GrantWriteGrantWriteACP

请帮助我提供一些关于在其中创建s3 bucket和启用cloudtrail日志的代码片段


谢谢

首先,在boto3中,如果使用“aws配置”设置安全性,则无需声明“sess”部分()

第二,糟糕的boto3文档无法链接正确的信息。可在boto3 pdf第2181页()

电子邮件:被授权人对象中的值是已注册的电子邮件 AWS帐户的地址

被授权人:希望访问转码文件和播放列表的AWS用户或组。要识别用户或组,您可以 指定AWS帐户的规范用户ID,即原始访问 CloudFront发行版的标识,注册的电子邮件地址 AWS帐户或预定义的Amazon S3组的


更简单的解决方案是使用策略设置()。您可以使用put_bucket_policy()转换整个内容,跳过dire GrantWrite,GrantWriteACP查看以下文档

创建连接

Boto3既有低级客户端,也有高级资源。对于AmazonS3,更高级别的资源与Boto 2.x的S3模块最为相似:

博托2.x 进口波托

s3_connection = boto.connect_s3()
博托3

创建一个Bucket

在Boto 2和Boto 3中创建bucket非常相似,不同之处在于在Boto 3中,所有操作参数都必须通过关键字参数传递,并且必须手动指定bucket配置:

博托2.x

博托3

存储数据

存储文件、流或字符串中的数据很容易:

博托2.x

博托3


要在AWS上使用Python创建S3存储桶,您需要有“AWS\u访问\密钥\ id \值”和“AWS\u机密\访问\密钥\值”。您可以将这些变量存储在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'
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})
创建Create-s3-blucket.py并在其中保存以下代码

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'
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
同样,您可以添加不同的参数并自定义此代码。
请参阅以了解更多信息。

您的示例有什么问题?我们还尝试使用
create\u bucket
方法。是我一个人,还是两个人都不好?“字符串”是什么类型的文档???“GrantFullControl='string'”也许下一点会更清楚…;)。。。“GrantFullControl(string)--允许被授权人对bucket具有读、写、读ACP和写ACP权限。”总之,很抱歉这样说。。。您是否找到了某些人需要在参数(如GrantFullControl)中使用的实际字符串?(注意GrantFull中完整的“咆哮”)我不知道为什么这是最被否决的答案,它实际上是亚马逊boto3文档的摘录。也很有帮助。@neo7代码中没有任何用法解释的答案通常被否决。另外,如果它是一个拷贝粘贴,甚至没有注意到源,这是不好的。
s3.Object('mybucket', 'hello.txt').put(Body=open('/tmp/hello.txt', 'rb'))
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')
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'
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 create-s3-blucket.py