Sie brauchen definitiv keinen Eimer für jeden Benutzer. Vergessen Sie nicht die Tatsache, dass es sehr unwahrscheinlich erscheint, dass der AWS-Support einer Anforderung zustimmt, um das standardmäßige Gesamt-Bucket-Limit Ihres Kontos von 100 auf 300.000.000 zu erhöhen. Die erste Bucket-Erstellung soll nicht aggressiv oder in Echtzeit erfolgen.
Das Hochverfügbarkeits-Engineering von Amazon S3 konzentriert sich auf Vorgänge zum Abrufen, Einfügen, Auflisten und Löschen. Da Bucket-Vorgänge für einen zentralen, globalen Ressourcenbereich arbeiten, ist es nicht angemessen, Buckets im Hochverfügbarkeits-Codepfad Ihrer Anwendung zu erstellen oder zu löschen. Es ist besser, Buckets in einer separaten Initialisierungs- oder Setup-Routine zu erstellen oder zu löschen, die Sie seltener ausführen.
http://docs.aws.amazon.com/AmazonS3/latest/dev/BucketRestrictions.html
Entwerfen Sie Ihre Anwendung so, dass es egal ist, ob Sie einen oder mehrere Bucket verwenden. Wie? Speichern Sie für jeden Benutzer die bucket_id, in der die Daten dieses Benutzers gespeichert sind. Beginnen Sie dann mit allen in bucket_id 1 und haben Sie später die Flexibilität, neue Benutzer in neue Buckets zu setzen, wenn dies erforderlich ist ... oder wenn Sie sich entscheiden, einige Benutzer auf andere Buckets zu migrieren ... oder wenn Sie sich entscheiden Lagerung in einem Eimer näher am typischen Standort des Benutzers.
S3 skaliert seine Kapazität automatisch, um die Anforderungen Ihres Datenverkehrs zu erfüllen. Sie können diesen Prozess vereinfachen, indem Sie die Pfade zu Ihren Objekten so gestalten, dass eine nicht sequentielle Zuweisung von Objektschlüsseln in der Nähe der linken Seite des Schlüssels erfolgt.
S3 skaliert seine Kapazität durch Aufteilen der Indexpartitionen. Wenn Sie beispielsweise jedem Objekt einen Pfad geben, der mit dem Datum des Uploads beginnt, wäre dies eine wirklich schlechte Idee, da Ihr Bucket-Index einen Hotspot mit starken Uploads in einem kleinen Teil von der Schlüsselraum.
Siehe http://docs.aws.amazon.com/AmazonS3/latest/dev/request-rate-perf-considerations.html
Aus demselben Grund sollten Sie Ihren Buckets keine lexikalisch sequentiellen Namen in einer Region geben.
Was Dropbox getan hat, ist wahrscheinlich nicht relevant.