2018年7月2日月曜日

boto2.48 を使ってみた

概要

boto は AWS を操作するための Python ライブラリです
バージョンがだいぶ上がってから使っていなかったので久しぶりに試してみました

環境

  • macOS 10.13.5
  • Python 3.6.5
  • boto 2.48.0

インストール

  • pip3 install boto

バケット作成

from boto.s3.connection import S3Connection

conn = S3Connection(
    'xxxxxxxxxxxxxx',
    'xxxxxxxxxxxxxx',
    host = 'jp-east-2.os.cloud.nifty.com'
)
bucket = conn.create_bucket('mybucket')
print(bucket)

ファイルアップロード

  • touch test.txt
from boto.s3.connection import S3Connection
from boto.s3.key import Key

conn = S3Connection(
    'xxxxxxxxxxxxxx',
    'xxxxxxxxxxxxxx',
    host = 'jp-east-2.os.cloud.nifty.com'
)

b = conn.get_bucket('mybucket')
k = Key(b)
k.key = 'test'
ret = k.set_contents_from_filename('./test.txt')
print(ret)

k.key はオブジェクトストレージに保存される名前です
ret はアップロードできたファイルの内容のバイト数になります

KVS 的に使う

from boto.s3.connection import S3Connection
from boto.s3.key import Key

conn = S3Connection(
    'xxxxxxxxxxxxxx',
    'xxxxxxxxxxxxxx',
    host = 'jp-east-2.os.cloud.nifty.com'
)

b = conn.get_bucket('mybucket')
k = Key(b)
k.key = 'key'
k.set_contents_from_string('value')
ret = k.get_contents_as_string()
print(ret)

「value」という文字列が表示されます
型は byte なので必要に応じて str などに変換してください

オブジェクト一覧を取得

from boto.s3.connection import S3Connection
from boto.s3.key import Key

conn = S3Connection(
    'xxxxxxxxxxxxxx',
    'xxxxxxxxxxxxxx',
    host = 'jp-east-2.os.cloud.nifty.com'
)

b = conn.get_bucket('mybucket')
for obj in b.list():
    print(obj.key)

objboto.s3.key.Key というクラスなので必要に応じてアクセスしてください

オブジェクト削除

from boto.s3.connection import S3Connection
from boto.s3.key import Key

conn = S3Connection(
    'xxxxxxxxxxxxxx',
    'xxxxxxxxxxxxxx',
    host = 'jp-east-2.os.cloud.nifty.com'
)

b = conn.get_bucket('mybucket')
k = Key(conn)
for obj in b.list():
    obj.delete
    k.key = obj.key
    b.delete_key(k)

ちょっとややこしいのですが Key のオブジェクトを作成して、その Key を元にバケットに対して delete_key する感じです

バケット削除

from boto.s3.connection import S3Connection
from boto.s3.key import Key

conn = S3Connection(
    'xxxxxxxxxxxxxx',
    'xxxxxxxxxxxxxx',
    host = 'jp-east-2.os.cloud.nifty.com'
)

b = conn.get_bucket('mybucket')
b.delete()

バケットの一覧

from boto.s3.connection import S3Connection
from boto.s3.key import Key

conn = S3Connection(
    'xxxxxxxxxxxxxx',
    'xxxxxxxxxxxxxx',
    host = 'jp-east-2.os.cloud.nifty.com'
)

bs = conn.get_all_buckets()
print(bs)

最後に

boto2.48 を使ってみました
現在は v3 の開発も進んでいるようです

基本は公式ドキュメントが良いと思いますが検索が微妙なので見つからない場合は素直にググって良いと思います
boto はかなり情報が豊富なのでハマる点はほとんどないと思います

参考サイト

0 件のコメント:

コメントを投稿