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

La actualidad más candente (20)

Amazon S3 Masterclass
Amazon S3 MasterclassAmazon S3 Masterclass
Amazon S3 Masterclass
 
Deep Dive on Amazon S3 Security and Management (E2471STG303-R1) - AWS re:Inve...
Deep Dive on Amazon S3 Security and Management (E2471STG303-R1) - AWS re:Inve...Deep Dive on Amazon S3 Security and Management (E2471STG303-R1) - AWS re:Inve...
Deep Dive on Amazon S3 Security and Management (E2471STG303-R1) - AWS re:Inve...
 
Amazon CloudWatch Tutorial | AWS Certification | Cloud Monitoring Tools | AWS...
Amazon CloudWatch Tutorial | AWS Certification | Cloud Monitoring Tools | AWS...Amazon CloudWatch Tutorial | AWS Certification | Cloud Monitoring Tools | AWS...
Amazon CloudWatch Tutorial | AWS Certification | Cloud Monitoring Tools | AWS...
 
AWS Security Best Practices
AWS Security Best PracticesAWS Security Best Practices
AWS Security Best Practices
 
IAM Introduction
IAM IntroductionIAM Introduction
IAM Introduction
 
AWS Lambda Tutorial | Introduction to AWS Lambda | AWS Tutorial | AWS Trainin...
AWS Lambda Tutorial | Introduction to AWS Lambda | AWS Tutorial | AWS Trainin...AWS Lambda Tutorial | Introduction to AWS Lambda | AWS Tutorial | AWS Trainin...
AWS Lambda Tutorial | Introduction to AWS Lambda | AWS Tutorial | AWS Trainin...
 
Encryption and Key Management in AWS
Encryption and Key Management in AWSEncryption and Key Management in AWS
Encryption and Key Management in AWS
 
AWS 101
AWS 101AWS 101
AWS 101
 
Aws Developer Associate Overview
Aws Developer Associate OverviewAws Developer Associate Overview
Aws Developer Associate Overview
 
Module 1: Introduction to the AWS Cloud - AWSome Day Online Conference 2019
Module 1: Introduction to the AWS Cloud - AWSome Day Online Conference 2019Module 1: Introduction to the AWS Cloud - AWSome Day Online Conference 2019
Module 1: Introduction to the AWS Cloud - AWSome Day Online Conference 2019
 
Security Best Practices on AWS
Security Best Practices on AWSSecurity Best Practices on AWS
Security Best Practices on AWS
 
Azure role based access control (rbac)
Azure role based access control (rbac)Azure role based access control (rbac)
Azure role based access control (rbac)
 
AWS Cloud Watch
AWS Cloud WatchAWS Cloud Watch
AWS Cloud Watch
 
AWS Lambda
AWS LambdaAWS Lambda
AWS Lambda
 
Introduction to AWS Lambda and Serverless Applications
Introduction to AWS Lambda and Serverless ApplicationsIntroduction to AWS Lambda and Serverless Applications
Introduction to AWS Lambda and Serverless Applications
 
Introduction to Amazon S3
Introduction to Amazon S3Introduction to Amazon S3
Introduction to Amazon S3
 
Building Secure Architectures on AWS
Building Secure Architectures on AWSBuilding Secure Architectures on AWS
Building Secure Architectures on AWS
 
(STG402) Amazon EBS Deep Dive
(STG402) Amazon EBS Deep Dive(STG402) Amazon EBS Deep Dive
(STG402) Amazon EBS Deep Dive
 
ABCs of AWS: S3
ABCs of AWS: S3ABCs of AWS: S3
ABCs of AWS: S3
 
AWS Technical Essentials Day
AWS Technical Essentials DayAWS Technical Essentials Day
AWS Technical Essentials Day
 

Similar a Amazon's Simple Storage Service (S3)

Amazon Cloud Services and Zend Framework
Amazon Cloud Services and Zend FrameworkAmazon Cloud Services and Zend Framework
Amazon Cloud Services and Zend Framework
Shahar Evron
 
AWS SDK for PHP のインストールから 始めるクラウドマスターへの道 〜 Promise による非同期オペレーション 〜
AWS SDK for PHP のインストールから 始めるクラウドマスターへの道 〜 Promise による非同期オペレーション 〜 AWS SDK for PHP のインストールから 始めるクラウドマスターへの道 〜 Promise による非同期オペレーション 〜
AWS SDK for PHP のインストールから 始めるクラウドマスターへの道 〜 Promise による非同期オペレーション 〜
崇之 清水
 
On secure application of PHP wrappers
On secure application  of PHP wrappersOn secure application  of PHP wrappers
On secure application of PHP wrappers
Positive Hack Days
 

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 Keynote
James 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

Último (20)

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...
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
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
 
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...
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
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
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 

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