SlideShare una empresa de Scribd logo
1 de 50
AMAZON SIMPLE
  STORAGE SERVICE
        (S3)
The Infinite Hard Drive in the Cloud
What is S3?
What is S3?
A RESTful (or SOAP) data storage API
What is S3?
A RESTful (or SOAP) data storage API
Supports HTTP and BitTorrent protocols
  Control headers to serve content straight from S3
What is S3?
A RESTful (or SOAP) data storage API
Supports HTTP and BitTorrent protocols
  Control headers to serve content straight from S3
Full access control per file or user
  Preauthorize direct uploads by users
What is S3?
A RESTful (or SOAP) data storage API
Supports HTTP and BitTorrent protocols
  Control headers to serve content straight from S3
Full access control per file or user
  Preauthorize direct uploads by users
Billed by capacity stored and transfer rates
Everything is Better Online!
Everything is Better Online!
Basic Usage
Basic Usage
Creating/Listing Buckets
  Globally unique “buckets” hold files on S3
#!/usr/bin/env ruby -KU
    $VERBOSE = nil

    require "rubygems"
    require "aws" # sudo gem install aws

    s3 = Aws::S3.new( "ACCESS_KEY_ID",
               "SECRET_ACCESS_KEY",
               :logger => Logger.new("/dev/null") )
    puts "Your buckets: " +
       s3.buckets.map { |b| b.name }.join(', ')
    puts

    print "Creating the bucket graysoftinc... "
    s3.bucket("graysoftinc", :create, "private")
    puts "Done."
    puts

    puts "Your buckets: " +
       s3.buckets.map { |b| b.name }.join(', ')




Creating/Listing Buckets
  Globally unique “buckets” hold files on S3
#!/usr/bin/env ruby -KU
    $VERBOSE = nil

    require "rubygems"
    require "aws" # sudo gem install aws

    s3 = Aws::S3.new( "ACCESS_KEY_ID",
               "SECRET_ACCESS_KEY",
               :logger => Logger.new("/dev/null") )
    puts "Your buckets: " +
       s3.buckets.map { |b| b.name }.join(', ')
    puts

    print "Creating the bucket graysoftinc... "
    s3.bucket("graysoftinc", :create, "private")
    puts "Done."
    puts

    puts "Your buckets: " +
       s3.buckets.map { |b| b.name }.join(', ')




Creating/Listing Buckets
  Globally unique “buckets” hold files on S3
#!/usr/bin/env ruby -KU
    $VERBOSE = nil

    require "rubygems"
    require "aws" # sudo gem install aws

    s3 = Aws::S3.new( "ACCESS_KEY_ID",
               "SECRET_ACCESS_KEY",
               :logger => Logger.new("/dev/null") )
    puts "Your buckets: " +
       s3.buckets.map { |b| b.name }.join(', ')
    puts

    print "Creating the bucket graysoftinc... "
    s3.bucket("graysoftinc", :create, "private")
    puts "Done."
    puts

    puts "Your buckets: " +
       s3.buckets.map { |b| b.name }.join(', ')




Creating/Listing Buckets
  Globally unique “buckets” hold files on S3
#!/usr/bin/env ruby -KU
    $VERBOSE = nil

    require "rubygems"
    require "aws" # sudo gem install aws

    s3 = Aws::S3.new( "ACCESS_KEY_ID",
               "SECRET_ACCESS_KEY",
               :logger => Logger.new("/dev/null") )
    puts "Your buckets: " +
       s3.buckets.map { |b| b.name }.join(', ')
    puts

    print "Creating the bucket graysoftinc... "
    s3.bucket("graysoftinc", :create, "private")
    puts "Done."
    puts

    puts "Your buckets: " +
       s3.buckets.map { |b| b.name }.join(', ')




Creating/Listing Buckets
  Globally unique “buckets” hold files on S3
#!/usr/bin/env ruby -KU
    $VERBOSE = nil

    require "rubygems"
    require "aws" # sudo gem install aws

    s3 = Aws::S3.new( "ACCESS_KEY_ID",
               "SECRET_ACCESS_KEY",
               :logger => Logger.new("/dev/null") )
    puts "Your buckets: " +
       s3.buckets.map { |b| b.name }.join(', ')
    puts

    print "Creating the bucket graysoftinc... "
    s3.bucket("graysoftinc", :create, "private")
    puts "Done."
    puts

    puts "Your buckets: " +
       s3.buckets.map { |b| b.name }.join(', ')




Creating/Listing Buckets
  Globally unique “buckets” hold files on S3
Your buckets:

        Creating the bucket graysoftinc... Done.

        Your buckets: graysoftinc




Creating/Listing Buckets
  Globally unique “buckets” hold files on S3
Uploading/Listing Files
 Files are “objects” stored under “keys” on S3
#!/usr/bin/env ruby -KU
  $VERBOSE = nil

  require "rubygems"
  require "aws" # sudo gem install aws

  s3 = Aws::S3.new( "ACCESS_KEY_ID",
             "SECRET_ACCESS_KEY",
             :logger => Logger.new("/dev/null") )
  bucket = s3.bucket("graysoftinc")

  puts "Files:", bucket.keys.map { |k| k.name }
  puts

  open(__FILE__) do |f|
   bucket.put("presentations/upload.rb", f)
  end
  bucket.copy_key("presentations/upload.rb", "ruby/upload.rb")

  puts "Files:", bucket.keys.map { |k| k.name }
  puts "ruby/:",
     bucket.keys(:prefix => "ruby/").map { |k| k.name }




Uploading/Listing Files
 Files are “objects” stored under “keys” on S3
