(dev307) introduction to version 3 of the aws sdk for python (boto) | aws re:invent 2014

Post on 29-Jun-2015

410 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

In this session, we introduce Boto 3, the next major version of the AWS SDK for Python. You will learn about the new features in the SDK, such as the high-level resource APIs that simplify working with AWS collections and objects, and the eventing model that enables customizing your calls to AWS services. We use a sample application to demonstrate these features, and show how to integrate them with your existing projects.

TRANSCRIPT

Boto

Project

Overview

Boto 3

Features

Project

Example

Project

Started

Community

Contributions

Amazon

Service

Updates

Code

Generation

Python 3

Support

import boto

conn = boto.connect_s3()

bucket = conn.get_bucket('my-bucket')

for obj in bucket:

print(obj.key, obj.last_modified)

Boto

Project

Overview

Boto 3

Features

Project

Example

Boto 3

Botocore

Session Resources ClientsConfig

Session

Credentials

ClientsAuthentication

SerializationHTTPS

import boto3

s3 = boto3.resource('s3')

bucket = s3.Bucket('my-bucket')

for obj in bucket.objects.all():

print(obj.key, obj.last_modified)

import boto3

sqs = boto3.client('sqs')

response = sqs.list_queues(QueueNamePrefix='test')

print(response['QueueUrls'][0])

"QueueUrls"

"https://queue.amazonaws.com/12345678/products"

"https://queue.amazonaws.com/12345678/news"

"https://queue.amazonaws.com/12345678/test"

"https://queue.amazonaws.com/12345678/jobs"

s3 = boto3.client('s3')

# Get a paginator and iterate through each page

paginator = s3.get_paginator('list_objects')

for page in paginator.paginate(Bucket='my-bucket'):

for obj in page['Contents']:

print(obj['Key'])

Starting Running Terminated

ec2 = boto3.client('ec2')

# Get a waiter and wait for instance to be readywaiter = ec2.get_waiter('instance_running')waiter.wait(InstanceIds=['i-abc123'])

print('Instance is ready!')

instance = Instance(id)Amazon EC2

bucket = Bucket(name)Amazon S3

queue = Queue(url)Amazon SQS

instance.idAmazon EC2

object.bucket_name, object.keyAmazon S3

queue.urlAmazon SQS

instance.instance_typeAmazon EC2

object.last_modifiedAmazon S3

queue.attributes[‘DelaySeconds’]Amazon SQS

instance.create_image(…)Amazon EC2

object.put(Body=‘hello’)Amazon S3

queue.receive_messages()Amazon SQS

instance.subnetAmazon EC2

-Amazon S3

-Amazon SQS

ec2.Instance(id)Amazon EC2

bucket.Object(key)Amazon S3

sqs.Queue(url)Amazon SQS

ec2.instancesAmazon EC2

bucket.objectsAmazon S3

sqs.queuesAmazon SQS

import boto3

s3 = boto3.resource('s3')

obj = s3.Object('my-bucket', 'my-key.jpg')

print(obj.content_type)

print(obj.last_modified)

for obj in s3.Bucket(name='boto3').objects.all():

print(obj.key)

for queue in sqs.queues.filter(QueueNamePrefix='a'):

print(queue.url)

# Batch actions coming soon!

bucket.objects.delete()

Boto

Project

Overview

Boto 3

Features

Project

Example

Amazon

SQS

Amazon

SQS

import boto3

# Creating a client by name

client = boto3.client('s3')

# Creating a resource by name

resource = boto3.resource('s3')

import boto3

# Create a new bucket

s3 = boto3.resource('s3')

bucket = s3.create_bucket(Name='Boto3')

# Get a bucket by name

bucket = s3.Bucket('Boto3')

import boto3

# Get a bucket by name

bucket = s3.Bucket('Boto3')

# Upload a new file

with open('file.mov', 'rb') as data:

bucket.Object('file.mov').put(Body=data)

import boto3

# List all objects in all buckets

s3 = boto3.resource('s3')

for bucket in s3.buckets.all():

for obj in bucket.objects.all():

print(bucket.name, obj.key)

import boto3

# Download a file

bucket = s3.Bucket('Boto3')

obj = bucket.Object('output.mp4')

data = obj.get()['Body'].read()

import boto3

# Create SNS topic (idempotent)

sns = boto3.resource('sns')

topic = sns.create_topic(Name='Boto3')

# Get an SNS topic

topic = sns.Topic('<TOPIC ARN>')

# Create an SQS queue (idempotent)

sqs = boto3.resource('sqs')

queue = sqs.create_queue(QueueName='Boto3')

# Get an existing queue

queue = sqs.get_queue_by_name(QueueName='Boto3')

# Subscribe an SQS queue to the topic

topic.subscribe(

Protocol='sqs',

Endpoint=queue.attributes['QueueArn'])

import boto3

# Create IAM role

iam = boto3.resource('iam')

role = iam.create_role(

RoleName='role-name',

AssumeRolePolicyDocument='...')

# Set role policy

policy = role.RolePolicy('transcoder')

policy.put(PolicyDocument={

'Version': '2012-10-17',

'Statement':[

{...}

]

})

# Create a new pipeline

transcoder = boto3.client('elastictranscoder')

response = transcoder.create_pipeline(

Name='Boto3',

InputBucket='Boto3-input',

OutputBucket='Boto3-output',

Role='<ROLE ARN>',

...

)

# Create a new transcoding job

job = transcoder.create_job(

PipelineId=response['Pipeline']['Id'],

Input={

'Key': 'input.mov',

...

},

Outputs={...}

)

https://github.com/boto/boto3-sample

Boto

Project

Overview

Boto 3

Features

Project

Example

https://github.com/boto/boto3

https://github.com/boto/boto3-sample

Please give us your feedback on this session.

Complete session evaluations and earn re:Invent swag.

http://bit.ly/awsevals

top related