Webinar S3 für Fortgeschrittene

Post on 20-Jun-2015

486 views 0 download

description

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

transcript

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

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:

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

aws.amazon.com/deskrause@amazon.de

@sk_bln

Codebeispiele: github.com/ianmas-aws/s3-masterclass

• 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