Erstellen eines Buckets - Amazon Simple Storage Service

Erstellen eines Buckets

Um Ihre Daten auf Amazon S3 hochzuladen, müssen Sie zuerst einen Amazon-S3-Bucket in einer der AWS-Regionen erstellen. Wenn Sie einen Bucket erstellen, müssen Sie einen Bucket-Namen und eine Region auswählen. Sie können optional andere Speicherverwaltungsoptionen für den Bucket auswählen. Der Name eines erstellten Buckets oder Region kann nicht nachträglich geändert werden. Weitere Informationen zur Benennung von Buckets finden Sie unter Regeln für die Benennung von Buckets.

Das AWS-Konto, mit dem der Bucket erstellt wird, ist Eigentümer des Buckets. Sie können beliebig viele Objekte in den Bucket hochladen. In der Standardeinstellung können Sie bis zu 100 Buckets in jedem Ihrer AWS-Konten erstellen. Wenn Sie weitere Buckets benötigen, können Sie das Konto-Bucket-Limit auf maximal 1 000 Buckets erhöhen, indem Sie eine Service Limit-Erhöhung senden. Weitere Informationen über das Senden einer Bucket-Limit-Erhöhung finden Sie unter AWS Service Quotas in der Allgemeinen AWS-Referenz. Sie können in einem Bucket beliebig viele Objekte speichern.

S3 Object Ownership ist eine Einstellung auf Amazon-S3-Bucket-Ebene, mit der Sie Zugriffskontrolllisten (ACLs) deaktivieren und das Eigentum an jedem Objekt in Ihrem Bucket übernehmen können, wodurch die Zugriffsverwaltung für in Amazon S3 gespeicherte Daten vereinfacht wird. Wenn ein anderes AWS-Konto ein Objekt in Ihren Amazon S3-Bucket hochlädt, ist dieses Konto (der Objektschreiber) standardmäßig Eigentümer des Objekts, hat Zugriff darauf und kann anderen Benutzern über ACLs Zugriff darauf gewähren. Wenn Sie einen Bucket erstellen, können Sie die vom Bucket-Eigentümer erzwungene Einstellung für Object Ownership anwenden, um dieses Standardverhalten so zu ändern, dass ACLs deaktiviert werden und Sie als Bucket-Eigentümer automatisch jedes Objekt in Ihrem Bucket besitzen. Infolgedessen basiert die Zugriffskontrolle für Ihre Daten auf Richtlinien. Weitere Informationen finden Sie unter Weitere Informationen finden Sie unter Steuern des Eigentums an Objekten und Deaktivieren von ACLs für Ihren Bucket..

