Crear un bucket - Amazon Simple Storage Service

Crear un bucket

Para cargar los datos en Amazon S3, primero debe crear un bucket de Amazon S3 en una de las Regiones de AWS. Al crear un bucket, debe elegir un nombre de bucket y una región. Si lo desea, puede elegir otras opciones de administración de almacenamiento para el bucket. Después de crear un bucket, no se puede cambiar su nombre ni su región. Para obtener información acerca de la nomenclatura de los buckets, consulte Reglas de nomenclatura de buckets.

La Cuenta de AWS que crea el bucket es propietaria de este. Puede cargar la cantidad de objetos que desee en el bucket. De forma predeterminada, puede crear hasta 100 buckets en cada una de sus Cuentas de AWS. Si necesita más buckets, puede presentar una solicitud de aumento del límite del servicio para aumentar el límite de buckets de la cuenta hasta un máximo de 1000 buckets. Para obtener información acerca de cómo enviar un aumento del límite de buckets, consulte Service Quotas de AWS en la Referencia general de AWS. En un bucket, puede almacenar la cantidad de objetos que desee.

La propiedad de objetos de S3 es una configuración de bucket de Amazon S3 que puede utilizar para desactivar las listas de control de acceso (ACL) y asumir la propiedad de todos los objetos del bucket, lo que simplifica la administración del acceso de los datos almacenados en Amazon S3. De forma predeterminada, cuando otra Cuenta de AWS carga un objeto en su bucket de Amazon S3, esa cuenta (el escritor del objeto) es propietario del objeto, tiene acceso a él y puede conceder acceso a él a otros usuarios a través de ACL. Al crear un bucket, puede aplicar la configuración de propietario del bucket obligatorio de Object Ownership para cambiar este comportamiento predeterminado de modo que las ACL estén desactivadas y, como propietario del bucket, tenga automáticamente la propiedad de todos los objetos del bucket. Como resultado, el control de acceso de los datos se basa en políticas. Para obtener más información, consulte Control de la propiedad de los objetos y desactivación de las ACL del bucket.

importante

A partir de abril de 2023, Amazon S3 cambiará la configuración predeterminada de Bloqueo de acceso público de S3 y Object Ownership (ACL desactivadas) para todos los buckets nuevos de S3. Para los nuevos buckets creados después de esta actualización, se habilitarán todas las configuraciones de Bloqueo de acceso público de S3 y se desactivarán las listas de control de acceso (ACL) de S3. Estos valores predeterminados son las prácticas recomendadas para proteger los datos en Amazon S3. Puede ajustar esta configuración después de crear el bucket. Para obtener más información, consulte Configuración predeterminada para preguntas frecuentes de buckets de S3 nuevos y Aviso: Los cambios en la seguridad de Amazon S3 llegarán en abril de 2023 en el blog de novedades de AWS.