#!/usr/bin/env ruby -KU
  $VERBOSE = nil

  require "rubygems"
  require "aws" # sudo gem install aws

  s3 = Aws::S3.new( "ACCESS_KEY_ID",
             "SECRET_ACCESS_KEY",
             :logger => Logger.new("/dev/null") )
  bucket = s3.bucket("graysoftinc")

  puts "Files:", bucket.keys.map { |k| k.name }
  puts

  open(__FILE__) do |f|
   bucket.put("presentations/upload.rb", f)
  end
  bucket.copy_key("presentations/upload.rb", "ruby/upload.rb")

  puts "Files:", bucket.keys.map { |k| k.name }
  puts "ruby/:",
     bucket.keys(:prefix => "ruby/").map { |k| k.name }




Uploading/Listing Files
 Files are “objects” stored under “keys” on S3
#!/usr/bin/env ruby -KU
  $VERBOSE = nil

  require "rubygems"
  require "aws" # sudo gem install aws

  s3 = Aws::S3.new( "ACCESS_KEY_ID",
             "SECRET_ACCESS_KEY",
             :logger => Logger.new("/dev/null") )
  bucket = s3.bucket("graysoftinc")

  puts "Files:", bucket.keys.map { |k| k.name }
  puts

  open(__FILE__) do |f|
   bucket.put("presentations/upload.rb", f)
  end
  bucket.copy_key("presentations/upload.rb", "ruby/upload.rb")

  puts "Files:", bucket.keys.map { |k| k.name }
  puts "ruby/:",
     bucket.keys(:prefix => "ruby/").map { |k| k.name }




Uploading/Listing Files
 Files are “objects” stored under “keys” on S3
#!/usr/bin/env ruby -KU
  $VERBOSE = nil

  require "rubygems"
  require "aws" # sudo gem install aws

  s3 = Aws::S3.new( "ACCESS_KEY_ID",
             "SECRET_ACCESS_KEY",
             :logger => Logger.new("/dev/null") )
  bucket = s3.bucket("graysoftinc")

  puts "Files:", bucket.keys.map { |k| k.name }
  puts

  open(__FILE__) do |f|
   bucket.put("presentations/upload.rb", f)
  end
  bucket.copy_key("presentations/upload.rb", "ruby/upload.rb")

  puts "Files:", bucket.keys.map { |k| k.name }
  puts "ruby/:",
     bucket.keys(:prefix => "ruby/").map { |k| k.name }




Uploading/Listing Files
 Files are “objects” stored under “keys” on S3
#!/usr/bin/env ruby -KU
  $VERBOSE = nil

  require "rubygems"
  require "aws" # sudo gem install aws

  s3 = Aws::S3.new( "ACCESS_KEY_ID",
             "SECRET_ACCESS_KEY",
             :logger => Logger.new("/dev/null") )
  bucket = s3.bucket("graysoftinc")

  puts "Files:", bucket.keys.map { |k| k.name }
  puts

  open(__FILE__) do |f|
   bucket.put("presentations/upload.rb", f)
  end
  bucket.copy_key("presentations/upload.rb", "ruby/upload.rb")

  puts "Files:", bucket.keys.map { |k| k.name }
  puts "ruby/:",
     bucket.keys(:prefix => "ruby/").map { |k| k.name }




Uploading/Listing Files
 Files are “objects” stored under “keys” on S3
#!/usr/bin/env ruby -KU
  $VERBOSE = nil

  require "rubygems"
  require "aws" # sudo gem install aws

  s3 = Aws::S3.new( "ACCESS_KEY_ID",
             "SECRET_ACCESS_KEY",
             :logger => Logger.new("/dev/null") )
  bucket = s3.bucket("graysoftinc")

  puts "Files:", bucket.keys.map { |k| k.name }
  puts

  open(__FILE__) do |f|
   bucket.put("presentations/upload.rb", f)
  end
  bucket.copy_key("presentations/upload.rb", "ruby/upload.rb")

  puts "Files:", bucket.keys.map { |k| k.name }
  puts "ruby/:",
     bucket.keys(:prefix => "ruby/").map { |k| k.name }




Uploading/Listing Files
 Files are “objects” stored under “keys” on S3
Files:

               Files:
               presentations/upload.rb
               ruby/upload.rb
               ruby/:
               ruby/upload.rb




Uploading/Listing Files
 Files are “objects” stored under “keys” on S3
Files:

               Files:
               presentations/upload.rb
               ruby/upload.rb
               ruby/:
               ruby/upload.rb




Uploading/Listing Files
 Files are “objects” stored under “keys” on S3
Downloading a File
 You can stream files to and from S3
#!/usr/bin/env ruby -KU
 $VERBOSE = nil

 require "rubygems"
 require "aws" # sudo gem install aws

 s3 = Aws::S3Interface.new(
   "ACCESS_KEY_ID",
   "SECRET_ACCESS_KEY",
   :logger => Logger.new("/dev/null")
 )

 open("downloaded.rb", "w") do |f|
  s3.get("graysoftinc", "ruby/upload.rb") do |chunk|
   f << chunk
  end
 end




Downloading a File
 You can stream files to and from S3
#!/usr/bin/env ruby -KU
 $VERBOSE = nil

 require "rubygems"
 require "aws" # sudo gem install aws

 s3 = Aws::S3Interface.new(
   "ACCESS_KEY_ID",
   "SECRET_ACCESS_KEY",
   :logger => Logger.new("/dev/null")
 )

 open("downloaded.rb", "w") do |f|
  s3.get("graysoftinc", "ruby/upload.rb") do |chunk|
   f << chunk
  end
 end




Downloading a File
 You can stream files to and from S3
