Amazon S3
Für Fortgeschrittene
Steffen Krause– Technical Evangelist@sk_bln
Mehr als nur ein „Simple“ Storage Service
Ein umfassendes, verteiltes modernes Speichersystem
Grundlage für viele verschiedene Architekturen
Amazon S3
Case Study
“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/
Case Study
Case Study
Case Study
Case Study
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
Sie speichern in S3AWS speichert mit 99,999999999%
Dauerhaftigkeit
Sehr skalierbarer Web-Zugriff auf Objekte
Mehrere redundante Kopien innerhalb einer Region
Sie speichern in S3AWS speichert mit 99,999999999%
Dauerhaftigkeit
Aber es ist mehr als ein Simple Storage Service
Objekte in S3
Billionen Objekte(1012)
Mehr als 2 Millionen Anfragen pro Sekunde
Was ist S3?
Hoch skalierbare Datenspeicherung
Zugriff über APIsEin Web Store, kein Dateisystem
Schnell
Hochverfügbar und dauerhaft
Kostengünstig
Ein Web Store, kein Dateisystem
Write Once, Read Many (WORM)
Eventually Consistent
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
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
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
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
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
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
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
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
Ein Web Store, kein Dateisystem
Write Once, Read Many (WORM)
Eventually Consistent
*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
Ein regionaler DienstIhre Daten verlassen nie die RegionEs sei denn, Sie bewegen die Daten
SpeicherklassenKontrollieren die Art, wie S3 die Daten hält
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
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
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
GlacierSuitable 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
StandardDesigned 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 StorageReduces 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
NamensräumeObjektbenennung, Buckets & Keys
Amazon S3 Namensraum
Global eindeutig
Bucket Name + Objektname (Key)
Amazon S3 Namensraum
Amazon S3
Bucket Bucket
Objekt Objekt ObjektObjekt
Bucket
Objekt Objekt
Amazon S3 Namensraum
Amazon S3
jones-docshare media.mydomain.com
beach.jpg img1.jpg style.cssdrafts/rpt.doc
yourdomain.com
swf/mediaplayer.swf img/banner1.jpg
Amazon S3 Namensraum
Objekt-Key
Eindeutig innerhalb des Bucket
Amazon S3 Namensraum
Max. 1024 Bytes UTF-8 Einschließlich „Path“-Prefixe
Objekt-Key
Eindeutig innerhalb des Bucket
Amazon S3 Namensraum
assets/js/jquery/plugins/jtables.js
Das ist ein Objekt-Key
Max. 1024 Bytes UTF-8 Einschließlich „Path“-Prefixe
Objekt-Key
Eindeutig innerhalb des Bucket
Durchsatz-Optimierung
S3 partitioniert automatisch basiert auf Key Prefix:
Tipp
2134857/gamedata/start.png2134857/gamedata/resource.rsrc2134857/gamedata/results.txt2134858/gamedata/start.png2134858/gamedata/resource.rsrc2134858/gamedata/results.txt2134859/gamedata/start.png2134859/gamedata/resource.rsrc2134859/gamedata/results.txt
Objekt Keys:Bucket:
mynewgame
Durchsatz-OptimierungTi
pp
2134857/gamedata/start.png2134857/gamedata/resource.rsrc2134857/gamedata/results.txt2134858/gamedata/start.png2134858/gamedata/resource.rsrc2134858/gamedata/results.txt2134859/gamedata/start.png2134859/gamedata/resource.rsrc2134859/gamedata/results.txt
mynewgame
InkrementelleGame Id
S3 partitioniert automatisch basiert auf Key Prefix:
Objekt Keys:Bucket:
Durchsatz-OptimierungTi
p
2134857/gamedata/start.png2134857/gamedata/resource.rsrc2134857/gamedata/results.txt2134858/gamedata/start.png2134858/gamedata/resource.rsrc2134858/gamedata/results.txt2134859/gamedata/start.png2134859/gamedata/resource.rsrc2134859/gamedata/results.txt
mynewgame
mynewgame/2
Partition:
S3 partitioniert automatisch basiert auf Key Prefix:
Objekt Keys:Bucket:
Durchsatz-OptimierungTi
p
7584312/gamedata/start.png7584312/gamedata/resource.rsrc7584312/gamedata/results.txt8584312/gamedata/start.png8584312/gamedata/resource.rsrc8584312/gamedata/results.txt9584312/gamedata/start.png9584312/gamedata/resource.rsrc9584312/gamedata/results.txt
mynewgame
Umgekehrte Game Id
S3 partitioniert automatisch basiert auf Key Prefix:
Objekt Keys:Bucket:
Durchsatz-OptimierungTi
p
7584312/gamedata/start.png7584312/gamedata/resource.rsrc7584312/gamedata/results.txt8584312/gamedata/start.png8584312/gamedata/resource.rsrc8584312/gamedata/results.txt9584312/gamedata/start.png9584312/gamedata/resource.rsrc9584312/gamedata/results.txt
mynewgame
mynewgame/7mynewgame/8mynewgame/9
Partitionen:
S3 partitioniert automatisch basiert auf Key Prefix:
Objekt Keys:Bucket:
VerschlüsselungAbsicherung von ruhenden Daten
Server Side Encryption
Automatische Verschlüsselung von ruhenden Daten
DauerhafteS3 Schlüssel-Speicherung
Einfach zusätzlicher PUT Header
StarkesAES-256
Voll verwaltetKein eigenes Schlüsselmanagement notwendig
Benutzerdefinierte Schlüssel möglich
Alternativ: Clientseitige Verschlüsselung über das AWS Java SDK oder beliebige andere Bibliotheken
Serverseitige Verschlüsselung O
bjek
t Put
Bucket
High level design
Daten
Serverseitige Verschlüsselung O
bjek
t Put
Daten Bucket Verschlüsseltes Objekt
Schlüssel pro Objekt
Verschlüsseltes Objekt
High level design
Serverseitige Verschlüsselung O
bjek
t Put
Daten Bucket Verschlüsseltes Objekt
Verschlüsselter Schlüssel pro
ObjektSchlüssel pro Objekt
Verschlüsseltes Objekt
Master-Schlüssel
High level design
Serverseitige Verschlüsselung O
bjek
t Put
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
Konso
le
docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html
ZugriffskontrolleSie entscheiden, wer was tun darf
Secure by Default
Sie entscheiden, was freigegeben wirdPolicies für Buckets und Objekte
Policies, ACLs & IAMVerwenden Sie S3 Policies, ACLs oder
IAM um Regeln zu definieren
IAMDetailliert
Administrierung als Teil des rollenbasierten Zugriffs
Anwenden von Policies auf S3 auf Rollen-, Benutzer- und
Gruppenebene
Allow
ActionsPutObject
Resourcearn:aws:s3:::mybucket/*
Bob Jane
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
ActionsPutObject
Resourcearn:aws:s3:::mybucket/*
Bob Jane
AllowBob, Jane
ActionsPutObject
Resourcearn:aws:s3:::mybucket/*
mybucket
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
ActionsPutObject
Resourcearn:aws:s3:::mybucket/*
Bob Jane
AllowBob, Jane
ActionsPutObject
Resourcearn:aws:s3:::mybucket/*
mybucket
AllowEveryone, Bob, Jane
ActionsRead
mybucket myobject
{"Statement":[{ "Effect":"Allow", "Principal":{"AWS":["4649-6425", "5243-0045"]}, "Action":"*", "Resource":"/mybucket/*", "Condition":{ "IpAddress":{"AWS:SourceIp":"176.13.0.0/12"}}}]}
Zugriffskontrolle – Bucket Policy
Bucke
t pol
icy
{"Statement":[{ "Effect":"Allow", "Principal":{"AWS":["4649-6425", "5243-0045"]}, "Action":"*", "Resource":"/mybucket/*", "Condition":{ "IpAddress":{"AWS:SourceIp":"176.13.0.0/12"}}}]}
Zugriffskontrolle – Bucket Policy
Bucke
t pol
icy
Zugelassene Accounts
{"Statement":[{ "Effect":"Allow", "Principal":{"AWS":["4649-6425", "5243-0045"]}, "Action":"*", "Resource":"/mybucket/*", "Condition":{ "IpAddress":{"AWS:SourceIp":"176.13.0.0/12"}}}]}
Zugriffskontrolle – Bucket Policy
Bucke
t pol
icy
Ressource
{"Statement":[{ "Effect":"Allow", "Principal":{"AWS":["4649-6425", "5243-0045"]}, "Action":"*", "Resource":"/mybucket/*", "Condition":{ "IpAddress":{"AWS:SourceIp":"176.13.0.0/12"}}}]}
Zugriffskontrolle – Bucket Policy
Bucke
t pol
icy
Zugelassene Quelladresse
Lifecycle ManagementAutomatische Verwaltung der Objekte
Lifecycle Management
Lifecycle Management
Objekt-LöschungDauerhafte Löschung von Objekten aus S3
Lifecycle Management
Objekt-LöschungDauerhafte Löschung von Objekten aus S3
Objekt-ArchivierungVerschieben von Objekten von S3
nach Glacier
GlacierDauerhaftes Langzeitarchiv
Dauerhaftes Glacier Archiv
DauerhaftEntworfen für 99,999999999%
Dauerhaftigkeit der Archive
KosteneffizientWrite-Once, Read-Never.
Kosteneffiziente LangzeitspeicherungBezahlung für Datenzugriff
Logs ✗Zugänglich aus S3
Objekte verfallen und werden aus S3 gelöscht
Zeit
Lifecycle Mgm
tV
erfa
ll
Logs
Txns
✗Zugänglich aus S3
Objekte verfallen und werden aus S3 gelöscht
Zeit
Zugänglich aus S3
Objekt-Übergang nach Glacier
Lifecycle Mgm
tV
erfa
llÜ
berg
ang
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
Lifecycle Mgm
tV
erfa
llÜ
berg
ang
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-5Stunden
Objekt in S3 RRS für x Stunden
Lifecycle Mgm
tV
erfa
llÜ
berg
ang
3-5 Stunden ZugriffszeitWir gehen davon aus, dass Sie nicht oft
zugreifen
Konso
le
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 } } } };
.net
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 } } } };
.net
Übergang nach Glacier nach 1 Jahr
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 } } } };
.net
Lösche Objekt nach 10 Jahren
Konso
le
DEMOLifecycle Policies
REST API
POST /ObjectName?restore HTTP/1.1Host: BucketName.s3.amazonaws.comDate: dateAuthorization: signatureValueContent-MD5: MD5
<RestoreRequest xmlns="http://s3.amazonaws.com/doc/2006-3-01"> <Days>NumberOfDays</Days></RestoreRequest>
REST API
POST /ObjectName?restore HTTP/1.1Host: BucketName.s3.amazonaws.comDate: dateAuthorization: signatureValueContent-MD5: MD5
<RestoreRequest xmlns="http://s3.amazonaws.com/doc/2006-3-01"> <Days>NumberOfDays</Days></RestoreRequest>
202 Accepted
200 OK
409 Conflict Restoration already in progress
Object already restored, number of days updated
Restore request accepted
Response codes:
Website HostingStatische Sites direkt aus S3
Es ist ein Web Dienst……also können wir Web-Inhalte
ausliefern
Konso
le
Einstellung Default Documents
Umleitung von Anfragen
{ "Version":"2008-10-17", "Statement":[{
"Sid":"PublicReadGetObject", "Effect":"Allow",
"Principal": { "AWS": "*" }, "Action":["s3:GetObject"], "Resource":["arn:aws:s3:::example-bucket/*" ] } ]}
Bucke
t Pol
icy
{bucket-name}.s3-website-{region}.amazonaws.com
e.g. mybucket.s3-website-eu-west-1.amazonaws.com
s3-{region}.amazonaws.com/{bucket-name}/{object-key}
e.g. s3-eu-west-1.amazonaws.com/mybucket/img.png
{bucket-name}.s3-{region}.amazonaws.com/{object-key}
e.g. mybucket.s3-eu-west-1.amazonaws.com/img.png
Website Adressierung
Normale Adressierung
DEMOWebsite Hosting
R53
Web
sites Recordset für:
aws-exampl.es
Website Bucket Name:
bucket
Recordset für:
Website Bucket Name:
bucketError.html
Index.html
R53
Web
sites
www.aws-exampl.es aws-exampl.es
aws-exampl.es
Website Bucket Name:
bucket
Recordset für:
Website Bucket Name:
bucketError.html
Index.html
R53
Web
sites
www.aws-exampl.es aws-exampl.es
aws-exampl.es
Website Redirect nach:aws-exampl.es
Website Bucket Name:
bucket
Recordset für:
Website Bucket Name:
bucketError.html
Index.html
R53
Web
sites
www.aws-exampl.es aws-exampl.es
aws-exampl.es
aws-exampl.es
Ein Record ‘Alias’ zur S3 Website:aws-exampl.es @ s3-website-eu-west-1.amazonaws.com
docs.aws.amazon.com/AmazonS3/latest/dev/website-hosting-custom-domain-walkthrough.html
Website Redirect nach:
Website Bucket Name:
bucket
Recordset für:
Website Bucket Name:
bucketError.html
Index.html
R53
Web
sites
www.aws-exampl.es aws-exampl.es
aws-exampl.es
aws-exampl.es
aws-exampl.es @ s3-website-eu-west-1.amazonaws.com
CNAME für www. nach:www.aws-exampl.es.s3-website-eu-west-
1.amazonaws.com
docs.aws.amazon.com/AmazonS3/latest/dev/website-hosting-custom-domain-walkthrough.html
Ein Record ‘Alias’ zur S3 Website:
Website Redirect nach:
Web
sites
docs.aws.amazon.com/AmazonS3/latest/dev/website-hosting-custom-domain-walkthrough.html
Zeitbeschränkte URLsKontrollieren Sie, wie lange Objekte zugreifbar sind
Signierte URLsBieten zeitbeschränkten Zugriff
auf Objekte
ZugriffsrechteFü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
Pytho
n Bot
o
>>> 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%2BGOohFeJ5pdEzxtdaIFIA6w%3D&Expires=1391425142&AWSAccessKeyId=AKIAIRBKBJ3ZAYAXFC2Q’
>>> 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=tALx9KeeSisDSC0N7KlM%2BIDFZXI%3D&Expires=1391425562&AWSAccessKeyId=AKIAIRBKBJ3ZAYAXFC2Q'
Erster Parameter ist Link-Lebenszeit in
Sekunden
Erzwinge nicht-SSL-Link
Fehler: Link Expired
<?xml version="1.0" encoding="UTF-8"?><Error><Code>AccessDenied</Code><Message>Request has expired</Message><RequestId>70297390BE427DC7</RequestId><Expires>2014-02-03T11:03:58Z</Expires><HostId>I0rI0OWUCnBttFSpEw6Mx4u8uRHgtOSw9k2euDW37skFCU7HH0ulSkUGGaUbn2vg</HostId><ServerTime>2014-02-03T11:08:22Z</ServerTime>
</Error>
Objekt-VersionierungErhalt der Objektgeschichte
PersistentAuch Historie von
gelöschten Objekten bleibt erhalten
Auf Bucket-EbeneErhält automatisch alle Versionen des Objekts
PersistentAuch Historie von
gelöschten Objekten bleibt erhalten
Auf Bucket-EbeneErhält automatisch alle Versionen des Objekts
PersistentAuch Historie von
gelöschten Objekten bleibt erhalten
Auf Bucket-EbeneErhält automatisch alle Versionen des Objekts
Pytho
n bo
to
>>> 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 jU9eVv800OlP4PQx6zskMEyPIoExne57myfile.txt xOJzMvMmGv0Bx2v4QpIypbkkH2XE2yyqmyfile.txt 8cjozv9Hmkzum8xj.8q8BZxR5CuXnzon
Object Versions
-IDs
Pytho
n bo
to
>>> 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
Pytho
n bo
to
>>> 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’
Pytho
n bo
to
>>> 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
MetadatenSystem- und Benutzer-generiert
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
Benutzer-Metadaten
x-amz-meta-{your metadata key in here}
Key-Value Paare, die mit den Objekten gespeichert werden
>>> key.set_metadata(’my_tag', ’my metadata')
>>> key.get_metadata(’my_tag')’my metadata'
Pytho
n bo
to
CloudFrontContent Delivery von weltweiten Edge Locations
CloudFront
Edge Locations
Dallas(2)
St.Louis
Miami
JacksonvilleLos Angeles (2)
Palo Alto
Seattle
Ashburn(3)
NewarkNew 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
OsakaMilan
Sydney
Madrid
Seoul
Mumbai
ChennaiMarseille
Warsaw
Manila
Taipei
Rio de Janeiro
Globale Content-Verteilung
DownloadHerunterladen von statischen und
dynamischen Objekten
StreamingRTMP Streaming direkt aus
Mediendateien in S3
Konso
le
Konso
le
Edge Access Control
Optionaler CNAME
Cache Control
S3 Bucket
Weiterleitung
Konso
le
S3 Bucket
Optionaler CNAME
Logging nach S3
Konso
le
<html><script type='text/javascript' src=’http://d2ew7gdzogp20x.cloudfront.net/jwplayer/jwplayer.js'></script>
<body><div id='player'></div><script type='text/javascript'> jwplayer('player').setup({ file: "rtmp://s1eat02wfxn38u.cloudfront.net/cfx/st/montage-medium.mp4", width: "480", height: "270", });</script></body></html>
Beisp
iel
Streaming Distribution
Download Distribution
Zusammenfassung
S3 – flexibler Web Storage
Applikations-BackendsEinfach mit dem S3 SDK
einzubinden
BootstrappingSkripte für EC2 Instance
Bootstrapping in S3
ApplikationslogsLogs speichern und mit
EMR analysieren Web contentServe content and distribute globally
DocumentationStore documents with
versioning and security models
Backups & ArchiveStorage Gateway,
Dritthersteller-Werkzeuge
• Anfangen mit dem Free Tier:http://aws.amazon.com/de/free/
• 25 US$ credits für neue Kunden:http://aws.amazon.com/de/campaigns/account/
• Twitter: @AWS_Aktuell• Facebook: http://www.facebook.com/awsaktuell • Webinare: http://aws.amazon.com/de/about-aws/events/• Slides: http://de.slideshare.net/AWSAktuell • Demo-Serie auf Youtube:
http://aws.typepad.com/awsaktuell/techsnacks-videos-deutsch.html
Ressourcen