web-dev-qa-db-ja.com

Boto3を使用してs3バケットを作成する方法

アカウントで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ログに関するコードスニペットを提供してください。

ありがとう

10
tom

次のドキュメントを確認します

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()

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'))
8
Vaibhav Walke

まず、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ドキュメントです。これは2181ページのboto3 pdfの下にあります( https://media.readthedocs.org/pdf/boto3/latest/boto3.pdf

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

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

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

5
mootmoot

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の公式ドキュメント を参照してください。

0
Rahul Shivalkar