#!/usr/bin/env ruby -KU
 $VERBOSE = nil

 require "rubygems"
 require "aws" # sudo gem install aws

 s3 = Aws::S3Interface.new(
   "ACCESS_KEY_ID",
   "SECRET_ACCESS_KEY",
   :logger => Logger.new("/dev/null")
 )

 open("downloaded.rb", "w") do |f|
  s3.get("graysoftinc", "ruby/upload.rb") do |chunk|
   f << chunk
  end
 end




Downloading a File
 You can stream files to and from S3
The Details
The Details
The Good
The Good
Scalable: effectively
“unlimited” storage
The Good
Scalable: effectively
“unlimited” storage
Reliable: 99.9%
guaranteed uptime and
very redundant
The Good
Scalable: effectively
“unlimited” storage
Reliable: 99.9%
guaranteed uptime and
very redundant
Inexpensive: rates for
GB in cents
The Good
Scalable: effectively
“unlimited” storage
Reliable: 99.9%
guaranteed uptime and
very redundant
Inexpensive: rates for
GB in cents
Universal: everything
supports it
Transmit has FTP-like S3
Support in libraries, command-line tools, and programs
Transmit has FTP-like S3
Support in libraries, command-line tools, and programs
Transmit has FTP-like S3
Support in libraries, command-line tools, and programs
Transmit has FTP-like S3
Support in libraries, command-line tools, and programs
Transmit has FTP-like S3
Support in libraries, command-line tools, and programs
The Not-So-Good
The Not-So-Good
Not quite worldly:
servers in the U.S.,
California, and Ireland
The Not-So-Good
Not quite worldly:
servers in the U.S.,
California, and Ireland
Simple, but not quite
curl/wget simple
The Not-So-Good
Not quite worldly:
servers in the U.S.,
California, and Ireland
Simple, but not quite
curl/wget simple
The service is
“eventually consistent”
Eventual Consistency
All machines will “eventually” see the same data in S3
Now




    Eventual Consistency
All machines will “eventually” see the same data in S3
Eventually

                      Later
                                 Now




    Eventual Consistency
All machines will “eventually” see the same data in S3
Eventually

                      Later
                                 Now




    Eventual Consistency
All machines will “eventually” see the same data in S3

Más contenido relacionado

La actualidad más candente

Scaling on AWS for the First 10 Million Users
Scaling on AWS for the First 10 Million UsersScaling on AWS for the First 10 Million Users
Scaling on AWS for the First 10 Million UsersAmazon Web Services
 
AWS Security Best Practices and Design Patterns
AWS Security Best Practices and Design PatternsAWS Security Best Practices and Design Patterns
AWS Security Best Practices and Design PatternsAmazon Web Services
 
Amazon Virtual Private Cloud (VPC): Networking Fundamentals and Connectivity ...
Amazon Virtual Private Cloud (VPC): Networking Fundamentals and Connectivity ...Amazon Virtual Private Cloud (VPC): Networking Fundamentals and Connectivity ...
Amazon Virtual Private Cloud (VPC): Networking Fundamentals and Connectivity ...Amazon Web Services
 
(STG401) Amazon S3 Deep Dive & Best Practices
(STG401) Amazon S3 Deep Dive & Best Practices(STG401) Amazon S3 Deep Dive & Best Practices
(STG401) Amazon S3 Deep Dive & Best PracticesAmazon Web Services
 
Deep Dive on Amazon RDS (Relational Database Service)
Deep Dive on Amazon RDS (Relational Database Service)Deep Dive on Amazon RDS (Relational Database Service)
Deep Dive on Amazon RDS (Relational Database Service)Amazon Web Services
 
Amazon AWS | What is Amazon AWS | AWS Tutorial | AWS Training | Edureka
Amazon AWS | What is Amazon AWS | AWS Tutorial | AWS Training | EdurekaAmazon AWS | What is Amazon AWS | AWS Tutorial | AWS Training | Edureka
Amazon AWS | What is Amazon AWS | AWS Tutorial | AWS Training | EdurekaEdureka!
 
AWS Monitoring & Logging
AWS Monitoring & LoggingAWS Monitoring & Logging
AWS Monitoring & LoggingJason Poley
 
AWS S3 Tutorial For Beginners | Edureka
AWS S3 Tutorial For Beginners | EdurekaAWS S3 Tutorial For Beginners | Edureka
AWS S3 Tutorial For Beginners | EdurekaEdureka!
 
Amazon Relational Database Service (Amazon RDS)
Amazon Relational Database Service (Amazon RDS)Amazon Relational Database Service (Amazon RDS)
Amazon Relational Database Service (Amazon RDS)Amazon Web Services
 
Introduction to AWS VPC, Guidelines, and Best Practices
Introduction to AWS VPC, Guidelines, and Best PracticesIntroduction to AWS VPC, Guidelines, and Best Practices
Introduction to AWS VPC, Guidelines, and Best PracticesGary Silverman
 
(SEC318) AWS CloudTrail Deep Dive
(SEC318) AWS CloudTrail Deep Dive(SEC318) AWS CloudTrail Deep Dive
(SEC318) AWS CloudTrail Deep DiveAmazon Web Services
 
Deep Dive on Amazon S3 - AWS Online Tech Talks
Deep Dive on Amazon S3 - AWS Online Tech TalksDeep Dive on Amazon S3 - AWS Online Tech Talks
Deep Dive on Amazon S3 - AWS Online Tech TalksAmazon Web Services
 
Getting Started with AWS Database Migration Service
Getting Started with AWS Database Migration ServiceGetting Started with AWS Database Migration Service
Getting Started with AWS Database Migration ServiceAmazon Web Services
 
