aw
s-s
dk-c
ore
Aws::S3::Client
#list_objects GET bucket
#put_object PUT bucket/object
Aws::EC2::Client
#describe_instances DescribeInstances
#run_instances RunInstances
S3 Resource
Bucket
Object
ObjectAcl ObjectVersion
BucketAcl BucketLifecycle BucketLogging BucketNotification etc.
HTTPAws::S3::ClientMethodAws::S3
Bucket #objects #list_objects GET /bucket
Object
#put #put_object PUT /bucket/key
#etag #head_object HEAD /bucket/key
# Pick One:
'aws-sdk', '2.0.6.pre'
'aws-sdk-core'
# Can include V1 in the same project!
'aws-sdk-v1'
"#{HOME}/.aws/credentials"
• INI format
• AWS CLI and other SDKs use same credentials
• "AWS_PROFILE" specifies credential profile
http://docs.aws.amazon.com/sdkforruby/api/frames.html
Aws::EC2::Client
filters:
name: 'instance-state-name'
values: 'running'
do
end
instance_ids:
Aws::EC2::Resource
filters:
name: 'instance-state-name'
values: 'running'
• Object-oriented abstraction over clients
• Less hand-written code, more API abstractions
• Improved memoization
• Batching support
• Integrated with waiters and pagination
# v1 client - no built-in pagination
AWS::S3::Client
bucket_name:
while do
bucket_name:
marker:
:key
end
• All responses automatically paginated, including
client responses
• Includes helper methods
• Replaces many V1 higher level abstractions
# v1 high-level
instance = ec2.instances[instance_id]
until running do
if instance.status == :running
running = true
else
break if MAX_ATTEMPTS
end
end
• Polls client requests for success/failure states
• Configurable
• Can be used with base client and resources
https://github.com/awslabs/todo-sample-app
http://ruby.awsblog.com/blog/tag/TodoApp
div id "subscription-forms"
h3 h2
div id "sms-form"
p p
<%= "/subscriptions/sms" method: "post" %>
<%= :subscription :endpoint %>
<%= "Subscribe" %>
<% %>
div
div id "email-form"
p p
<%= "/subscriptions/email" method: "post" %>
<%= :subscription :endpoint %>
<%= "Subscribe" %>
<% %>
div
div
<div id="subscription-forms">
<h3>Subscribe to Task Updates</h2>
<div id="sms-form">
<p>Subscribe via SMS</p>
<%= "/subscriptions/sms" method: "post" %>
<%= :subscription :endpoint %>
<%= "Subscribe" %>
<% %>
</div>
<div id="email-form">
<p>Subscribe via E-Mail</p>
<%= form_tag("/subscriptions/email", method: "post") do %>
<%= email_field(:subscription, :endpoint) %>
<%= submit_tag("Subscribe") %>
<% end %>
</div>
</div>
'subscriptions/sms' => 'subscriptions#create_sms'
'subscriptions/email' => 'subscriptions#create_email'
class SubscriptionsController ApplicationController
def
Subscription 'sms' 'subscription' 'endpoint'
end
def
Subscription 'email' 'subscription' 'endpoint'
end
end
class Subscription
def self
Aws::SNS::Resource TOPIC_ARN
end
def self
protocol: endpoint: if
end
def self
message:
:subject if
end
end
class Subscription
def self.topic
Aws::SNS::Resource TOPIC_ARN
end
def self.subscribe(protocol, endpoint)
protocol: endpoint: if
end
def self.publish(message, subject = nil)
opts = { message: message }
opts[:subject] = subject if subject
end
end
def
@task Task
if @task
Subscription "Created new task: #{@task.name}"
"New Task Created"
else
:error "Task creation failed! #{print_errors(@task)}"
end
end
def create
@task = Task.new(task_create_params)
if @task.save
Subscription "Created new task: #{@task.name}"
"New Task Created"
redirect_to tasks_path
else
flash[:error] = "Task creation failed! #{print_errors(@task)}"
redirect_to tasks_path
end
end
https://github.com/aws/aws-sdk-core-ruby
• You can contribute bug fixes, resources, pagination
support, waiters, and more!
– Bonus: Multiple SDKs use these definitions - wide
impact!
• AWS CloudFormation resource definition was customer
contributed:
– https://github.com/aws/aws-sdk-core-ruby/pull/127
Top Related