AWS SDK For Python (Boto3)がリリースされました!

はじめに

AWS SDK For Python (Boto3)がリリースされました!

Boto3のFeaturesは以下の通り。Boto2と比較して抽象化が進みました。

  • Resources: a high level, object oriented interface
  • Collections: a tool to iterate and manipulate groups of resources
  • Clients: low level service connections
  • Paginators: automatic paging of responses
  • Waiters: a way to block until a certain state has been reached

Boto2からのマイグレーションの為のドキュメントも用意されていますが、既存スクリプトについてはClientの利用などかなり手を入れる必要がありますので、当面は並行利用しつつ、新規スクリプトについてはBoto3で書いていくような形になるのでは無いでしょうか。

ということで、早速触ってみました!

やってみた

インストール

インストールはpipで一撃です。

$ sudo pip install boto3

スクリプト

こんな感じのスクリプトを書いてみました。

from boto3.session import Session
import os
import json

accesskey = os.environ.get("AWS_ACCESS_KEY_ID")
secretkey = os.environ.get("AWS_SECRET_ACCESS_KEY")
region    = os.environ.get("AWS_DEFAULT_REGION")

session = Session(aws_access_key_id=accesskey,
                  aws_secret_access_key=secretkey,
                  region_name=region)

iam = session.client('iam')
user = iam.get_user()
arn =  user['User']['Arn'].split(':')
awsid =  arn[4]

ec2 = session.client('ec2')
snapshots = ec2.describe_snapshots(OwnerIds = [awsid])

for snapshot in snapshots['Snapshots']:
  print snapshot['SnapshotId'] ,
  print " : " ,
  print snapshot['VolumeId'] ,
  print " : " ,
  print snapshot['StartTime']

必要な環境変数(AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY、AWS_DEFAULT_REGION)を設定し、実行すると、自アカウントが持っているスナップショットの一覧が表示されます!

$ python describe-snapshots.py
snap-a6229XXX  :  vol-08b5fXXX  :  2014-12-24 05:12:28+00:00
snap-550c4XXX  :  vol-23dd8XXX  :  2015-01-08 05:19:57+00:00
snap-63a46XXX  :  vol-cad69XXX  :  2015-03-24 00:40:45+00:00

さいごに

こういう言い方をすると怒られちゃいそうですが、僕はこれまでAWS SDKはRubyとGolangばかり使っていまして、Boto3はRubyぽく書けるなぁと思いました。Boto2よりもわかりやすくなったと思います。今後はBoto3を使う機会も増やしていこうと思います!