Cloudwatch: Monitoring your Services with Metrics and Alarms
Cloudwatch: Monitoring your Services with Metrics and AlarmsCloudwatch: Monitoring your Services with Metrics and Alarms
Cloudwatch: Monitoring your Services with Metrics and AlarmsFelipe
 

La actualidad más candente (20)

AWS Simple Storage Service (s3)
AWS Simple Storage Service (s3) AWS Simple Storage Service (s3)
AWS Simple Storage Service (s3)
 
Azure storage
Azure storageAzure storage
Azure storage
 
AWS SQS SNS
AWS SQS SNSAWS SQS SNS
AWS SQS SNS
 
Scaling on AWS for the First 10 Million Users
Scaling on AWS for the First 10 Million UsersScaling on AWS for the First 10 Million Users
Scaling on AWS for the First 10 Million Users
 
AWS Security Best Practices and Design Patterns
AWS Security Best Practices and Design PatternsAWS Security Best Practices and Design Patterns
AWS Security Best Practices and Design Patterns
 
Amazon Virtual Private Cloud (VPC): Networking Fundamentals and Connectivity ...
Amazon Virtual Private Cloud (VPC): Networking Fundamentals and Connectivity ...Amazon Virtual Private Cloud (VPC): Networking Fundamentals and Connectivity ...
Amazon Virtual Private Cloud (VPC): Networking Fundamentals and Connectivity ...
 
Security Best Practices on AWS
Security Best Practices on AWSSecurity Best Practices on AWS
Security Best Practices on AWS
 
(STG401) Amazon S3 Deep Dive & Best Practices
(STG401) Amazon S3 Deep Dive & Best Practices(STG401) Amazon S3 Deep Dive & Best Practices
(STG401) Amazon S3 Deep Dive & Best Practices
 
Deep Dive on Amazon RDS (Relational Database Service)
Deep Dive on Amazon RDS (Relational Database Service)Deep Dive on Amazon RDS (Relational Database Service)
Deep Dive on Amazon RDS (Relational Database Service)
 
Amazon AWS | What is Amazon AWS | AWS Tutorial | AWS Training | Edureka
Amazon AWS | What is Amazon AWS | AWS Tutorial | AWS Training | EdurekaAmazon AWS | What is Amazon AWS | AWS Tutorial | AWS Training | Edureka
Amazon AWS | What is Amazon AWS | AWS Tutorial | AWS Training | Edureka
 
AWS RDS
AWS RDSAWS RDS
AWS RDS
 
Amazon S3 and EC2
Amazon S3 and EC2Amazon S3 and EC2
Amazon S3 and EC2
 
AWS Monitoring & Logging
AWS Monitoring & LoggingAWS Monitoring & Logging
AWS Monitoring & Logging
 
AWS S3 Tutorial For Beginners | Edureka
AWS S3 Tutorial For Beginners | EdurekaAWS S3 Tutorial For Beginners | Edureka
AWS S3 Tutorial For Beginners | Edureka
 
Amazon Relational Database Service (Amazon RDS)
Amazon Relational Database Service (Amazon RDS)Amazon Relational Database Service (Amazon RDS)
Amazon Relational Database Service (Amazon RDS)
 
Introduction to AWS VPC, Guidelines, and Best Practices
Introduction to AWS VPC, Guidelines, and Best PracticesIntroduction to AWS VPC, Guidelines, and Best Practices
Introduction to AWS VPC, Guidelines, and Best Practices
 
(SEC318) AWS CloudTrail Deep Dive
(SEC318) AWS CloudTrail Deep Dive(SEC318) AWS CloudTrail Deep Dive
(SEC318) AWS CloudTrail Deep Dive
 
Deep Dive on Amazon S3 - AWS Online Tech Talks
Deep Dive on Amazon S3 - AWS Online Tech TalksDeep Dive on Amazon S3 - AWS Online Tech Talks
Deep Dive on Amazon S3 - AWS Online Tech Talks
 
Getting Started with AWS Database Migration Service
Getting Started with AWS Database Migration ServiceGetting Started with AWS Database Migration Service
Getting Started with AWS Database Migration Service
 
Cloudwatch: Monitoring your Services with Metrics and Alarms
Cloudwatch: Monitoring your Services with Metrics and AlarmsCloudwatch: Monitoring your Services with Metrics and Alarms
Cloudwatch: Monitoring your Services with Metrics and Alarms
 

Similar a Amazon's Simple Storage Service (S3)

Mastering the AWS SDK for PHP (TLS306) | AWS re:Invent 2013
Mastering the AWS SDK for PHP (TLS306) | AWS re:Invent 2013Mastering the AWS SDK for PHP (TLS306) | AWS re:Invent 2013
Mastering the AWS SDK for PHP (TLS306) | AWS re:Invent 2013Amazon Web Services
 
AWS for Startups, London - Programming AWS
AWS for Startups, London - Programming AWSAWS for Startups, London - Programming AWS
AWS for Startups, London - Programming AWSAmazon Web Services
 
Terraform, Ansible, or pure CloudFormation?
Terraform, Ansible, or pure CloudFormation?Terraform, Ansible, or pure CloudFormation?
Terraform, Ansible, or pure CloudFormation?geekQ
 
Workshop: Building Your First Big Data Application on AWS
Workshop: Building Your First Big Data Application on AWSWorkshop: Building Your First Big Data Application on AWS
Workshop: Building Your First Big Data Application on AWSAmazon Web Services
 
DevOps for the Enterprise: Virtual Office Hours
DevOps for the Enterprise: Virtual Office HoursDevOps for the Enterprise: Virtual Office Hours
DevOps for the Enterprise: Virtual Office HoursAmazon Web Services
 
Amazon Cloud Services and Zend Framework
Amazon Cloud Services and Zend FrameworkAmazon Cloud Services and Zend Framework
Amazon Cloud Services and Zend FrameworkShahar Evron
 