Sie können die Amazon-S3-Konsole, Amazon-S3-APIs, AWS CLI oder AWS-SDKs verwenden, um einen Bucket zu erstellen. Weitere Informationen zu den zum Erstellen eines Buckets erforderlichen Berechtigungen finden Sie unter CreateBucket in der API-Referenz zum Amazon Simple Storage Service.

  1. Melden Sie sich bei der AWS Management Console an und öffnen Sie die Amazon-S3-Konsole unter https://console.aws.amazon.com/s3/.

  2. Wählen Sie Create Bucket (Bucket erstellen) aus.

    Der Assistent Create Bucket (Bucket erstellen) wird geöffnet.

  3. Geben Sie unter Bucket name (Bucket-Name) einen DNS-kompatiblen Namen für Ihren Bucket ein.

    Der Bucket-Name muss ...:

    • überall in Amazon S3 eindeutig sein.

    • zwischen 3 und 63 Zeichen lang sein,

    • Enthält keine Großbuchstaben.

    • mit einem Kleinbuchstaben oder einer Zahl beginnen.

    Der Name eines einmal erstellter Buckets kann nicht nachträglich geändert werden. Weitere Informationen zur Benennung von Buckets finden Sie unter Regeln für die Benennung von Buckets.

    Wichtig

    Vermeiden Sie, vertrauliche Informationen, wie Kontonummern, in den Bucket-Namen einzubeziehen. Der Bucket-Name wird in der URL angezeigt, die auf die Objekte im Bucket verweist.

  4. Unter Region wählen Sie die AWS-Region aus, in der sich der Bucket befinden soll.

    Wählen Sie eine Region in der Nähe aus, um Latenz und Kosten auf einem Minimum zu halten und behördliche Vorschriften zu erfüllen. In einer Region gespeicherte Objekte verbleiben so lange in der Region, bis sie explizit in eine andere Region verschoben werden. Eine Liste der AWS-Regionen für Amazon S3 finden Sie unter Service-Endpunkte von AWS in der Allgemeinen Referenz für Amazon Web Services.

  5. Wählen Sie unter Object Ownership eine der folgenden Einstellungen aus, um ACLs zu deaktivieren oder zu aktivieren und den Besitz von Objekten zu steuern, die in Ihren Bucket hochgeladen wurden:

    Deaktivierte ACLs

    • Bucket-Eigentümer erzwungen – ACLs sind deaktiviert, und der Bucket-Eigentümer besitzt automatisch und hat die volle Kontrolle über jedes Objekt im Bucket. ACLs haben keine Auswirkungen mehr auf Berechtigungen für Daten im S3-Bucket. Der Bucket verwendet Richtlinien, um die Zugriffssteuerung zu definieren.

      Informationen dazu, dass alle neuen Buckets mit deaktivierten ACLs mithilfe von IAM- oder AWS Organizations-Richtlinien erstellt werden, finden Sie unter Deaktivieren von ACLs für alle neuen Buckets (Bucket-Eigentümer erzwungen).

    Aktivierte ACLs

    • Bucket-Eigentümer bevorzugt – Der Bucket-Eigentümer besitzt und hat die volle Kontrolle über neue Objekte, die andere Konten mit der bucket-owner-full-control-vordefinierten ACL.

      Wenn Sie die Einstellung Bevorzugter Bucket-Eigentümer anwenden, damit alle Amazon-S3-Uploads die von bucket-owner-full-control vordefinierte ACL enthalten, können Sie eine Bucket-Richtlinie hinzufügen, die nur Objekt-Uploads zulässt, die diese ACL verwenden.

    • Objekt-Writer – Das AWS-Konto, das ein Objekt hochlädt, besitzt das Objekt, hat die volle Kontrolle darüber und kann anderen Benutzern über ACLs Zugriff darauf gewähren.

    Anmerkung

    Um die Einstellung Bucket-Eigentümer erzwungen oder Bucket-Eigentümer bevorzugt anzuwenden, müssen Sie über die folgende Berechtigung verfügen: s3:CreateBucket und s3:PutBucketOwnershipControls.

  6. Wählen Sie unter Bucket settings for Block Public Access (Bucket-Einstellungen für den öffentlichen Zugriff) die Einstellungen für den öffentlichen Zugriff aus, die Sie auf den Bucket anwenden möchten.

    Es wird empfohlen, alle Einstellungen aktiviert zu belassen, es sei denn, Sie wissen, dass Sie eine oder mehrere dieser Einstellungen für Ihren Anwendungsfall deaktivieren müssen, z. B. um eine öffentliche Website zu hosten. Block-Einstellungen für den öffentlichen Zugriff, die Sie für den Bucket aktivieren, werden auch für alle Zugriffspunkte aktiviert, die Sie für den Bucket erstellen. Weitere Informationen zum Blockieren des öffentlichen Zugriffs finden Sie unter Blockieren des öffentlichen Zugriffs auf Ihren Amazon-S3-Speicher.

  7. (Optional) Wenn Sie die S3-Objektsperre aktivieren möchten, gehen Sie wie folgt vor:

    1. Wählen Sie Erweiterte Einstellungen aus.

      Wichtig

      Sie können die S3-Objektsperre für einen Bucket nur aktivieren, wenn Sie ihn erstellen. Wenn Sie die Objektsperre für den Bucket aktivieren, können Sie sie später nicht deaktivieren. Durch Aktivieren der Objektsperre wird auch die Versioning für den Bucket aktiviert. Nachdem Sie die Objektsperre für den Bucket aktiviert haben, müssen Sie die Standardeinstellungen für die Objektsperre konfigurieren, um neue Objekte vor dem Löschen oder Überschreiben zu schützen. Weitere Informationen finden Sie unter Konfigurieren der S3-Objektsperre mit der Konsole.

    2. Wenn Sie die Objektsperre aktivieren möchten, wählen Sie Enable aus, lesen Sie die angezeigte Warnung und bestätigen Sie sie.

    Weitere Informationen zur S3-Objektsperre-Funktion finden Sie unter Verwenden der S3-Objektsperre.

    Anmerkung

    Um einen Bucket mit aktivierter Objektsperre zu erstellen, benötigen Sie die folgenden Berechtigungen: s3:CreateBucket, s3:PutBucketVersioning und s3:PutBucketObjectLockConfiguration.

  8. Wählen Sie Create Bucket (Bucket erstellen) aus.

