Diving Into the New AWS SDK for Ruby (TLS305) | AWS re:Invent 2013

Preview:

DESCRIPTION

Ruby developers: attend this session and learn about the next major version of the AWS SDK for Ruby, the aws-core gem. We dive deep into the SDK, covering topics such as waiters, request enumeration and pagination, resource modeling, version locking, and more. Learn how to take advantage of these features as we construct a sample Ruby application using the AWS SDK.

Citation preview

© 2013 Amazon.com, Inc. and its affiliates. All rights reserved. May not be copied, modified, or distributed in whole or in part without the express consent of Amazon.com, Inc.

Trevor Rowe & Loren Segal

November 13, 2013

Diving Into the New AWS SDK for Ruby

Friday, November 15, 13

Friday, November 15, 13

Friday, November 15, 13

Friday, November 15, 13

Goals

Friday, November 15, 13

GoalsIntroduce Core

Friday, November 15, 13

GoalsIntroduce CoreHands on Experience

Friday, November 15, 13

GoalsIntroduce CoreHands on ExperienceExtending the SDK

Friday, November 15, 13

GoalsIntroduce CoreHands on ExperienceExtending the SDKContributing

Friday, November 15, 13

gem install aws-sdk

Friday, November 15, 13

Friday, November 15, 13

2.0Friday, November 15, 13

Why Version 2.0?

Friday, November 15, 13

Why Version 2.0?

Validation

Friday, November 15, 13

Why Version 2.0?

ValidationStructured Responses

Friday, November 15, 13

Why Version 2.0?

ValidationStructured ResponsesBetter Documentation

Friday, November 15, 13

Why Version 2.0?

ValidationStructured ResponsesBetter DocumentationExtensibility

Friday, November 15, 13

Why Version 2.0?

ValidationStructured ResponsesBetter DocumentationExtensibilityConsistency

Friday, November 15, 13

gem install aws-sdk-core

Friday, November 15, 13

Friday, November 15, 13

aws-sdk

Version 1

Friday, November 15, 13

aws-sdk

Version 1 Version 2

aws-sdk-core

Friday, November 15, 13

aws-sdk

Version 1 Version 2

aws-sdk-core

work-in-progress

Friday, November 15, 13

CodeFriday, November 15, 13

Key Differences

Friday, November 15, 13

Key Differences

New Namespace

Friday, November 15, 13

Key Differences

New NamespaceMemoization Everywhere

Friday, November 15, 13

Key Differences

New NamespaceMemoization EverywhereRuby 1.9+

Friday, November 15, 13

Key Differences

New NamespaceMemoization EverywhereRuby 1.9+Flexible Dependencies

Friday, November 15, 13

Key Differences

New NamespaceMemoization EverywhereRuby 1.9+Flexible DependenciesStructured Responses

Friday, November 15, 13

What’s Coming?

Friday, November 15, 13

What’s Coming?

Resources

Friday, November 15, 13

What’s Coming?

ResourcesEnumeration

Friday, November 15, 13

What’s Coming?

ResourcesEnumerationPagination

Friday, November 15, 13

What’s Coming?

ResourcesEnumerationPaginationHelpers

Friday, November 15, 13

What’s Coming?

ResourcesEnumerationPaginationHelpersService Gems

Friday, November 15, 13

Developer Preview

Friday, November 15, 13

Developer PreviewPublic

Friday, November 15, 13

Developer PreviewPublicFeedback

Friday, November 15, 13

Developer PreviewPublicFeedbackStability

Friday, November 15, 13

ExtendingThe SDK

Friday, November 15, 13

Friday, November 15, 13

Request Response

Friday, November 15, 13

Request Response

Friday, November 15, 13

Request Response

Validate

Friday, November 15, 13

Request Response

Validate

Serialize

Friday, November 15, 13

Request Response

Validate

Serialize

Send

Friday, November 15, 13

Request Response

Validate

Serialize