solving little problems
solving little problemssolving little problems
solving little problemsAustin Ziegler
 
Serverless cat detector workshop - cloudyna 2017 (16.12.2017)
Serverless cat detector   workshop - cloudyna 2017 (16.12.2017)Serverless cat detector   workshop - cloudyna 2017 (16.12.2017)
Serverless cat detector workshop - cloudyna 2017 (16.12.2017)Paweł Pikuła
 
(DEV301) Automating AWS with the AWS CLI
(DEV301) Automating AWS with the AWS CLI(DEV301) Automating AWS with the AWS CLI
(DEV301) Automating AWS with the AWS CLIAmazon Web Services
 
Deployment and Management on AWS:
 A Deep Dive on Options and Tools
Deployment and Management on AWS:
 A Deep Dive on Options and ToolsDeployment and Management on AWS:
 A Deep Dive on Options and Tools
Deployment and Management on AWS:
 A Deep Dive on Options and ToolsDanilo Poccia
 
AWS SDK for PHP のインストールから 始めるクラウドマスターへの道 〜 Promise による非同期オペレーション 〜
AWS SDK for PHP のインストールから 始めるクラウドマスターへの道 〜 Promise による非同期オペレーション 〜 AWS SDK for PHP のインストールから 始めるクラウドマスターへの道 〜 Promise による非同期オペレーション 〜
AWS SDK for PHP のインストールから 始めるクラウドマスターへの道 〜 Promise による非同期オペレーション 〜 崇之 清水
 
Developing and deploying serverless applications (February 2017)
Developing and deploying serverless applications (February 2017)Developing and deploying serverless applications (February 2017)
Developing and deploying serverless applications (February 2017)Julien SIMON
 
(DVO304) AWS CloudFormation Best Practices
(DVO304) AWS CloudFormation Best Practices(DVO304) AWS CloudFormation Best Practices
(DVO304) AWS CloudFormation Best PracticesAmazon Web Services
 
Amazon Web Services for PHP Developers
Amazon Web Services for PHP DevelopersAmazon Web Services for PHP Developers
Amazon Web Services for PHP DevelopersJeremy Lindblom
 
Terraform, Ansible or pure CloudFormation
Terraform, Ansible or pure CloudFormationTerraform, Ansible or pure CloudFormation
Terraform, Ansible or pure CloudFormationgeekQ
 
On secure application of PHP wrappers
On secure application  of PHP wrappersOn secure application  of PHP wrappers
On secure application of PHP wrappersPositive Hack Days
 
AWS Lambda for Data Science @Celerative
AWS Lambda for Data Science @CelerativeAWS Lambda for Data Science @Celerative
AWS Lambda for Data Science @CelerativeCelerative
 
Building Your First Big Data Application on AWS
Building Your First Big Data Application on AWSBuilding Your First Big Data Application on AWS
Building Your First Big Data Application on AWSAmazon Web Services
 

Similar a Amazon's Simple Storage Service (S3) (20)

Mastering the AWS SDK for PHP (TLS306) | AWS re:Invent 2013
Mastering the AWS SDK for PHP (TLS306) | AWS re:Invent 2013Mastering the AWS SDK for PHP (TLS306) | AWS re:Invent 2013
Mastering the AWS SDK for PHP (TLS306) | AWS re:Invent 2013
 
AWS for Startups, London - Programming AWS
AWS for Startups, London - Programming AWSAWS for Startups, London - Programming AWS
AWS for Startups, London - Programming AWS
 
Terraform, Ansible, or pure CloudFormation?
Terraform, Ansible, or pure CloudFormation?Terraform, Ansible, or pure CloudFormation?
Terraform, Ansible, or pure CloudFormation?
 
Workshop: Building Your First Big Data Application on AWS
Workshop: Building Your First Big Data Application on AWSWorkshop: Building Your First Big Data Application on AWS
Workshop: Building Your First Big Data Application on AWS
 
API Design
API DesignAPI Design
API Design
 
DevOps for the Enterprise: Virtual Office Hours
DevOps for the Enterprise: Virtual Office HoursDevOps for the Enterprise: Virtual Office Hours
DevOps for the Enterprise: Virtual Office Hours
 
Amazon Cloud Services and Zend Framework
Amazon Cloud Services and Zend FrameworkAmazon Cloud Services and Zend Framework
Amazon Cloud Services and Zend Framework
 
solving little problems
solving little problemssolving little problems
solving little problems
 
PHP API
PHP APIPHP API
PHP API
 
Serverless cat detector workshop - cloudyna 2017 (16.12.2017)
Serverless cat detector   workshop - cloudyna 2017 (16.12.2017)Serverless cat detector   workshop - cloudyna 2017 (16.12.2017)
Serverless cat detector workshop - cloudyna 2017 (16.12.2017)
 
(DEV301) Automating AWS with the AWS CLI
(DEV301) Automating AWS with the AWS CLI(DEV301) Automating AWS with the AWS CLI
(DEV301) Automating AWS with the AWS CLI
 
Deployment and Management on AWS:
 A Deep Dive on Options and Tools
Deployment and Management on AWS:
 A Deep Dive on Options and ToolsDeployment and Management on AWS:
 A Deep Dive on Options and Tools
Deployment and Management on AWS:
 A Deep Dive on Options and Tools
 
AWS SDK for PHP のインストールから 始めるクラウドマスターへの道 〜 Promise による非同期オペレーション 〜
AWS SDK for PHP のインストールから 始めるクラウドマスターへの道 〜 Promise による非同期オペレーション 〜 AWS SDK for PHP のインストールから 始めるクラウドマスターへの道 〜 Promise による非同期オペレーション 〜
AWS SDK for PHP のインストールから 始めるクラウドマスターへの道 〜 Promise による非同期オペレーション 〜
 