Wenn Sie die AWS-SDKs zum Erstellen eines Buckets verwenden, müssen Sie einen Client erstellen und dann den Client nutzen, um eine Anforderung zum Erstellen eines Buckets zu senden. Als bewährte Methode sollten Sie Ihren Client und Ihren Bucket in derselben AWS-Region erstellen. Wenn Sie beim Erstellen eines Clients oder Buckets keine Region angeben, verwendet Amazon S3 die Standardregion USA Ost (Nord-Virginia).

Um einen Client für den Zugriff auf einen Dual-Stack-Endpunkt zu erstellen, müssen Sie eine AWS-Region angeben. Weitere Informationen finden Sie unter Dual-Stack-Endpunkte. Eine Liste der verfügbaren AWS-Regionen finden Sie unter Regions and Endpoints (Regionen und Endpunkte) in der Allgemeinen AWS-Referenz.

Wenn Sie einen Client erstellen, wird die Region dem regionsspezifischen Endpunkt zugeordnet. Der Client verwendet diesen Endpunkt für die Kommunikation mit Amazon S3: s3.<region>.amazonaws.com. Wenn Ihre Region nach dem 20. März 2019 gestartet wurde, müssen sich Ihr Client und Ihr Bucket in derselben Region befinden. Sie können jedoch einen Client in der Region USA Ost (Nord-Virginia) verwenden, um einen Bucket in einer beliebigen Region zu erstellen, die vor dem 20. März 2019 gestartet wurde. Weitere Informationen finden Sie unter Legacy-Endpunkte.

Das AWS-SDK-Codebeispiel führt die folgenden Aufgaben durch:

  • Erstellen Sie einen Client, indem Sie explizit eine AWS-Region angeben – Im Beispiel verwendet der Client den Endpunkt s3.us-west-2.amazonaws.com, um mit Amazon S3 zu kommunizieren. Sie können eine beliebige AWS-Region angeben. Eine Liste der verfügbaren AWS-Regionen finden Sie unter Regions and Endpoints (Regionen und Endpunkte) in der Allgemeinen AWS-Referenz.

  • Senden einer Bucket-Erstellungs-Anfrage durch Angabe eines Bucket-Namens – Der Client sendet eine Anfrage an Amazon S3, um den Bucket in der Region zu erstellen, in der Sie einen Client erstellt haben.

  • Abrufen von Informationen zum Standort des Buckets – Amazon S3 speichert Informationen zum Standort des Buckets in der Subressource location (Standort), die dem Bucket zugeordnet ist.

Java

Dieses Beispiel zeigt, wie ein Amazon-S3-Bucket mit dem erstellt wird AWS SDK for Java. Anweisungen zum Erstellen und Testen eines funktionierenden Beispiels finden Sie unter Testen der Java-Codebeispiele für Amazon S3.

