Page 1
© 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
Page 2
Friday, November 15, 13
Page 3
Friday, November 15, 13
Page 4
Friday, November 15, 13
Page 5
Goals
Friday, November 15, 13
Page 6
GoalsIntroduce Core
Friday, November 15, 13
Page 7
GoalsIntroduce CoreHands on Experience
Friday, November 15, 13
Page 8
GoalsIntroduce CoreHands on ExperienceExtending the SDK
Friday, November 15, 13
Page 9
GoalsIntroduce CoreHands on ExperienceExtending the SDKContributing
Friday, November 15, 13
Page 10
gem install aws-sdk
Friday, November 15, 13
Page 11
Friday, November 15, 13
Page 12
2.0Friday, November 15, 13
Page 13
Why Version 2.0?
Friday, November 15, 13
Page 14
Why Version 2.0?
Validation
Friday, November 15, 13
Page 15
Why Version 2.0?
ValidationStructured Responses
Friday, November 15, 13
Page 16
Why Version 2.0?
ValidationStructured ResponsesBetter Documentation
Friday, November 15, 13
Page 17
Why Version 2.0?
ValidationStructured ResponsesBetter DocumentationExtensibility
Friday, November 15, 13
Page 18
Why Version 2.0?
ValidationStructured ResponsesBetter DocumentationExtensibilityConsistency
Friday, November 15, 13
Page 19
gem install aws-sdk-core
Friday, November 15, 13
Page 20
Friday, November 15, 13
Page 21
aws-sdk
Version 1
Friday, November 15, 13
Page 22
aws-sdk
Version 1 Version 2
aws-sdk-core
Friday, November 15, 13
Page 23
aws-sdk
Version 1 Version 2
aws-sdk-core
work-in-progress
Friday, November 15, 13
Page 24
CodeFriday, November 15, 13
Page 25
Key Differences
Friday, November 15, 13
Page 26
Key Differences
New Namespace
Friday, November 15, 13
Page 27
Key Differences
New NamespaceMemoization Everywhere
Friday, November 15, 13
Page 28
Key Differences
New NamespaceMemoization EverywhereRuby 1.9+
Friday, November 15, 13
Page 29
Key Differences
New NamespaceMemoization EverywhereRuby 1.9+Flexible Dependencies
Friday, November 15, 13
Page 30
Key Differences
New NamespaceMemoization EverywhereRuby 1.9+Flexible DependenciesStructured Responses
Friday, November 15, 13
Page 31
What’s Coming?
Friday, November 15, 13
Page 32
What’s Coming?
Resources
Friday, November 15, 13
Page 33
What’s Coming?
ResourcesEnumeration
Friday, November 15, 13
Page 34
What’s Coming?
ResourcesEnumerationPagination
Friday, November 15, 13
Page 35
What’s Coming?
ResourcesEnumerationPaginationHelpers
Friday, November 15, 13
Page 36
What’s Coming?
ResourcesEnumerationPaginationHelpersService Gems
Friday, November 15, 13
Page 37
Developer Preview
Friday, November 15, 13
Page 38
Developer PreviewPublic
Friday, November 15, 13
Page 39
Developer PreviewPublicFeedback
Friday, November 15, 13
Page 40
Developer PreviewPublicFeedbackStability
Friday, November 15, 13
Page 41
ExtendingThe SDK
Friday, November 15, 13
Page 42
Friday, November 15, 13
Page 43
Request Response
Friday, November 15, 13
Page 44
Request Response
Friday, November 15, 13
Page 45
Request Response
Validate
Friday, November 15, 13
Page 46
Request Response
Validate
Serialize
Friday, November 15, 13
Page 47
Request Response
Validate
Serialize
Send
Friday, November 15, 13
Page 48
Request Response
Validate
Serialize
Send
Parse
Friday, November 15, 13
Page 49
Request Response
Validate
Serialize
Send
Parse
Middleware
Friday, November 15, 13
Page 50
Request Response
Validate
Serialize
Send
Parse
Middleware
Application
Friday, November 15, 13
Page 51
Writing Plugins* The entire SDK is written as a series of plugins
Friday, November 15, 13
Page 52
Writing PluginsIdeas:
* The entire SDK is written as a series of plugins
Friday, November 15, 13
Page 53
Writing PluginsIdeas:
Data Integrity Checks
* The entire SDK is written as a series of plugins
Friday, November 15, 13
Page 54
Writing PluginsIdeas:
Data Integrity ChecksExtended Retry Logic
* The entire SDK is written as a series of plugins
Friday, November 15, 13
Page 55
Writing PluginsIdeas:
Data Integrity ChecksExtended Retry LogicDefault Values
* The entire SDK is written as a series of plugins
Friday, November 15, 13
Page 56
Writing PluginsIdeas:
Data Integrity ChecksExtended Retry LogicDefault ValuesCross Service Hooks
* The entire SDK is written as a series of plugins
Friday, November 15, 13
Page 57
Plugins, Handlers and Context, Oh My!
Friday, November 15, 13
Page 58
Plugins, Handlers and Context, Oh My!
Plugin
Configuration
Handlers
Friday, November 15, 13
Page 59
Plugins, Handlers and Context, Oh My!
Plugin
Configuration
Handlers
Configuration
Options
Defaults
Friday, November 15, 13
Page 60
Plugins, Handlers and Context, Oh My!
Plugin
Configuration
Handlers
Configuration
Options
Defaults
Handlers
#call method
Build request
Parse response
Friday, November 15, 13
Page 61
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
Page 62
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
Page 63
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
Page 64
Contributing
Friday, November 15, 13
Page 65
Open Source
Friday, November 15, 13
Page 66
Open Source
GitHub issues
Friday, November 15, 13
Page 67
Open Source
GitHub issuesPull Requests
Friday, November 15, 13
Page 68
Open Source
GitHub issuesPull RequestsTest Coverage
Friday, November 15, 13
Page 69
Open Source
GitHub issuesPull RequestsTest CoverageDocs/Guides
Friday, November 15, 13
Page 70
Open Source
GitHub issuesPull RequestsTest CoverageDocs/GuidesSamples
Friday, November 15, 13
Page 71
Open Source
GitHub issuesPull RequestsTest CoverageDocs/GuidesSamples3rd Party Gems
Friday, November 15, 13
Page 72
Links of Interest
Friday, November 15, 13
Page 73
https://github.com/aws/aws-sdk-core-ruby
Links of Interest
Friday, November 15, 13
Page 74
http://ruby.awsblog.com/
https://github.com/aws/aws-sdk-core-ruby
Links of Interest
Friday, November 15, 13
Page 75
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
Page 76
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
Page 77
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