Developing and deploying serverless applications (February 2017)
Developing and deploying serverless applications (February 2017)Developing and deploying serverless applications (February 2017)
Developing and deploying serverless applications (February 2017)
 
(DVO304) AWS CloudFormation Best Practices
(DVO304) AWS CloudFormation Best Practices(DVO304) AWS CloudFormation Best Practices
(DVO304) AWS CloudFormation Best Practices
 
Amazon Web Services for PHP Developers
Amazon Web Services for PHP DevelopersAmazon Web Services for PHP Developers
Amazon Web Services for PHP Developers
 
Terraform, Ansible or pure CloudFormation
Terraform, Ansible or pure CloudFormationTerraform, Ansible or pure CloudFormation
Terraform, Ansible or pure CloudFormation
 
On secure application of PHP wrappers
On secure application  of PHP wrappersOn secure application  of PHP wrappers
On secure application of PHP wrappers
 
AWS Lambda for Data Science @Celerative
AWS Lambda for Data Science @CelerativeAWS Lambda for Data Science @Celerative
AWS Lambda for Data Science @Celerative
 
Building Your First Big Data Application on AWS
Building Your First Big Data Application on AWSBuilding Your First Big Data Application on AWS
Building Your First Big Data Application on AWS
 

Más de James Gray

A Dickens of A Keynote
A Dickens of A KeynoteA Dickens of A Keynote
A Dickens of A KeynoteJames Gray
 
Regular expressions
Regular expressionsRegular expressions
Regular expressionsJames Gray
 
Counting on God
Counting on GodCounting on God
Counting on GodJames Gray
 
In the Back of Your Mind
In the Back of Your MindIn the Back of Your Mind
In the Back of Your MindJames Gray
 
Git and GitHub
Git and GitHubGit and GitHub
Git and GitHubJames Gray
 
Test Coverage in Rails
Test Coverage in RailsTest Coverage in Rails
Test Coverage in RailsJames Gray
 
Rails Routing And Rendering
Rails Routing And RenderingRails Routing And Rendering
Rails Routing And RenderingJames Gray
 
Sending Email with Rails
Sending Email with RailsSending Email with Rails
Sending Email with RailsJames Gray
 
Associations in Rails
Associations in RailsAssociations in Rails
Associations in RailsJames Gray
 
DRYing Up Rails Views and Controllers
DRYing Up Rails Views and ControllersDRYing Up Rails Views and Controllers
DRYing Up Rails Views and ControllersJames Gray
 
Building a Rails Interface
Building a Rails InterfaceBuilding a Rails Interface
Building a Rails InterfaceJames Gray
 
Rails Model Basics
Rails Model BasicsRails Model Basics
Rails Model BasicsJames Gray
 
Wed Development on Rails
Wed Development on RailsWed Development on Rails
Wed Development on RailsJames Gray
 

Más de James Gray (17)

A Dickens of A Keynote
A Dickens of A KeynoteA Dickens of A Keynote
A Dickens of A Keynote
 
I Doubt That!
I Doubt That!I Doubt That!
I Doubt That!
 
Regular expressions
Regular expressionsRegular expressions
Regular expressions
 
Counting on God
Counting on GodCounting on God
Counting on God
 
In the Back of Your Mind
In the Back of Your MindIn the Back of Your Mind
In the Back of Your Mind
 
Unblocked
UnblockedUnblocked
Unblocked
 
Module Magic
Module MagicModule Magic
Module Magic
 
Git and GitHub
Git and GitHubGit and GitHub
Git and GitHub
 
Test Coverage in Rails
Test Coverage in RailsTest Coverage in Rails
Test Coverage in Rails
 
Rails Routing And Rendering
Rails Routing And RenderingRails Routing And Rendering
Rails Routing And Rendering
 
Sending Email with Rails
Sending Email with RailsSending Email with Rails
Sending Email with Rails
 
Associations in Rails
Associations in RailsAssociations in Rails
Associations in Rails
 
DRYing Up Rails Views and Controllers
DRYing Up Rails Views and ControllersDRYing Up Rails Views and Controllers
DRYing Up Rails Views and Controllers
 
Building a Rails Interface
Building a Rails InterfaceBuilding a Rails Interface
Building a Rails Interface
 
Rails Model Basics
Rails Model BasicsRails Model Basics
Rails Model Basics
 
Ruby
RubyRuby
Ruby
 
Wed Development on Rails
Wed Development on RailsWed Development on Rails
Wed Development on Rails
 

Último

Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 

Último (20)

Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 