import com.amazonaws.AmazonServiceException; import com.amazonaws.SdkClientException; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.CreateBucketRequest; import com.amazonaws.services.s3.model.GetBucketLocationRequest; import java.io.IOException; public class CreateBucket2 { public static void main(String[] args) throws IOException { Regions clientRegion = Regions.DEFAULT_REGION; String bucketName = "*** Bucket name ***"; try { AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withCredentials(new ProfileCredentialsProvider()) .withRegion(clientRegion) .build(); if (!s3Client.doesBucketExistV2(bucketName)) { // Because the CreateBucketRequest object doesn't specify a region, the // bucket is created in the region specified in the client. s3Client.createBucket(new CreateBucketRequest(bucketName)); // Verify that the bucket was created by retrieving it and checking its location. String bucketLocation = s3Client.getBucketLocation(new GetBucketLocationRequest(bucketName)); System.out.println("Bucket location: " + bucketLocation); } } catch (AmazonServiceException e) { // The call was transmitted successfully, but Amazon S3 couldn't process // it and returned an error response. e.printStackTrace(); } catch (SdkClientException e) { // Amazon S3 couldn't be contacted for a response, or the client // couldn't parse the response from Amazon S3. e.printStackTrace(); } } }
.NET

Weitere Informationen zum Erstellen und Testen eines funktionierenden Beispiels finden Sie unter Ausführen der .NET-Codebeispiele für Amazon S3.

using Amazon; using Amazon.S3; using Amazon.S3.Model; using Amazon.S3.Util; using System; using System.Threading.Tasks; namespace Amazon.DocSamples.S3 { class CreateBucketTest { private const string bucketName = "*** bucket name ***"; // Specify your bucket region (an example region is shown). private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2; private static IAmazonS3 s3Client; public static void Main() { s3Client = new AmazonS3Client(bucketRegion); CreateBucketAsync().Wait(); } static async Task CreateBucketAsync() { try { if (!(await AmazonS3Util.DoesS3BucketExistAsync(s3Client, bucketName))) { var putBucketRequest = new PutBucketRequest { BucketName = bucketName, UseClientRegion = true }; PutBucketResponse putBucketResponse = await s3Client.PutBucketAsync(putBucketRequest); } // Retrieve the bucket location. string bucketLocation = await FindBucketLocationAsync(s3Client); } catch (AmazonS3Exception e) { Console.WriteLine("Error encountered on server. Message:'{0}' when writing an object", e.Message); } catch (Exception e) { Console.WriteLine("Unknown encountered on server. Message:'{0}' when writing an object", e.Message); } } static async Task<string> FindBucketLocationAsync(IAmazonS3 client) { string bucketLocation; var request = new GetBucketLocationRequest() { BucketName = bucketName }; GetBucketLocationResponse response = await client.GetBucketLocationAsync(request); bucketLocation = response.Location.ToString(); return bucketLocation; } } }
Ruby

Weitere Informationen zum Erstellen und Testen eines funktionierenden Beispiels finden Sie unter Verwenden von AWS SDK for Ruby – Version 3.

require "aws-sdk-s3" # Wraps Amazon S3 bucket actions. class BucketCreateWrapper attr_reader :bucket # @param bucket [Aws::S3::Bucket] An Amazon S3 bucket initialized with a name. This is a client-side object until # create is called. def initialize(bucket) @bucket = bucket end # Creates an Amazon S3 bucket in the specified AWS Region. # # @param region [String] The Region where the bucket is created. # @return [Boolean] True when the bucket is created; otherwise, false. def create?(region) @bucket.create(create_bucket_configuration: { location_constraint: region }) true rescue Aws::Errors::ServiceError => e puts "Couldn't create bucket. Here's why: #{e.message}" false end # Gets the Region where the bucket is located. # # @return [String] The location of the bucket. def location if @bucket.nil? "None. You must create a bucket before you can get it's location!" else @bucket.client.get_bucket_location(bucket: @bucket.name).location_constraint end rescue Aws::Errors::ServiceError => e "Couldn't get the location of #{@bucket.name}. Here's why: #{e.message}" end end def run_demo region = "us-west-2" wrapper = BucketCreateWrapper.new(Aws::S3::Bucket.new("doc-example-bucket-#{Random.uuid}")) return unless wrapper.create?(region) puts "Created bucket #{wrapper.bucket.name}." puts "Your bucket's region is: #{wrapper.location}" end run_demo if $PROGRAM_NAME == __FILE__

Sie können auch die AWS Command Line Interface (AWS CLI) verwenden, um einen S3 Bucket zu erstellen. Weitere Informationen finden Sie unter create-bucket in der AWS CLI-Befehlsreferenz.

Weitere Informationen zu AWS CLI, finden Sie unter Was ist AWS Command Line Interface? im AWS Command Line Interface-Benutzerhandbuch.