© 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
http://ruby.awsblog.com/
https://github.com/aws/aws-sdk-core-ruby
https://forums.aws.amazon.com/forum.jspa?forumID=125
Links of Interest
@awsforruby
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