Amazon's Simple Storage Service (S3)

  • 1. AMAZON SIMPLE STORAGE SERVICE (S3) The Infinite Hard Drive in the Cloud
  • 3. What is S3? A RESTful (or SOAP) data storage API
  • 4. What is S3? A RESTful (or SOAP) data storage API Supports HTTP and BitTorrent protocols Control headers to serve content straight from S3
  • 5. What is S3? A RESTful (or SOAP) data storage API Supports HTTP and BitTorrent protocols Control headers to serve content straight from S3 Full access control per file or user Preauthorize direct uploads by users
  • 6. What is S3? A RESTful (or SOAP) data storage API Supports HTTP and BitTorrent protocols Control headers to serve content straight from S3 Full access control per file or user Preauthorize direct uploads by users Billed by capacity stored and transfer rates
  • 11. Creating/Listing Buckets Globally unique “buckets” hold files on S3
  • 12. #!/usr/bin/env ruby -KU $VERBOSE = nil require "rubygems" require "aws" # sudo gem install aws s3 = Aws::S3.new( "ACCESS_KEY_ID", "SECRET_ACCESS_KEY", :logger => Logger.new("/dev/null") ) puts "Your buckets: " + s3.buckets.map { |b| b.name }.join(', ') puts print "Creating the bucket graysoftinc... " s3.bucket("graysoftinc", :create, "private") puts "Done." puts puts "Your buckets: " + s3.buckets.map { |b| b.name }.join(', ') Creating/Listing Buckets Globally unique “buckets” hold files on S3
  • 13. #!/usr/bin/env ruby -KU $VERBOSE = nil require "rubygems" require "aws" # sudo gem install aws s3 = Aws::S3.new( "ACCESS_KEY_ID", "SECRET_ACCESS_KEY", :logger => Logger.new("/dev/null") ) puts "Your buckets: " + s3.buckets.map { |b| b.name }.join(', ') puts print "Creating the bucket graysoftinc... " s3.bucket("graysoftinc", :create, "private") puts "Done." puts puts "Your buckets: " + s3.buckets.map { |b| b.name }.join(', ') Creating/Listing Buckets Globally unique “buckets” hold files on S3
  • 14. #!/usr/bin/env ruby -KU $VERBOSE = nil require "rubygems" require "aws" # sudo gem install aws s3 = Aws::S3.new( "ACCESS_KEY_ID", "SECRET_ACCESS_KEY", :logger => Logger.new("/dev/null") ) puts "Your buckets: " + s3.buckets.map { |b| b.name }.join(', ') puts print "Creating the bucket graysoftinc... " s3.bucket("graysoftinc", :create, "private") puts "Done." puts puts "Your buckets: " + s3.buckets.map { |b| b.name }.join(', ') Creating/Listing Buckets Globally unique “buckets” hold files on S3
  • 15. #!/usr/bin/env ruby -KU $VERBOSE = nil require "rubygems" require "aws" # sudo gem install aws s3 = Aws::S3.new( "ACCESS_KEY_ID", "SECRET_ACCESS_KEY", :logger => Logger.new("/dev/null") ) puts "Your buckets: " + s3.buckets.map { |b| b.name }.join(', ') puts print "Creating the bucket graysoftinc... " s3.bucket("graysoftinc", :create, "private") puts "Done." puts puts "Your buckets: " + s3.buckets.map { |b| b.name }.join(', ') Creating/Listing Buckets Globally unique “buckets” hold files on S3
  • 16. #!/usr/bin/env ruby -KU $VERBOSE = nil require "rubygems" require "aws" # sudo gem install aws s3 = Aws::S3.new( "ACCESS_KEY_ID", "SECRET_ACCESS_KEY", :logger => Logger.new("/dev/null") ) puts "Your buckets: " + s3.buckets.map { |b| b.name }.join(', ') puts print "Creating the bucket graysoftinc... " s3.bucket("graysoftinc", :create, "private") puts "Done." puts puts "Your buckets: " + s3.buckets.map { |b| b.name }.join(', ') Creating/Listing Buckets Globally unique “buckets” hold files on S3
  • 17. Your buckets: Creating the bucket graysoftinc... Done. Your buckets: graysoftinc Creating/Listing Buckets Globally unique “buckets” hold files on S3
  • 18. Uploading/Listing Files Files are “objects” stored under “keys” on S3
  • 19. #!/usr/bin/env ruby -KU $VERBOSE = nil require "rubygems" require "aws" # sudo gem install aws s3 = Aws::S3.new( "ACCESS_KEY_ID", "SECRET_ACCESS_KEY", :logger => Logger.new("/dev/null") ) bucket = s3.bucket("graysoftinc") puts "Files:", bucket.keys.map { |k| k.name } puts open(__FILE__) do |f| bucket.put("presentations/upload.rb", f) end bucket.copy_key("presentations/upload.rb", "ruby/upload.rb") puts "Files:", bucket.keys.map { |k| k.name } puts "ruby/:", bucket.keys(:prefix => "ruby/").map { |k| k.name } Uploading/Listing Files Files are “objects” stored under “keys” on S3
  • 20. #!/usr/bin/env ruby -KU $VERBOSE = nil require "rubygems" require "aws" # sudo gem install aws s3 = Aws::S3.new( "ACCESS_KEY_ID", "SECRET_ACCESS_KEY", :logger => Logger.new("/dev/null") ) bucket = s3.bucket("graysoftinc") puts "Files:", bucket.keys.map { |k| k.name } puts open(__FILE__) do |f| bucket.put("presentations/upload.rb", f) end bucket.copy_key("presentations/upload.rb", "ruby/upload.rb") puts "Files:", bucket.keys.map { |k| k.name } puts "ruby/:", bucket.keys(:prefix => "ruby/").map { |k| k.name } Uploading/Listing Files Files are “objects” stored under “keys” on S3
  • 21. #!/usr/bin/env ruby -KU $VERBOSE = nil require "rubygems" require "aws" # sudo gem install aws s3 = Aws::S3.new( "ACCESS_KEY_ID", "SECRET_ACCESS_KEY", :logger => Logger.new("/dev/null") ) bucket = s3.bucket("graysoftinc") puts "Files:", bucket.keys.map { |k| k.name } puts open(__FILE__) do |f| bucket.put("presentations/upload.rb", f) end bucket.copy_key("presentations/upload.rb", "ruby/upload.rb") puts "Files:", bucket.keys.map { |k| k.name } puts "ruby/:", bucket.keys(:prefix => "ruby/").map { |k| k.name } Uploading/Listing Files Files are “objects” stored under “keys” on S3
  • 22. #!/usr/bin/env ruby -KU $VERBOSE = nil require "rubygems" require "aws" # sudo gem install aws s3 = Aws::S3.new( "ACCESS_KEY_ID", "SECRET_ACCESS_KEY", :logger => Logger.new("/dev/null") ) bucket = s3.bucket("graysoftinc") puts "Files:", bucket.keys.map { |k| k.name } puts open(__FILE__) do |f| bucket.put("presentations/upload.rb", f) end bucket.copy_key("presentations/upload.rb", "ruby/upload.rb") puts "Files:", bucket.keys.map { |k| k.name } puts "ruby/:", bucket.keys(:prefix => "ruby/").map { |k| k.name } Uploading/Listing Files Files are “objects” stored under “keys” on S3
  • 23. #!/usr/bin/env ruby -KU $VERBOSE = nil require "rubygems" require "aws" # sudo gem install aws s3 = Aws::S3.new( "ACCESS_KEY_ID", "SECRET_ACCESS_KEY", :logger => Logger.new("/dev/null") ) bucket = s3.bucket("graysoftinc") puts "Files:", bucket.keys.map { |k| k.name } puts open(__FILE__) do |f| bucket.put("presentations/upload.rb", f) end bucket.copy_key("presentations/upload.rb", "ruby/upload.rb") puts "Files:", bucket.keys.map { |k| k.name } puts "ruby/:", bucket.keys(:prefix => "ruby/").map { |k| k.name } Uploading/Listing Files Files are “objects” stored under “keys” on S3
  • 24. #!/usr/bin/env ruby -KU $VERBOSE = nil require "rubygems" require "aws" # sudo gem install aws s3 = Aws::S3.new( "ACCESS_KEY_ID", "SECRET_ACCESS_KEY", :logger => Logger.new("/dev/null") ) bucket = s3.bucket("graysoftinc") puts "Files:", bucket.keys.map { |k| k.name } puts open(__FILE__) do |f| bucket.put("presentations/upload.rb", f) end bucket.copy_key("presentations/upload.rb", "ruby/upload.rb") puts "Files:", bucket.keys.map { |k| k.name } puts "ruby/:", bucket.keys(:prefix => "ruby/").map { |k| k.name } Uploading/Listing Files Files are “objects” stored under “keys” on S3
  • 25. Files: Files: presentations/upload.rb ruby/upload.rb ruby/: ruby/upload.rb Uploading/Listing Files Files are “objects” stored under “keys” on S3
  • 26. Files: Files: presentations/upload.rb ruby/upload.rb ruby/: ruby/upload.rb Uploading/Listing Files Files are “objects” stored under “keys” on S3
  • 27. Downloading a File You can stream files to and from S3
  • 28. #!/usr/bin/env ruby -KU $VERBOSE = nil require "rubygems" require "aws" # sudo gem install aws s3 = Aws::S3Interface.new( "ACCESS_KEY_ID", "SECRET_ACCESS_KEY", :logger => Logger.new("/dev/null") ) open("downloaded.rb", "w") do |f| s3.get("graysoftinc", "ruby/upload.rb") do |chunk| f << chunk end end Downloading a File You can stream files to and from S3
  • 29. #!/usr/bin/env ruby -KU $VERBOSE = nil require "rubygems" require "aws" # sudo gem install aws s3 = Aws::S3Interface.new( "ACCESS_KEY_ID", "SECRET_ACCESS_KEY", :logger => Logger.new("/dev/null") ) open("downloaded.rb", "w") do |f| s3.get("graysoftinc", "ruby/upload.rb") do |chunk| f << chunk end end Downloading a File You can stream files to and from S3
  • 30. #!/usr/bin/env ruby -KU $VERBOSE = nil require "rubygems" require "aws" # sudo gem install aws s3 = Aws::S3Interface.new( "ACCESS_KEY_ID", "SECRET_ACCESS_KEY", :logger => Logger.new("/dev/null") ) open("downloaded.rb", "w") do |f| s3.get("graysoftinc", "ruby/upload.rb") do |chunk| f << chunk end end Downloading a File You can stream files to and from S3
  • 35. The Good Scalable: effectively “unlimited” storage Reliable: 99.9% guaranteed uptime and very redundant
  • 36. The Good Scalable: effectively “unlimited” storage Reliable: 99.9% guaranteed uptime and very redundant Inexpensive: rates for GB in cents
  • 37. The Good Scalable: effectively “unlimited” storage Reliable: 99.9% guaranteed uptime and very redundant Inexpensive: rates for GB in cents Universal: everything supports it
  • 38. Transmit has FTP-like S3 Support in libraries, command-line tools, and programs
  • 39. Transmit has FTP-like S3 Support in libraries, command-line tools, and programs
  • 40. Transmit has FTP-like S3 Support in libraries, command-line tools, and programs
  • 41. Transmit has FTP-like S3 Support in libraries, command-line tools, and programs
  • 42. Transmit has FTP-like S3 Support in libraries, command-line tools, and programs
  • 44. The Not-So-Good Not quite worldly: servers in the U.S., California, and Ireland
  • 45. The Not-So-Good Not quite worldly: servers in the U.S., California, and Ireland Simple, but not quite curl/wget simple
  • 46. The Not-So-Good Not quite worldly: servers in the U.S., California, and Ireland Simple, but not quite curl/wget simple The service is “eventually consistent”
  • 47. Eventual Consistency All machines will “eventually” see the same data in S3
  • 48. Now Eventual Consistency All machines will “eventually” see the same data in S3
  • 49. Eventually Later Now Eventual Consistency All machines will “eventually” see the same data in S3
  • 50. Eventually Later Now Eventual Consistency All machines will “eventually” see the same data in S3

Notas del editor