Send

Parse

Friday, November 15, 13

Request Response

Validate

Serialize

Send

Parse

Middleware

Friday, November 15, 13

Request Response

Validate

Serialize

Send

Parse

Middleware

Application

Friday, November 15, 13

Writing Plugins* The entire SDK is written as a series of plugins

Friday, November 15, 13

Writing PluginsIdeas:

* The entire SDK is written as a series of plugins

Friday, November 15, 13

Writing PluginsIdeas:

Data Integrity Checks

* The entire SDK is written as a series of plugins

Friday, November 15, 13

Writing PluginsIdeas:

Data Integrity ChecksExtended Retry Logic

* The entire SDK is written as a series of plugins

Friday, November 15, 13

Writing PluginsIdeas:

Data Integrity ChecksExtended Retry LogicDefault Values

* The entire SDK is written as a series of plugins

Friday, November 15, 13

Writing PluginsIdeas:

Data Integrity ChecksExtended Retry LogicDefault ValuesCross Service Hooks

* The entire SDK is written as a series of plugins

Friday, November 15, 13

Plugins, Handlers and Context, Oh My!

Friday, November 15, 13

Plugins, Handlers and Context, Oh My!

Plugin

Configuration

Handlers

Friday, November 15, 13

Plugins, Handlers and Context, Oh My!

Plugin

Configuration

Handlers

Configuration

Options

Defaults

Friday, November 15, 13

Plugins, Handlers and Context, Oh My!

Plugin

Configuration

Handlers

Configuration

Options

Defaults

Handlers

#call method

Build request

Parse response

Friday, November 15, 13

Plugin• provides a DSL• easy to add/remove

Handler• stacked• similar to rack middleware

Context• operation name• configuration• request parameters• http request• http response• response data• response error

Plugins, Handlers and Context, Oh My!

Friday, November 15, 13

Plugin• provides a DSL• easy to add/remove

Handler• stacked• similar to rack middleware

Context• operation name• configuration• request parameters• http request• http response• response data• response error

Plugins, Handlers and Context, Oh My!

Let’s Build Something!

Friday, November 15, 13

Best Practices• Depend on major versions of the SDK

• gem  “aws-­‐sdk-­‐core”,  “~>  2.0”

• API Locking• Lock your clients to a specific API version• Aws::DynamoDB.new(api_version:  ‘2012-­‐08-­‐10’)

• Secure Credential Management• Rotate credentials

• Use IAM roles for EC2 instances when possible• ENV variables (Heroku, etc.)• From a file on disk (outside source control)• Never check your credentials into source control!

Friday, November 15, 13

Contributing

Friday, November 15, 13

Open Source

Friday, November 15, 13

Open Source

GitHub issues

Friday, November 15, 13

Open Source

GitHub issuesPull Requests

Friday, November 15, 13

Open Source

GitHub issuesPull RequestsTest Coverage

Friday, November 15, 13

Open Source

GitHub issuesPull RequestsTest CoverageDocs/Guides

Friday, November 15, 13

Open Source

GitHub issuesPull RequestsTest CoverageDocs/GuidesSamples

Friday, November 15, 13

Open Source

GitHub issuesPull RequestsTest CoverageDocs/GuidesSamples3rd Party Gems

Friday, November 15, 13

Links of Interest

Friday, November 15, 13

https://github.com/aws/aws-sdk-core-ruby

Links of Interest

Friday, November 15, 13

http://ruby.awsblog.com/

https://github.com/aws/aws-sdk-core-ruby

Links of Interest

Friday, November 15, 13

http://ruby.awsblog.com/

https://github.com/aws/aws-sdk-core-ruby

https://forums.aws.amazon.com/forum.jspa?forumID=125

Links of Interest

Friday, November 15, 13

Please give us your feedback on this presentation

As a thank you, we will select prize winners daily for completed surveys!

TLS305 Thank You

Friday, November 15, 13