Namespaces para buckets de uso geral
Por padrão, os buckets de uso geral existem em um namespace global. Isso significa que cada nome de bucket deve ser exclusivo em todas as contas da AWS em todas as regiões da AWS dentro de uma partição. Uma partição é um agrupamento de regiões. No momento, a AWS tem quatro partições: aws (regiões padrão), aws-cn (regiões da China), aws-us-gov [AWS GovCloud (EUA)] e aws-eusc (European Sovereign Cloud). Ao criar um bucket de uso geral, é possível optar por criar um bucket no namespace global compartilhado. Também é possível optar por criar um bucket no namespace regional da conta. O namespace regional da conta é uma subdivisão do namespace global em que somente a conta pode criar buckets.
Tópicos
Buckets de uso geral globais
Por padrão, os buckets de uso geral globais são criados no namespace global compartilhado. Depois que um bucket de uso geral é criado no namespace global compartilhado, o nome desse bucket torna-se indisponível para qualquer pessoa dentro da partição. Ao excluir um bucket de uso geral global, o respectivo nome é novamente disponibilizado no namespace global para qualquer pessoa reutilizá-lo.
Ao criar buckets de uso geral globais, é possível solicitar qualquer nome que esteja de acordo com as regras de nomenclatura de bucket. Essas regras incluem a especificação de um nome com 3 (mínimo) a 63 (máximo) caracteres. O nome só podem ser compostos de letras minúsculas, números, pontos (.) e hifens (-). Os nomes de bucket devem começar e terminar com uma letra ou um número e não podem conter dois pontos adjacentes. Para ter mais informações sobre regras de nomenclatura de bucket, consulte Regras de nomenclatura de buckets de uso geral.
Ao especificar um nome de bucket de uso geral global, é necessário selecionar um nome exclusivo que ainda não esteja em uso para a partição. Se você tentar criar um bucket que já exista e seja de propriedade de outra pessoa, receberá o erro HTTP 409 BucketAlreadyExists. Se você tentar criar um bucket que já exista e pertença a você, receberá o erro HTTP 409 BucketAlreadyOwnedByYou.
É possível criar buckets de uso geral globais para ter o máximo de flexibilidade na seleção dos nomes de bucket solicitados. Como se trata de um namespace global compartilhado, outras contas podem criar nomes de bucket semelhantes. Outras contas também podem reutilizar nomes de bucket que você excluiu anteriormente. Você não pode depender de convenções de nomenclatura de buckets específicos para fins de disponibilidade ou verificação de segurança. Não escreva código presumindo que o nome do bucket escolhido esteja disponível, a menos que você já tenha criado o bucket. Um método para criar nomes de bucket que não sejam previsíveis é acrescentar um identificador único universal (GUID) ao respectivo nome. Por exemplo, amzn-s3-demo-bucket-a1b2c3d4-5678-90ab-cdef-example11111. Para obter mais informações, consulte Criar um bucket que usa um GUID no nome.
Buckets de uso geral no namespace regional da conta
Embora existam buckets de uso geral do Amazon S3 em um namespace global compartilhado, é possível, opcionalmente, criar buckets no namespace regional de uma conta. O namespace regional da conta é uma subdivisão reservada do namespace global do bucket. Somente a conta pode criar buckets de uso geral nesse namespace. Os novos buckets de uso geral criados no namespace regional da conta são exclusivos da conta. Esses buckets nunca poderão ser recriados por outra conta. Eles comportam todos os recursos do S3 e serviços da AWS que os buckets de uso geral no namespace global compartilhado já comportam. Suas aplicações não precisam de alterações para interagir com os buckets no namespace regional da sua conta.
nota
É possível criar buckets no namespace regional da conta em todas as regiões da AWS, exceto nas regiões Oriente Médio (Bahrein) e Oriente Médio (EAU).
Criar buckets no namespace regional da conta é uma prática recomendada de segurança. Esses nomes de bucket só podem ser usados por sua conta. É possível criar buckets no namespace regional da conta para criar facilmente modelos de nomes de bucket de uso geral em várias regiões da AWS. Você tem a garantia de que nenhuma outra conta poderá criar nomes de bucket no seu namespace. Se outra conta tentar criar um bucket com o sufixo regional da sua conta, a solicitação CreateBucket será rejeitada.
Convenção de nomenclatura de namespace regional da conta
Os buckets de uso geral no namespace regional da conta devem seguir uma convenção de nomenclatura específica. Esses buckets consistem em um prefixo de nome de bucket criado por você e em um sufixo que contém o ID de 12 dígitos da conta da AWS e o código da região da AWS e termina com -an.
bucket-name-prefix-accountId-region-an
Por exemplo, o seguinte bucket de uso geral existe no namespace regional da conta 111122223333 da AWS na região us-west-2:
amzn-s3-demo-bucket-111122223333-us-west-2-an
Para criar um bucket no namespace regional da sua conta, você deve fazer a solicitação CreateBucket. Especifique o cabeçalho da solicitação x-amz-bucket-namespace com o valor definido como account-regional. Especifique também um nome de bucket formatado pelo namespace regional da conta: <customer-chosen-name>-<AWS-Account-ID>-<AWS-Region>-an.
nota
Ao criar um bucket de uso geral no namespace regional da conta usando o console, um sufixo é adicionado automaticamente ao prefixo do bucket fornecido por você. Esse sufixo inclui o ID de sua conta da AWS e a região da AWS que você selecionou para criar o bucket. Ao criar um bucket de uso geral no namespace regional da conta usando a API CreateBucket, é necessário fornecer o sufixo completo. Isso inclui o ID da sua conta da AWS e a AWS região em sua solicitação. Para ver uma lista dos códigos de região da AWS, consulte Formato de código de região da AWS.
Integrar o namespace regional da conta a modelos do CloudFormation
Você pode atualizar suas ferramentas de infraestrutura como código, como o CloudFormation, para simplificar a criação de buckets no namespace regional da sua conta. O CloudFormation oferece os pseudoparâmetros AWS::AccountId e AWS::Region. Esses parâmetros facilitam a criação de modelos do CloudFormation que criam buckets no namespace regional da conta. Para ter mais informações, consulte os valores Obter valores da AWS usando pseudoparâmetros.
Exemplo 1: uso de BucketName com Sub:
BucketName: !Sub "amzn-s3-demo-bucket-${AWS::AccountId}-${AWS::Region}-an" BucketNamespace: "account-regional"
Exemplo 2: uso de BucketNamePrefix:
BucketNamePrefix: 'amzn-s3-demo-bucket' BucketNamespace: "account-regional"
Também é possível usar a propriedade BucketNamePrefix para atualizar o modelo do CloudFormation. BucketNamePrefix permite que você forneça apenas a parte do nome do bucket definida pelo cliente. Em seguida, essa propriedade adiciona automaticamente o sufixo do namespace regional da conta com base na conta da AWS e região da AWS solicitantes que foram especificadas.
Usando essas opções, é possível criar um modelo personalizado do CloudFormation para criar facilmente buckets de uso geral no namespace regional da conta. Para ter mais informações, consulte AWS::S3::Bucket no “Guia do usuário do CloudFormation”.
Restrições e considerações
Ao criar buckets no namespace global compartilhado, as seguintes considerações se aplicam:
-
Um nome de bucket no namespace global compartilhado não pode ser usado por outra conta da AWS na mesma partição enquanto o bucket não for excluído. Depois que você excluir um bucket no namespace global compartilhado, esteja ciente de que outra conta da AWS na mesma partição poderá usar o mesmo nome de bucket para um novo bucket e, portanto, possivelmente receber solicitações destinadas ao bucket excluído.
-
Ao criar aplicações que criarão buckets no namespace global compartilhado, considere que os nomes de bucket desejados podem já ter sido usados por outra conta e que outras contas podem ter nomes de bucket semelhantes aos seus.
-
Como o Amazon S3 identifica buckets com base nos respectivos nomes, uma aplicação que usa um nome de bucket incorreto em uma solicitação pode executar operações inadvertidamente em um bucket diferente do esperado. Para ajudar a evitar interações não intencionais de bucket em situações como essa, você pode usar a condição do proprietário do bucket. Para obter mais informações, consulte Verificar a propriedade do bucket com a condição de proprietário do bucket.
Ao criar buckets no namespace regional da conta, as seguintes restrições e considerações se aplicam:
-
Qualquer tentativa de recriar um bucket no namespace regional da conta que você já possui em qualquer região da AWS exibirá o erro HTTP 409 BucketAlreadyOwnedByYou.
-
Você deve usar os endpoints regionais do S3 para criar buckets no namespace regional da sua conta. Para compatibilidade com versões anteriores, é possível usar o endpoint global legado para criar buckets no namespace regional da conta na região Leste dos EUA (Norte da Virgínia).
-
O sufixo regional da conta entra na contagem do número máximo de 63 caracteres permitido em nomes de bucket de uso geral. Portanto, se o sufixo regional da conta for
-012345678910-us-east-1-an, haverá 37 caracteres disponíveis para o prefixo do nome do bucket.
Formato de código de região da AWS
Para criar um bucket no namespace regional da conta, é necessário incluir a região da AWS no sufixo em que você deseja criar o bucket de uso geral. É necessário especificar o código completo da região da AWS (por exemplo, us-west-2) no sufixo. Consulte Regiões da AWS para ver uma lista completa dos códigos de região da AWS. Os seguintes nomes de bucket mostram dois exemplos de formato de código de região da AWS que devem ser usados ao criar buckets no namespace regional da conta:
-
amzn-s3-demo-bucket-012345678910-ap-southeast-1-an -
amzn-s3-demo-bucket-987654321012-eu-north-1-an
Exigir a criação de buckets no namespace regional da sua conta
Você pode impor que as entidades principais do IAM criem buckets apenas no namespace regional da sua conta. Use a chave de condição s3:x-amz-bucket-namespace. Os exemplos a seguir mostram como é possível impor a criação de buckets regionais da conta em uma política do IAM, política de controle de recursos ou política de controle de serviços.
IAMPolítica de
A política IAM a seguir negará a permissão s3:CreateBucket à entidade principal do IAM se a solicitação não incluir o cabeçalho x-amz-bucket-namespace definido como account-regional.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "RequireAccountRegionalBucketCreation", "Effect": "Deny", "Action": "s3:CreateBucket", "Resource": "*", "Condition": { "StringNotEquals": { "s3:x-amz-bucket-namespace": "account-regional" } } } ] }
Política de controle de recursos
A política de controle de recursos a seguir negará a permissão s3:CreateBucket a todos se a solicitação não incluir o cabeçalho x-amz-bucket-namespace definido como account-regional.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "OnlyCreateBucketsInAccountRegionalNamespace", "Effect": "Deny", "Principal": "*", "Action": "s3:CreateBucket", "Resource": "*", "Condition": { "StringNotEquals": { "s3:x-amz-bucket-namespace": "account-regional" } } } ] }
Política de controle de serviço
A política de controle de serviços a seguir negará a permissão s3:CreateBucket a todos se a solicitação não incluir o cabeçalho x-amz-bucket-namespace definido como account-regional.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "RequireAccountRegionalBucketCreation", "Effect": "Deny", "Action": "s3:CreateBucket", "Resource": "*", "Condition": { "StringNotEquals": { "s3:x-amz-bucket-namespace": "account-regional" } } } ] }
Criar um bucket no namespace regional da conta
Os exemplos a seguir mostram como criar um bucket de uso geral no namespace regional da conta.
Como usar o AWS CLI
O exemplo da AWS CLI a seguir cria um bucket de uso geral no namespace regional para a conta 012345678910 da AWS na região Oeste dos EUA (N. da Califórnia) (us-west-1). Para usar esse exemplo de comando, substitua os user input placeholders por suas próprias informações.
aws s3api create-bucket \ --bucketamzn-s3-demo-bucket-012345678910-us-west-1-an\ --bucket-namespace account-regional --regionus-west-1\ --create-bucket-configuration LocationConstraint=us-west-1