Webinar vom 14.08.2014
In Amazon S3 sind Billionen von Objekten in verschiedensten Formaten gespeichert, von Backups über Web Site Assets bis zu digitalen Medien. In diesem Webinar gehen wir auf Features von S3 wie das Hosten von statischen Websites, Verschlüsselung oder Lifecycle Policies ein. Wir schauen auf die vielen Möglichkeiten, die Amazon S3 bietet, sprechen über Anwendungsfälle und Best Practices.
Die Aufzeichnung ist hier: http://youtu.be/Qad5GNvTz-U
2. Mehr als nur ein „Simple“ Storage Service
Ein umfassendes, verteiltes modernes Speichersystem
Grundlage für viele verschiedene Architekturen
Amazon S3
3.
4. “Spotify needed a storage solution that
could scale very quickly without
incurring long lead times for upgrades.
This led us to cloud storage, and in that
market, Amazon Simple Storage
Service (Amazon S3) is the most
mature large-scale product.
Amazon S3 gives us confidence in our
ability to expand storage quickly while
also providing high data durability.”
Emil Fredriksson, Operations Director
Find out more at : aws.amazon.com/solutions/case-studies/spotify/
5.
6.
7. Minecraft Realms and AWS S3
Minecraft Welten und Spielstatus
sind in Amazon S3 gespeichert.
Das System nutzt S3
Versionierung und gibt dem
Administrator die Möglichkeit, auf
eine frühere Version
zurückzurollen. Das Team hat
effiziente Uploads durch Nutzung
von S3 Multipart Upload
implementiert.
Details: aws.typepad.com/aws/2014/01/hosting-minecraft-realms-on-aws.html
8. Sie speichern in S3
AWS speichert mit 99,999999999%
Dauerhaftigkeit
9. Sehr skalierbarer Web-
Zugriff auf Objekte
Mehrere redundante Kopien
innerhalb einer Region
Sie speichern in S3
AWS speichert mit 99,999999999%
Dauerhaftigkeit
10. Aber es ist mehr als ein
Simple Storage Service
12. Was ist S3?
Hoch skalierbare Datenspeicherung
Zugriff über APIsEin Web Store, kein Dateisystem
Schnell
Hochverfügbar und dauerhaft
Kostengünstig
13. Ein Web Store, kein Dateisystem
Write Once,
Read Many
(WORM)
Eventually
Consistent
14. Konzept-Diagramm, nicht tatsächliche Implementierung
Region
Availability Zone
Indexing Storage
Load balancers
Web servers
Availability Zone
Indexing Storage
Load balancers
Web servers
Ein Web Store, kein Dateisystem
Write Once,
Read Many
(WORM)
Eventually
Consistent
15. Region
Availability Zone
Indexing Storage
Load balancers
Web servers
Availability Zone
Indexing Storage
Load balancers
Web servers
Konzept-Diagramm, nicht tatsächliche Implementierung
Ein Web Store, kein Dateisystem
Write Once,
Read Many
(WORM)
Eventually
Consistent
16. Region
Availability Zone
Indexing Storage
Load balancers
Web servers
Availability Zone
Indexing Storage
Load balancers
Web servers
Konzept-Diagramm, nicht tatsächliche Implementierung
Ein Web Store, kein Dateisystem
Write Once,
Read Many
(WORM)
Eventually
Consistent
17. Region
Availability Zone
Indexing Storage
Load balancers
Web servers
Availability Zone
Indexing Storage
Load balancers
Web servers
Konzept-Diagramm, nicht tatsächliche Implementierung
Ein Web Store, kein Dateisystem
Write Once,
Read Many
(WORM)
Eventually
Consistent
18. Region
Availability Zone
Indexing Storage
Load balancers
Web servers
Availability Zone
Indexing Storage
Load balancers
Web servers
Konzept-Diagramm, nicht tatsächliche Implementierung
Ein Web Store, kein Dateisystem
Write Once,
Read Many
(WORM)
Eventually
Consistent
19. Region
Availability Zone
Indexing Storage
Load balancers
Web servers
Availability Zone
Indexing Storage
Load balancers
Web servers
Konzept-Diagramm, nicht tatsächliche Implementierung
Ein Web Store, kein Dateisystem
Write Once,
Read Many
(WORM)
Eventually
Consistent
20. Region
Availability Zone
Indexing Storage
Load balancers
Web servers
Availability Zone
Indexing Storage
Load balancers
Web servers
Konzept-Diagramm, nicht tatsächliche Implementierung
Ein Web Store, kein Dateisystem
Write Once,
Read Many
(WORM)
Eventually
Consistent
21. Region
Availability Zone
Indexing Storage
Load balancers
Web servers
Availability Zone
Indexing Storage
Load balancers
Web servers
Konzept-Diagramm, nicht tatsächliche Implementierung
Ein Web Store, kein Dateisystem
Write Once,
Read Many
(WORM)
Eventually
Consistent
22. Ein Web Store, kein Dateisystem
Write Once,
Read Many
(WORM)
Eventually
Consistent
23. *außer US-STANDARD Region
Neue Objekte
Updates
Deletes
Daten werden synchron in mehreren Einrichtungen
gespeichert ehe SUCCESS zurückgegeben wird
Read-after-write consistency*
Schreiben dann lesen: Möglich dass Key nicht existiert
Schreiben dann auflisten: Key kann in der Liste fehlen
Überschreiben dann lesen: Alte Daten können
zurückgegeben werden
Löschen dann lesen: Alte Daten können zurückgegeben
werden
Löschen dann auflisten: Gelöschter Key kann noch in Liste
enthalten sein
Ein Web Store, kein Dateisystem
Write Once,
Read Many
(WORM)
Eventually
Consistent
26. Standard
Bietet 99,999999999%
Dauerhaftigkeit und 99,99%
Verfügbarkeit der Objekte
innerhalb eines Jahres
Entworfen, um den
gleichzeitigen Verlust der Daten
in zwei Einrichtungen zu
überdauern
Amazon S3 Speicherklassen
27. Reduced
Redundancy Storage
Reduziert die Kosten durch
Datenspeicherung mit geringerer
Redundanz als der Standard
Storage
Bietet 99,99% Dauerhaftigkeit und
99,99% Verfügbarkeit der Objekte
innerhalb eines Jahres
Standard
Bietet 99,999999999%
Dauerhaftigkeit und 99,99%
Verfügbarkeit der Objekte
innerhalb eines Jahres
Entworfen, um den
gleichzeitigen Verlust der Daten
in zwei Einrichtungen zu
überdauern
Amazon S3 Speicherklassen
28. Glacier
Geeignet für Datenarchivierung, wo
Daten selten zugegriffen werden und
eine Zugriffszeit von mehreren
Stunden akzeptabel ist
Verwendet den sehr kostengünstigen
Amazon Glacier Storage-Dienst, wird
aber von Amazon S3 verwaltet
Reduced
Redundancy Storage
Reduziert die Kosten durch
Datenspeicherung mit geringerer
Redundanz als der Standard
Storage
Bietet 99,99% Dauerhaftigkeit und
99,99% Verfügbarkeit der Objekte
innerhalb eines Jahres
Standard
Bietet 99,999999999%
Dauerhaftigkeit und 99,99%
Verfügbarkeit der Objekte
innerhalb eines Jahres
Entworfen, um den
gleichzeitigen Verlust der Daten
in zwei Einrichtungen zu
überdauern
Amazon S3 Speicherklassen
29. Glacier
Suitable for archiving data,
where data access is infrequent
and a retrieval time of several
hours is acceptable
Uses the very low-cost Amazon
Glacier storage service, but
managed through Amazon S3
Objekte, die Sie lange Zeit
archivieren wollen
z.B. Digitales Archiv von
alten Filmen und
Sendungen
Standard
Designed to provide
99.999999999% durability
and 99.99% availability of
objects over a given year
Designed to sustain the
concurrent loss of data in
two facilities
Objekte, die hohe
Dauerhaftigkeit haben
sollen
z.B. Master-Kopie eines
Films
Reduced
Redundancy Storage
Reduces costs by storing data
at lower levels of redundancy
than the Standard storage
Designed to provide 99.99%
durability and 99.99%
availability of objects over a
given year
Objekte, bei denen Sie
sich den Verlust leisten
können oder die wieder
erstellt werden können
z.B. verschiedene Formate
des Filmes
Amazon S3 Speicherklassen
43. Server Side Encryption
Automatische Verschlüsselung von
ruhenden Daten
Dauerhafte
S3 Schlüssel-Speicherung
Einfach
zusätzlicher
PUT Header
Starkes
AES-256
Voll verwaltet
Kein eigenes Schlüsselmanagement notwendig
Benutzerdefinierte
Schlüssel möglich
Alternativ: Clientseitige Verschlüsselung über das AWS Java SDK oder beliebige andere Bibliotheken
46. Serverseitige Verschlüsselung
Daten Bucket Verschlüsseltes Objekt
Verschlüsselter
Schlüssel pro
ObjektSchlüssel pro Objekt
Verschlüsseltes Objekt
Master-Schlüssel
High level design
47. Serverseitige Verschlüsselung
Daten Bucket Verschlüsseltes Objekt
Verschlüsselter
Schlüssel pro
Objekt
Schlüssel-
Management
(Monatliche Rotation)
Schlüssel pro Objekt
Verschlüsseltes Objekt
Master-Schlüssel
High level design
50. Secure by Default
Sie entscheiden, was freigegeben wird
Policies für Buckets und Objekte
Policies, ACLs & IAM
Verwenden Sie S3 Policies, ACLs oder
IAM um Regeln zu definieren
51. IAM
Detailliert
Administrierung als Teil des
rollenbasierten Zugriffs
Anwenden von Policies auf S3
auf Rollen-, Benutzer- und
Gruppenebene
Allow
Actions
PutObject
Resource
arn:aws:s3:::mybucket/*
Bob Jane
52. Bucket PoliciesIAM kontra
Detailliert
Administrierung als Teil des
rollenbasierten Zugriffs
Anwenden von Policies auf S3
auf Rollen-, Benutzer- und
Gruppenebene
Detailliert
Anwenden von Policies auf Bucket-
Ebene in S3
Benutzereinschränkungen ohne die
Verwendung von IAM
Allow
Actions
PutObject
Resource
arn:aws:s3:::mybucket/*
Bob Jane
Allow
Bob, Jane
Actions
PutObject
Resource
arn:aws:s3:::mybucket/*
mybucket
53. Bucket Policies ACLskontraIAM kontra
Detailliert
Administrierung als Teil des
rollenbasierten Zugriffs
Anwenden von Policies auf S3
auf Rollen-, Benutzer- und
Gruppenebene
Detailliert
Anwenden von Policies auf Bucket-
Ebene in S3
Benutzereinschränkungen ohne die
Verwendung von IAM
Grob
Zugriffskontroll-Regeln auf
Bucket und/oder Objektebene
in S3
Allow
Actions
PutObject
Resource
arn:aws:s3:::mybucket/*
Bob Jane
Allow
Bob, Jane
Actions
PutObject
Resource
arn:aws:s3:::mybucket/*
mybucket
Allow
Everyone, Bob, Jane
Actions
Read
mybucket myobject
66. Logs
Txns
✗Zugänglich aus S3
Objekte
verfallen und
werden aus
S3 gelöscht
Zeit
Zugänglich aus S3
Objekt-Übergang
nach Glacier
Wiederherstellung
der Objekte für
x Stunden
VerfallÜbergang
67. Logs
Txns
✗Zugänglich aus S3
Objekte
verfallen und
werden aus
S3 gelöscht
Zeit
Zugänglich aus S3
Objekt-Übergang
nach Glacier
Wiederherstellung
der Objekte für
x Stunden
3-5
Stunden
Objekt in S3 RRS
für x Stunden
VerfallÜbergang
70. using (client = new AmazonS3Client()){
var lifeCycleConfiguration = new LifecycleConfiguration()
{
Rules = new List<LifecycleRule>
{
new LifecycleRule
{
Id = "Archive and delete rule",
Prefix = "projectdocs/",
Status = LifecycleRuleStatus.Enabled,
Transition = new LifecycleTransition()
{
Days = 365,
StorageClass = S3StorageClass.Glacier
},
Expiration = new LifecycleRuleExpiration()
{
Days = 3650
}
}
}
};
71. using (client = new AmazonS3Client()){
var lifeCycleConfiguration = new LifecycleConfiguration()
{
Rules = new List<LifecycleRule>
{
new LifecycleRule
{
Id = "Archive and delete rule",
Prefix = "projectdocs/",
Status = LifecycleRuleStatus.Enabled,
Transition = new LifecycleTransition()
{
Days = 365,
StorageClass = S3StorageClass.Glacier
},
Expiration = new LifecycleRuleExpiration()
{
Days = 3650
}
}
}
};
Übergang nach
Glacier nach 1 Jahr
72. using (client = new AmazonS3Client()){
var lifeCycleConfiguration = new LifecycleConfiguration()
{
Rules = new List<LifecycleRule>
{
new LifecycleRule
{
Id = "Archive and delete rule",
Prefix = "projectdocs/",
Status = LifecycleRuleStatus.Enabled,
Transition = new LifecycleTransition()
{
Days = 365,
StorageClass = S3StorageClass.Glacier
},
Expiration = new LifecycleRuleExpiration()
{
Days = 3650
}
}
}
};
Lösche Objekt
nach 10 Jahren
90. Signierte URLs
Bieten zeitbeschränkten Zugriff
auf Objekte
Zugriffsrechte
Für Objekte in nichtöffentlichen
Buckets um Zugriff auf Objekte
nach Zeitbeschränkung zu
verhindern
https://ianmas-aws.testbucket.s3.amazonaws.com/testfile.txt
?Signature=JHCa39GV1fKRKkEnAWzI88lH7f8%3D
&Expires=1391425438
&AWSAccessKeyId=AKIAIRBKBJ3ZAYAXFC2Q
91. >>> import boto
>>> conn = boto.connect_s3()
>>> conn.generate_url(300, 'GET', bucket='ianmas-aws.testbucket',
key='testfile.txt')
'https://ianmas-
aws.testbucket.s3.amazonaws.com/testfile.txt?Signature=QUWA%2BGOohFeJ
5pdEzxtdaIFIA6w%3D&Expires=1391425142&AWSAccessKeyId=AKIAIRBKBJ3ZAYAX
FC2Q’
>>> conn.generate_url(300, 'GET', bucket='ianmas-aws.testbucket',
key='testfile.txt', force_http=True)
'http://ianmas-
aws.testbucket.s3.amazonaws.com/testfile.txt?Signature=tALx9KeeSisDSC
0N7KlM%2BIDFZXI%3D&Expires=1391425562&AWSAccessKeyId=AKIAIRBKBJ3ZAYAX
FC2Q'
Erster Parameter ist
Link-Lebenszeit in
Sekunden
Erzwinge nicht-SSL-Link
92. Fehler: Link Expired
AccessDenied
Request has expired
70297390BE427DC7
2014-02-03T11:03:58Z
I0rI0OWUCnBttFSpEw6Mx4u8uRHgtOSw9k2euDW37skFCU7HH0ulSkUGGaUbn2vg
2014-02-03T11:08:22Z
97. >>> import boto
>>> conn = boto.connect_s3()
>>> bucket = conn.get_bucket(’mybucket')
>>> versions = bucket.list_versions()
>>> for version in versions:
... print version.name + version.version_id
...
myfile.txt jU9eVv800OlP4PQx6zskMEyPIoExne57
myfile.txt xOJzMvMmGv0Bx2v4QpIypbkkH2XE2yyq
myfile.txt 8cjozv9Hmkzum8xj.8q8BZxR5CuXnzon
Object
Versions
-IDs
98. >>> key = bucket.get_key('myfile.txt',
version_id='8cjozv9Hmkzum8xj.8q8BZxR5CuXnzon’)
>>> key.get_contents_as_string()
'this is version 1 of my file’
Inhalte einer
Version abrufen
99. >>> key = bucket.get_key('myfile.txt',
version_id='8cjozv9Hmkzum8xj.8q8BZxR5CuXnzon’)
>>> key.get_contents_as_string()
'this is version 1 of my file’
>>> key = bucket.get_key('myfile.txt',
version_id='xOJzMvMmGv0Bx2v4QpIypbkkH2XE2yyq’)
>>> key.get_contents_as_string()
'this is version 2 of my file’
100. >>> key = bucket.get_key('myfile.txt',
version_id='8cjozv9Hmkzum8xj.8q8BZxR5CuXnzon’)
>>> key.get_contents_as_string()
'this is version 1 of my file’
>>> key = bucket.get_key('myfile.txt',
version_id='xOJzMvMmGv0Bx2v4QpIypbkkH2XE2yyq’)
>>> key.get_contents_as_string()
'this is version 2 of my file’
>>> key.generate_url(600)
'https://mybucket.s3.amazonaws.com/myfile.txt?Signature=ABCD&
Expires=1358857379&AWSAccessKeyId=AB&
versionId=xOJzMvMmGv0Bx2v4QpIypbkkH2XE2yyq'
Erstellen einer 10
Minuten zugreifbaren
URL für die ältere
Version
102. Name Beschreibung Änderbar?
Date Object creation date No
Content-Length Object size in bytes No
Content-MD5 Base64 encoded 128bit MD5 digest No
x-amz-server-side-encryption Server side encryption enabled for object Yes
x-amz-version-id Object version No
x-amz-delete-marker Indicates a version enabled object is deleted No
x-amz-storage-class Storage class for the object Yes
x-amz-website-redirect-location Redirects request for the object to another object
or external URL
Yes
System-Metadaten
106. CloudFront
Edge Locations
Dallas(2)
St.Louis
Miami
JacksonvilleLos Angeles (2)
Palo Alto
Seattle
Ashburn(3)
Newark
New York (3)
Dublin
London(2)
Amsterdam (2)
Stockholm
Frankfurt(2)
Paris(2)
Singapore(2)
Hong Kong (2)
Tokyo (2)
Sao Paulo
South Bend
San Jose
Osaka
Milan
Sydney
Madrid
Seoul
Mumbai
ChennaiMarseille
Warsaw
Manila
Taipei
Rio de
Janeiro
114. S3 – flexibler Web Storage
Applikations-Backends
Einfach mit dem S3 SDK
einzubinden
Bootstrapping
Skripte für EC2 Instance
Bootstrapping in S3
Applikationslogs
Logs speichern und mit
EMR analysieren
Web content
Serve content and distribute
globally
Documentation
Store documents with
versioning and security
models
Backups & Archive
Storage Gateway,
Dritthersteller-Werkzeuge