Para crear un bucket, puede utilizar la consola de Amazon S3, las API de Amazon S3, la AWS CLI o los SDK de AWS. Para obtener más información acerca de los permisos necesarios para crear un bucket, consulte CreateBucket en la Referencia de la API de Amazon Simple Storage Service.

  1. Inicie sesión en la AWS Management Console y abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/.

  2. Elija Create bucket (Crear bucket).

    Se abrirá el asistente Crear bucket (Crear bucket).

  3. En Bucket name (Nombre del bucket), escriba un nombre compatible con DNS para el bucket.

    El nombre del bucket debe:

    • Ser único en todo Amazon S3.

    • Tener entre 3 y 63 caracteres.

    • No contiene caracteres en mayúsculas.

    • Comenzar por una letra minúscula o un número.

    Una vez que haya creado el bucket, no podrá modificar su nombre. Para obtener información acerca de la nomenclatura de los buckets, consulte Reglas de nomenclatura de buckets.

    importante

    Evite incluir información confidencial, como el número de cuenta, en el nombre del bucket. El nombre del bucket será visible en las URL que señalan a los objetos almacenados en él.

  4. En Region (Región), elija la Región de AWS en la que desea que se encuentre el bucket.

    Puede seleccionar una región cercana para minimizar la latencia y los costos, así como para satisfacer los requisitos reglamentarios. Los objetos almacenados en una región nunca abandonarán esa región salvo que usted los transfiera de forma específica a otra. Para obtener una lista de las Regiones de AWS de Amazon S3, consulte Puntos de enlace de servicio de AWS en la Referencia general de Amazon Web Services.

  5. En Object Ownership (Propiedad de objetos), para desactivar o habilitar las ACL y controlar la propiedad de los objetos cargados en el bucket, elija una de las siguientes configuraciones:

    ACL desactivadas
    • Propietario del bucket obligatorio: las ACL están desactivadas y el propietario del bucket tiene automáticamente la propiedad y el control total sobre cada objeto del bucket. Las ACL ya no afectan a los permisos de los datos del bucket de S3. El bucket utiliza políticas para definir el control de acceso.

      Para requerir que todos los buckets nuevos se creen con ACL desactivadas mediante políticas de IAM o AWS Organizations, consulte Desactivación de las ACL para todos los buckets nuevos (propietario del bucket obligatorio).

    ACL habilitadas
    • Propietario del bucket preferido: el propietario del bucket tiene la propiedad y el control total sobre los nuevos objetos que otras cuentas escriben en el bucket con la ACL predefinida bucket-owner-full-control.

      Si aplica la configuración de propietario del bucket preferido para requerir que todas las cargas de Amazon S3 incluyan la ACL predefinida bucket-owner-full-control, puede agregar una política de bucket que solo permita cargas de objetos que utilizan esta ACL.

    • Escritor del objeto: la Cuenta de AWS que carga un objeto es propietaria del objeto, tiene control total sobre él y puede conceder a otros usuarios acceso a él a través de ACL.

    nota

    Para aplicar la configuración de propietario del bucket obligatorio o propietario del bucket preferido, debe contar con el siguiente permiso: s3:CreateBucket y s3:PutBucketOwnershipControls.

  6. En Configuración del bucket para Block Public Access, elija la configuración de Block Public Access que desee aplicar al bucket.

    Le recomendamos que deje todas las configuraciones habilitadas a menos que sepa que necesita desactivar una o varias de ellas para su caso de uso, como alojar un sitio web público. La configuración de acceso público de bloqueo que habilite para el bucket también se habilitará para todos los puntos de acceso que cree en el bucket. Para obtener más información acerca del bloqueo del acceso público, consulte Bloquear el acceso público a su almacenamiento de Amazon S3.

  7. (Opcional) En Bucket Versioning (Control de versiones de buckets), puede elegir si desea mantener variantes de objetos en su bucket. Para obtener más información sobre el control de versiones, consulte Usar el control de versiones en buckets de S3.

    Para deshabilitar o habilitar el control de versiones en su bucket, elija Disable (Deshabilitar) o Enable (Habilitar).

  8. (Opcional) En Tags (Etiquetas), puede elegir añadir etiquetas a su bucket. Las etiquetas son pares clave-valor que se utilizan para categorizar el almacenamiento de información.

    Para agregar una etiqueta de bucket, introduzca un valor en Key (Clave) y opcionalmente otro en Value (Valor) y elija Add Tag (Añadir etiqueta).

  9. (Opcional) en Default encryption (Cifrado predeterminado), puede elgir configurar su bucket para utilizar el cifrado en el lado del servidor con clages administradas por Amazon S3 (SSE-S3) o AWS KMS keys almacenadas en AWS Key Management Service (AWS KMS) (SSE-KMS). Para obtener más información, consulte Establecer el comportamiento del cifrado predeterminado del lado del servidor para los buckets de Amazon S3.

    Para habilitar o deshabilitar el cifrado, elija Disable (Deshabilitar) o Enable (Habilitar).

  10. (Opcional) Si desea habilitar el bloqueo de objetos en S3, haga lo siguiente:

    1. Seleccione Advanced settings (Ajustes avanzados).

      importante

      Solo se puede habilitar Bloqueo de objetos para un bucket cuando se crea y no puede deshabilitarse posteriormente. Al habilitar Bloqueo de objetos, también se habilita el control de versiones para el bucket. Después de habilitar, debe configurar la retención predeterminada de Object Lock y la configuración de retención legal para evitar que los nuevos objetos se eliminen o se sobrescriban.

    2. Si desea habilitar el bloqueo de objetos, elija Enable (Habilitar), lea la advertencia que aparece y acéptela.

    Para obtener más información, consulte Usar Bloqueo de objetos de S3.

    nota

    Para crear un bucket con Bloqueo de objetos, debe tener los siguientes permisos: s3:CreateBucket, s3:PutBucketVersioning y s3:PutBucketObjectLockConfiguration.

  11. Elija Create bucket (Crear bucket).

