22

アカウントの 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 を初めて使用するので、 GrantWriteGrantWriteACPなどの他のパラメーターの使用法についてあまり知識がありません。

s3 バケットの作成と有効化された cloudtrail ログに関するコード スニペットを提供してください。

ありがとう

4

4 に答える 4

19

次のドキュメントを参照してください

http://boto3.readthedocs.io/en/latest/guide/migrations3.html

接続の作成

Boto 3 には、低レベルのクライアントと高レベルのリソースの両方があります。Amazon S3 の場合、上位レベルのリソースは Boto 2.x の s3 モジュールに最も似ています。

Boto 2.x インポート boto

s3_connection = boto.connect_s3()

ボト3

import boto3

s3 = boto3.resource('s3')

バケットの作成

Boto 2 と Boto 3 でのバケットの作成は非常に似ていますが、Boto 3 ではすべてのアクション パラメータをキーワード引数で渡す必要があり、バケット構成を手動で指定する必要があります。

ボト 2.x

s3_connection.create_bucket('mybucket')

s3_connection.create_bucket('mybucket', location=Location.USWest)

ボト3

s3.create_bucket(Bucket='mybucket')

s3.create_bucket(Bucket='mybucket', CreateBucketConfiguration={
    'LocationConstraint': 'us-west-1'})

データの保存

ファイル、ストリーム、または文字列からのデータの保存は簡単です。

ボト 2.x

from boto.s3.key import Key

key = Key('hello.txt')

key.set_contents_from_file('/tmp/hello.txt')

ボト3

s3.Object('mybucket', 'hello.txt').put(Body=open('/tmp/hello.txt', 'rb'))
于 2016-08-30T09:08:37.547 に答える
9

まず、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", ....) 

2 つ目は、適切な情報へのリンクに失敗した不適切な boto3 ドキュメントです。これは boto3 pdf の 2181 ページにあります ( https://media.readthedocs.org/pdf/boto3/latest/boto3.pdf )

Email : Grantee オブジェクトの値は、AWS アカウントの登録済みメールアドレスです。

Grantee : トランスコードされたファイルとプレイリストへのアクセスを許可する AWS ユーザーまたはグループ。ユーザーまたはグループを識別するために、AWS アカウントの正規ユーザー ID、CloudFront ディストリビューションのオリジン アクセス ID、AWS アカウントの登録済みメール アドレス、または事前定義された Amazon S3 グループを指定できます。

そして、より簡単な解決策は、ポリシー設定 ( http://support.cloudcheckr.com/getting-started-with-cloudcheckr/preparing-your-aws-account/aggregate-cloudtrail/ ) を使用することです。put_bucket_policy() を使用してすべてのものを変換し、悲惨な GrantWrite、GrantWriteACP をスキップできます

于 2016-03-16T19:41:09.700 に答える
-5
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')
于 2016-12-25T05:48:04.573 に答える