Media Processing and Delivery on AWS, Santa Monica Meetup 6/25/14

1,886 views

Published on

Published in: Technology
0 Comments
17 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,886
On SlideShare
0
From Embeds
0
Number of Embeds
12
Actions
Shares
0
Downloads
0
Comments
0
Likes
17
Embeds 0
No embeds

No notes for slide

Media Processing and Delivery on AWS, Santa Monica Meetup 6/25/14

  1. 1. © 2011 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. Media Processing and Delivery on AWS Brett Hollman Manager, Solutions Architecture June 25th, 2014
  2. 2. © 2011 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. Media Processing and Delivery on AWS ME: Brett Hollman – Solutions Architect and Manager at Amazon Web Services YOU: here to learn more about media processing and delivery on AWS TODAY: discuss how to build a scalable media processing workflow and how to optimize delivery of that media on AWS
  3. 3. © 2011 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. 33 Agenda !   Media Basics !   Media Architectures using 3rd Party Products !   What Do We Need to Build Our Own Media Processing Platform? •  Storage for Videos •  Messaging Services to Decouple our application components •  Transcoding •  Distribution Globally with a Content Delivery Network !   Build It and They Will Come: Our Media Architecture •  Ruby Examples !   Analyze Your Users Behaviors
  4. 4. © 2011 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. Some Media Basics…
  5. 5. © 2011 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. Internet Video Delivery VOD – Video on Demand. Pre-recorded video delivered after the fact. Netflix, YouTube, Hulu..etc. Live – Live video streaming. Sports, News, Corporate Events
  6. 6. © 2011 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. Video Formats Container – is the packaging definition of digital information including video, audio and possibly other information such as meta data or subtitles. AVI : Audio Video Interleave – Older Microsoft Windows Container ASF : Advanced Systems Format - WMV, WMVA MKV : Matroska, open source container format FLV : Flash Video Format QuickTime : Apple – MOV MP4 (one way QTFF) MPEG : Moving Picture Experts Group MPEG-2 : DVDs MP4 / MPEG-4 Part 1 and Part 14 Ogg : Open / Free container WebM : Google (format for VP8) http://en.wikipedia.org/wiki/Comparison_of_container_formats
  7. 7. © 2011 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. Video Formats Software Codec – algorithms used to compress or decompress digital video. This compression is usually lossy. Popular Standards MPEG2 H.262 (DVD) MPEG4 MPEG4 H.264 AVC – Blu-ray, YouTube, Vimeo MPEG – HEVC H.265: High Efficiency Video Coding Popular Codecs DivX Xvid On2 (now Google) codecs, VP6, VP7, VP8 QuickTime H.264 Windows WMV7, WMV8, WMV9, VC-1 Ffmpeg MPEG-4 – very common open source codec x264 http://en.wikipedia.org/wiki/Video_codec
  8. 8. © 2011 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. Delivery Methods and Containers Traditional Streaming RTSP Real Time Streaming Protocol (Real / Quick Time) Flash / RTMP Adobe – Real Time Message Protocol, port 1935 (FLV MP4) Progressive Download HTTP If container & player supports playing back a file as it downloads, examples WebM, FLV, MP4 HTTP Streaming (Chunks / Byte Range Requests) HLS Apple – HTTP Live Streaming HDS Adobe – HTTP Dynamic Streaming Smooth` Microsoft Smooth Streaming DASH MPEG –Dynamic Adaptive Streaming
  9. 9. © 2011 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. Players PCs Stand Alone Apps – QuickTime, Core, Windows Media Player, Itunes… Flash Platform Players (“swf”) Build Your Own JW Player (HLS on the PC, most browsers) SilverLight Browser Supported - HTML 5 Video (TBD - Format and Browser) Devices (Roku, PS3, Xbox) HLS / SilverLight IOS HLS / Progressive Android RTSP, Progressive, TBD
  10. 10. © 2011 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. To reach all these different device types, we need…
  11. 11. © 2011 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. Transcoding Transcoder
  12. 12. © 2011 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. 3rd Party Products with CloudFront
  13. 13. © 2011 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. Streaming Solutions easily deployed with Cloudfront !   Live Streaming and VOD •  Wowza •  Adobe Media Server •  IIS Media Services !   RTMP – CloudFront Streaming Distribution !   Tutorials: •  http://docs.aws.amazon.com/AmazonCloudFront/latest/ DeveloperGuide/Tutorials.html
  14. 14. © 2011 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. Video Delivery - Wowza Media Server S3
  15. 15. © 2011 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. What Do We Need to Build Our Own Media Processing Platform for VOD?
  16. 16. © 2011 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. Compute   Storage  &   CDN   AWS  Global  Infrastructure   Database   Applica8on  Services   Deployment  &  Administra8on   Networking   S3  -­‐  Durable  storage,  any  object   99.999999999%  durability  of  objects.   Unlimited  storage  of  objects  of  any  type.   Up  to  5TB  size  per  object.   Feature Details Flexible object store Buckets act like drives, folder structures within Access control Granular control over object permissions Server-side encryption 256bit AES encryption of objects Multi-part uploads Improved throughput & control Object versioning Archive old objects and version new ones Object expiry Automatically remove old objects Access logging Full audit log of bucket/object actions Web content hosting Serve content as web site with built in page handling Notifications Receive notifications on key events Import/Export Physical device import/export service Storage: Simple Storage Service (S3)
  17. 17. © 2011 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. Compute   Storage  &   CDN   AWS  Global  Infrastructure   Database   Applica2on  Services   Deployment  &  Administra8on   Networking   Simple Queue Service (SQS) Amazon  Simple  Queue  Service   Reliable,  highly  scalable,  queue  service  for  storing   messages  as  they  travel  between  instances.   Amazon  SQS   Processing  task/ processing  trigger   Processing  results   Feature Details Reliable Messages stored redundantly across multiple availability zones Simple Simple APIs to send and receive messages Scalable Unlimited number of messages Secure Authentication of queues to ensure controlled access
  18. 18. © 2011 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. Compute   Storage  &   CDN   AWS  Global  Infrastructure   Database   Applica2on  Services   Deployment  &  Administra8on   Networking   Simple Notification Service (SNS) Simple  No8fica8on  Service   Fast,  flexible,  fully  managed  push  messaging  service.   Simple  and  cost-­‐effecIve  to  push  to  mobile  devices  such  as  iPhone,  iPad,  Android,  Kindle   Fire,  and  internet  connected  smart  devices,  as  well  as  pushing  to  other  distributed   services.   Feature Details Reliable Messages stored redundantly across multiple availability zones Simple Simple APIs to send and receive messages Functional Publish a message once, and deliver it one or more times. Can deliver notifications by SMS text message or email, to SQS queues, or to any HTTP endpoint.
  19. 19. © 2011 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. Simple Notification Service (SNS) – SNS Mobile Push Users opt-in to receive them Delivered to a specific app on a specific device Short messages: read, ignore, or acknowledge to launch the app Mobile push notifications engage customers when your app is not currently active.
  20. 20. © 2011 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. Compute   Storage  &   CDN   AWS  Global  Infrastructure   Database   Applica2on  Services   Deployment  &  Administra8on   Networking   Simple Email Service (SES) Service  for  sending  High-­‐Volume/High  Quality  Bulk  &   TransacIonal  Email.   Provides  a  built-­‐in  feedback  loop,  which  includes   noIficaIons  of  bounce  backs,  failed  and  successful   delivery  aUempts,  and  spam  complaints.     Feature Details Reliable Messages stored redundantly across multiple availability zones Simple Simple APIs to send and receive messages Functional Publish a message once, and deliver it one or more times. Can deliver notifications by SMS text message or email, to SQS queues, or to any HTTP endpoint. New Email Infrastructure to Manage
  21. 21. © 2011 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. Compute   Storage  &   CDN   AWS  Global  Infrastructure   Database   Applica2on  Services   Deployment  &  Administra8on   Networking   Cloud Search Document   Server     Results   Search   Server   Fully  managed,  elasIc  search  engine   Scales  automaIcally.   Feature Details Auto-scaling Automatically scales based upon request volumes and data volumes High performance In memory operation means consistently low latency for search results Sophisticated features Support for faceting, stemming, synonyms, stop words and custom rank expressions Low cost Elastic service, pay for what you use
  22. 22. © 2011 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. Transcoding Causes Customers Pain !   Difficult •  Choosing the right transcoding settings •  Building a system that performs well !   Scale •  Increasing amount of content •  Increasing number of output formats and devices !   Cost •  Building for peak is uneconomical •  Storage and delivery costs
  23. 23. © 2011 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. Compute   Storage  &   CDN   AWS  Global  Infrastructure   Database   Applica2on  Services   Deployment  &  Administra8on   Networking   Elastic Transcoder Easy-­‐to-­‐use,  Scalable  Video  Transcoding  in  the  Cloud.   Supports  H.264,  AAC,  MP4,  MPEG-­‐2,  FLV,  3GP  and  AVI.   Feature   Details   Simple   Use  web-­‐based  console  or  APIs  to  create  a   transcoding  job.     Pre-­‐defined  presets  for  various  devices   Scalable   Automa8cally  scales  up  and  down  to  handle   customers’  workloads.   Transcoding  Pipelines  for  parallel  transcoding.     Low  Cost   No  minimums,  no  commitments.   Simple,  per-­‐minute  pricing.   Customer Pain Elastic Transcoder Solves Manages Volume – Manages Peaks – Manages Formats
  24. 24. © 2011 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. CloudFront London   Paris   NY   Served  from  S3   /images/*     3   Served  from  EC2   *.php     2   Single  CNAME   www.mysite.com     1   World-­‐wide  content  distribuIon  network.   Easily  distribute  content  to  end  users  with  low  latency,   high  data  transfer  speeds,  and  no  commitments.     Feature Details Fast Multiple world-wide edge locations to serve content as close to your users as possible Integrated with other services Works seamlessly with S3 and EC2 origin servers Dynamic content Supports static and dynamic content from origin servers Geo-Blocking Restrict access to your content based on the geographic location of your viewers. Streaming Supports rtmp from S3 and includes support for live streaming from Adobe FMS and Microsoft Media Server http://aws.amazon.com/cloudfront/#details Compute   Storage  &   CDN   AWS  Global  Infrastructure   Database   Applica8on  Services   Deployment  &  Administra8on   Networking  
  25. 25. © 2011 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. CloudFront and the AWS Ecosystem !   Integrates with AWS resources •  DNS, Video Transcoding, Storage, Compute, Load Balancing, Marketplace, etc. !   Improves scalability of other Amazon resources !   Discounts on data transfer from Amazon S3, EC2 & ELB to CloudFront
  26. 26. © 2011 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. Elastic Load Balancing Dynamic Content Amazon  EC2   Static Content Amazon  S3   Custom Origin   OR   OR   Custom Origin   Amazon CloudFront example.com *.jpg *.php Your Partner in Customer Experience
  27. 27. © 2011 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. Build It and They Will Come: Our Media Architecture
  28. 28. © 2011 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. User Upload and Store – Post to EC2 and Transfer to S3 User S3 Route 53 ELB EC2 1 !   Advantages •  You have control of what is posted as you can do checks on the EC2 instance just in time on post •  Very easy to implement with a single form post •  Could make the copy from EC2 to S3 asynchronous using SQS !   Disadvantages •  The copy from EC2 to S3 causes more latency for the user •  Could add significant time for large videos •  No multipart API to post to EC2 Legend 1.  Post Video 2.  App redirects user upon completion 2 RDS
  29. 29. © 2011 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. User Upload and Store – Post directly to S3 User S3 Route 53 ELB EC2 !   Advantages •  Removing the copy from EC2 to S3 from last architecture •  Posting directly to S3 shortens the time it takes to get the video to its final destination •  May use S3 multipart upload for the post •  Javascript SDK for STS and Multipart Upload !   Disadvantages •  May require a post of the object and a redirect to a second form •  Can be consolidated to a single form with more advanced wiring •  Cannot validate the item on the server prior to moving to S3 – must be done during processing Legend 1.  User / form Posts Video to S3 directly 2.  S3 redirects user to new url 3.  User fills out new form with metadata about video and submits and app redirects user 1 2 RDS 1 3
  30. 30. © 2011 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. Amazon Elastic Transcoder Conceptual Diagram Amazon S3 Input Bucket Amazon S3 Output Bucket Digital Media Source Asset Digital Media Destination Asset Amazon Elastic Transcoder
  31. 31. © 2011 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. Amazon S3 Input Bucket Amazon Elastic Transcoder Amazon S3 Input Bucket Amazon S3 Output Bucket Amazon S3 Output Bucket Amazon S3 Output Bucket Transcoding Pipeline 1 Transcoding Pipeline 2 Transcoding Pipeline 4 Kindle Fire HD720p Apple HLS Transcoding Job n Transcoding Job 2 Transcoding Job 1 Amazon Elastic Transcoder Diagram
  32. 32. © 2011 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. Configuring Elastic Transcoder !   Elastic Transcoder can send an SNS message to notify a topic at Completion and also on Error !   That SNS Message Topic can be subscribed to by an SQS Queue as seen below
  33. 33. © 2011 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. Kickoff Simple Transcoding Process User S3 Route 53 ELB EC2 Legend 1.  User / form Posts Video to S3 directly 2.  S3 redirects user to new url 3.  User fills out new form with metadata about video and submits 4.  EC2 instance sends message out to SQS queue 5.  EC2 batch workers long polling queue to kickoff transcoding 6.  EC2 batch workers kickoff ETS (Elastic Transcoding Service) RDS SQS 4 EC2 5 ETS 6 1 2 1 3
  34. 34. © 2011 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. Kickoff Simple Transcoding Process User S3 Route 53 ELB EC2 Ruby SDK Code Review # get msg from SQS queue.poll do |msg| # After decoding the msg into vars and getting constants # Call ETS to send job ets = ets.create_job( pipeline_id: my_pipeline_id, input: { key: my_input_key, frame_rate: 'auto', resolution: 'auto', aspect_ratio: 'auto', interlaced: 'auto', container: 'auto' }, output: { key: my_output_key', preset_id: my_preset_id, thumbnail_pattern: my_thumb_pattern, rotate: '0' } ) end RDS SQS 4 EC2 5 ETS 6 1 2 1 3
  35. 35. © 2011 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. Transcoding Process Completes User S3 Route 53 ELB EC2 RDS SQS 4 EC2 5 SQS - Complete ETS 6 SNS Topic 1 2 1 3 Legend 1.  User / form Posts Video to S3 directly 2.  S3 redirects user to new url 3.  User fills out new form with metadata about video and submits 4.  EC2 instance sends message out to SQS queue 5.  EC2 batch workers long polling queue to kickoff transcoding 6.  EC2 batch workers kickoff ETS (Elastic Transcoding Service) 7.  ETS Process Completes and Sends a Message to an SNS Topic 8.  SNS Topic has an SQS Queue as a Subscriber 9.  EC2 instance is long polling SQS Complete queue and gets ETS Complete message 7 8 9 10 CloudSearch 11
  36. 36. © 2011 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. Transcoding Process Completes User S3 Route 53 ELB EC2 RDS SQS 4 EC2 5 SQS - Complete ETS 6 SNS Topic 1 2 1 3 7 8 9 10 CloudSearch 11 Ruby SDK Code Review # get msg from SQS – Complete queue queue.poll do |msg| # After decoding the msg and finding ets job # Call ets to find info about job ets = AWS::ElasticTranscoder::Client.new( elastic_transcoder_endpoint: ets_endpoint ) job = ets.read_job(id: job_id) end
  37. 37. © 2011 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. Media is Published User S3 Route 53 ELB EC2 RDS SQS 4 EC2 5 SQS - Complete ETS 6 SNS Topic 1 2 1 3 Legend 1.  User / form Posts Video to S3 directly 2.  S3 redirects user to new url 3.  User fills out new form with metadata about video and submits 4.  EC2 instance sends message out to SQS queue 5.  EC2 batch workers long polling queue to kickoff transcoding 6.  EC2 batch workers kickoff ETS (Elastic Transcoding Service) 7.  ETS Process Completes and Sends a Message to an SNS Topic 8.  SNS Topic has an SQS Queue as a Subscriber 9.  EC2 instance is long polling SQS Complete queue and gets ETS Complete message 10. EC2 instance catalogs assets created by ETS and loads them in the DB 11. EC2 instance loads all relevant metadata into CloudSearch for indexing 12. Email user that video is ready (SES not shown here) 13. Media is available via the origin and Cloudfront CDN 7 8 9 10 CloudSearch 11 CloudFront 13 SES 12
  38. 38. © 2011 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. Media is Published Ruby SDK Code Review # catalog all assets created by ETS in your database # Load CloudSearch Index with metadata about video # May do this asynchronously to load larger docs than # single video – up to 5MB # send user email that video is ready to watch ses.send_email( :subject => ’Your Video is Ready', :from => 'sender@domain.com', :to => ’user@domain.com', :body_text => ’ Your Video is Ready!.', :body_html => '<h1>Your Video is Ready!</h1>’ ) User S3ELB EC2 RDS SQS 4 EC2 5 SQS - Complete ETS 6 SNS Topic 1 2 1 3 7 8 9 10 CloudSearch 11 CloudFront 13 SES 12 Route 53
  39. 39. © 2011 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. Media Delivery User S3 Route 53 ELB EC2 / Web RDS SQS EC2 / Worker SQS - Complete ETS SNS Topic CloudSearch CloudFront SES
  40. 40. © 2011 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. Understanding User Behaviors = $$
  41. 41. © 2011 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. !   Why do we want to do this? •  Make Site Stickier •  More Revenue •  Convert more on any sales opportunities !   How do we do this? •  Gather user behaviors •  Analyze user behaviors with an algorithm or engine Analyze Users Behaviors
  42. 42. © 2011 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. Analyze Users Behaviors - Nightly ELB EC2 / Web RDS CloudSearch S3 1 EMR Cluster Or Service Legend 1.  Nightly dump from RDBMS to S3 2.  Import from S3 into EMR Cluster or API Endpoint for Analytics Service 3.  Put learned behaviors back into database or your app may be able to call the service directly via an API endpoint 4.  Optimize how you interact with your users! 2 3 4 User Route 53 3
  43. 43. © 2011 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. Analyze Users Behaviors – Semi-Realtime ELB EC2 / Web RDS CloudSearch 1 EMR Cluster Or Service Legend 1.  Write realtime user events to DynamoDB (or possibly to the Realtime service) 2.  Import from DynamoDB into EMR Cluster or API Endpoint for Analytics Service every few minutes 3.  Put learned behaviors back into database or your app may be able to call the service directly via an API endpoint 4.  Optimize how you interact with your users! 2 3 4 User Route 53 DynamoDB 3
  44. 44. © 2011 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. Questions?

×