Si usa los SDK de AWS con el objeto de crear un bucket, debe crear un cliente y, luego, utilizar el cliente a fin de enviar una solicitud para crear un bucket. Como práctica recomendada, debe crear el cliente y el bucket en la misma Región de AWS. Si no especifica una región al crear un cliente o un bucket, Amazon S3 utiliza la región predeterminada, EE. UU. Este (Norte de Virginia).

Para crear un cliente con el objeto de obtener acceso a un punto de conexión de doble pila, debe especificar una Región de AWS. Para obtener más información, consulte Puntos de enlace de doble pila. Para ver una lista de las Regiones de AWS disponibles, consulte Regiones y puntos de enlace en la Referencia general de AWS.

Al crear un cliente, la región se asigna al punto de conexión específico de la región. El cliente utiliza este punto de conexión para comunicarse con Amazon S3: s3.<region>.amazonaws.com. Si su región se lanzó después del 20 de marzo de 2019, su cliente y el bucket deben estar en la misma región. Sin embargo, puede utilizar un cliente en la región EE. UU. Este (Norte de Virginia) para crear un bucket en cualquier región que se haya lanzado antes del 20 de marzo de 2019. Para obtener más información, consulte Puntos de conexión heredados.

Con estos ejemplos de códigos de los SDK de AWS, se llevan a cabo las siguientes tareas:

  • Crear un cliente mediante la especificación explícita de una Región de AWS: en el ejemplo, el cliente utiliza el punto de conexión s3.us-west-2.amazonaws.com para comunicarse con Amazon S3. Puede especificar cualquier Región de AWS. Para ver una lista de las Regiones de AWS, consulte Regiones y puntos de enlace en la Referencia general de AWS.

  • Enviar una solicitud de creación de bucket al especificar solo un nombre de bucket: el cliente envía una solicitud a Amazon S3 para crear el bucket en la región donde usted creó un cliente.

  • Recuperar la información acerca de la ubicación del bucket: Amazon S3 almacena información de la ubicación del bucket en el subrecurso location asociado con el bucket.

Java

En este ejemplo, se muestra cómo crear un bucket de Amazon S3 con AWS SDK for Java. Para obtener instrucciones sobre la creación y comprobación de una muestra funcional, consulte Prueba de los ejemplos de código de Java de 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

Para obtener información acerca de cómo crear y probar una muestra funcional, consulte Ejecución de ejemplos de código .NET de 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

Para obtener información acerca de cómo crear y probar una muestra funcional, consulte Uso de la versión 3 de AWS SDK for Ruby.

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__

También puede usar AWS Command Line Interface (AWS CLI) para crear un bucket de S3. Para obtener más información, consulte create-bucket en la Referencia de comandos de la AWS CLI.

Para obtener información sobre AWS CLI, consulte ¿Qué es AWS Command Line Interface? en la Guía del usuario de AWS Command Line Interface.