Usar endpoints de pilha dupla do Amazon S3
Os endpoints de pilha dupla do Amazon S3 oferecem suporte para buckets do S3 por IPv6 e IPv4. Esta seção descreve como usar os endpoints de pilha dupla.
Tópicos
Endpoints de pilha dupla do Amazon S3
Quando você faz uma solicitação para um endpoint de pilha dupla, o URL do bucket resolve para um endereço IPv6 ou IPv4. Para obter mais informações sobre como acessar um bucket por meio do IPv6, consulte Fazer solicitações para o Amazon S3 por meio do IPv6.
Ao usar a API REST, você acessa diretamente um endpoint do Amazon S3 usando o nome do endpoint (URI). Você pode acessar um bucket do S3 por meio de um endpoint de pilha dupla usando um nome de endpoint de estilo de hospedagem virtual ou de estilo de caminho. O Amazon S3 oferece suporte apenas a nomes regionais de endpoint de pilha dupla, o que significa que você deve especificar a região como parte do nome.
Use as seguintes convenções de atribuição de nomes para os nomes de endpoint de estilo de hospedagem virtual e de estilo de caminho de pilha dupla:
-
Endpoint de pilha dupla de estilo de hospedagem virtual
bucketname
.s3.dualstack.aws-region
.amazonaws.com -
Endpoint de pilha dupla de estilo de caminho:
s3.dualstack.
aws-region
.amazonaws.com/bucketname
Para obter mais informações sobre estilo de nome de endpoints, consulte Acessar e listar um bucket do Amazon S3. Para obter uma lista dos endpoints do Amazon S3, consulte Regiões e endpoints na Referência geral da AWS.
Importante
Você pode usar a aceleração de transferência com endpoints de pilha dupla. Para ter mais informações, consulte Conceitos básicos do Amazon S3 Transfer Acceleration.
nota
Os dois tipos de endpoint da VPC para acessar o Amazon S3 (endpoints de interface da VPC e endpoints de VPC do gateway) não são compatíveis com pilha dupla. Para obter mais informações sobre os endpoints da VPC para o Amazon S3, consulte AWS PrivateLink for Amazon S3.
Ao usar a AWS Command Line Interface (AWS CLI) e os AWS SDKs, você pode utilizar um parâmetro ou um sinalizador para mudar para um endpoint de pilha dupla. Você também pode especificar o endpoint de pilha dupla diretamente como uma substituição do endpoint do Amazon S3 no arquivo de configuração. As seções a seguir descrevem como usar endpoints de pilha dupla da AWS CLI e dos AWS SDKs.
Usar endpoints de pilha dupla da AWS CLI
Esta seção fornece exemplos de comandos da AWS CLI usados para fazer solicitações a um endpoint de pilha dupla. Para obter instruções de configuração da AWS CLI, consulte Desenvolvimento com o Amazon S3 usando a AWS CLI.
Você define o valor de configuração use_dualstack_endpoint
para true
em um perfil no seu arquivo do AWS Config para direcionar todas as solicitações do Amazon S3 feitas pelos comandos s3
e s3api
da AWS CLI ao endpoint de pilha dupla para a região especificada. Especifique a região no arquivo de configuração ou em um comando usando a opção --region
.
Quando se usa endpoints de pilha dupla com a AWS CLI, os estilos de endereçamento path
e virtual
são compatíveis. O estilo de endereçamento, definido no arquivo de configuração, controla se o nome do bucket está no hostname ou em parte do URL. Por padrão, a CLI tentará usar o estilo virtual sempre que possível, mas voltará ao estilo de caminho se necessário. Para obter mais informações, consulte Configuração do Amazon S3 da AWS CLI.
Você também pode fazer alterações de configuração usando um comando, conforme mostrado no exemplo a seguir que define use_dualstack_endpoint
para true
e addressing_style
para virtual
no perfil padrão.
$
aws configure set default.s3.use_dualstack_endpoint true$
aws configure set default.s3.addressing_style virtual
Se quiser usar um endpoint de pilha dupla apenas para comandos especificados da AWS CLI, (nem todos os comandos), você pode usar qualquer um dos métodos a seguir:
Você pode usar o endpoint de pilha dupla por comando, definindo o parâmetro
--endpoint-url
comohttps://s3.dualstack.
ouaws-region
.amazonaws.comhttp://s3.dualstack.
para qualquer comandoaws-region
.amazonaws.coms3
ous3api
.$
aws s3api list-objects --bucketbucketname
--endpoint-url https://s3.dualstack.aws-region
.amazonaws.comVocê pode configurar perfis separados em seu arquivo do AWS Config. Por exemplo, crie um perfil que defina
use_dualstack_endpoint
comotrue
e um perfil que não definause_dualstack_endpoint
. Quando executar um comando, especifique qual perfil deseja usar, dependendo de querer ou não usar o endpoint de pilha dupla.
nota
Atualmente, ao usar a AWS CLI, você não pode usar a aceleração de transferência com endpoints de pilha dupla. Contudo, o suporte para a AWS CLI estará disponível em breve. Para obter mais informações, consulte Usar a AWS CLI.
Usar endpoints de pilha dupla dos AWS SDKs
Esta seção fornece exemplos de como acessar um endpoint de pilha dupla usando os AWS SDKs.
AWS SDK for JavaExemplo do endpoint de pilha dupla do
O exemplo a seguir mostra como habilitar endpoints de pilha dupla ao criar um cliente do Amazon S3 usando o AWS SDK for Java.
Consulte instruções sobre como criar e testar uma amostra funcional de Java em Getting Started no Guia do desenvolvedor do AWS SDK for Java.
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; public class DualStackEndpoints { public static void main(String[] args) { Regions clientRegion = Regions.DEFAULT_REGION; String bucketName = "*** Bucket name ***"; try { // Create an Amazon S3 client with dual-stack endpoints enabled. AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withCredentials(new ProfileCredentialsProvider()) .withRegion(clientRegion) .withDualstackEnabled(true) .build(); s3Client.listObjects(bucketName); } catch (AmazonServiceException e) { // The call was transmitted successfully, but Amazon S3 couldn't process // it, so it 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(); } } }
Se estiver usando o AWS SDK for Java no Windows, você talvez tenha de definir a seguinte propriedade da máquina virtual Java (JVM):
java.net.preferIPv6Addresses=true
AWSExemplo do endpoint de pilha dupla do SDK para .NET
Ao usar o AWS SDK for .NET você, você usa a classe AmazonS3Config
para permitir o uso de um endpoint de pilha dupla, como mostrado no exemplo a seguir.
using Amazon; using Amazon.S3; using Amazon.S3.Model; using System; using System.Threading.Tasks; namespace Amazon.DocSamples.S3 { class DualStackEndpointTest { 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 client; public static void Main() { var config = new AmazonS3Config { UseDualstackEndpoint = true, RegionEndpoint = bucketRegion }; client = new AmazonS3Client(config); Console.WriteLine("Listing objects stored in a bucket"); ListingObjectsAsync().Wait(); } private static async Task ListingObjectsAsync() { try { var request = new ListObjectsV2Request { BucketName = bucketName, MaxKeys = 10 }; ListObjectsV2Response response; do { response = await client.ListObjectsV2Async(request); // Process the response. foreach (S3Object entry in response.S3Objects) { Console.WriteLine("key = {0} size = {1}", entry.Key, entry.Size); } Console.WriteLine("Next Continuation Token: {0}", response.NextContinuationToken); request.ContinuationToken = response.NextContinuationToken; } while (response.IsTruncated == true); } catch (AmazonS3Exception amazonS3Exception) { Console.WriteLine("An AmazonS3Exception was thrown. Exception: " + amazonS3Exception.ToString()); } catch (Exception e) { Console.WriteLine("Exception: " + e.ToString()); } } } }
Para uma amostra completa da .NET para objetos de listagem, consulte Listar chaves de objeto programaticamente.
Para obter informações sobre como configurar e executar exemplos de código, consulte Conceitos básicos do AWS SDK for .NET no Guia do desenvolvedor do AWS SDK for .NET.
Usar endpoints de pilha dupla da API REST
Para obter informações sobre fazer solicitação para endpoints de pilha dupla usando a API REST, consulte Fazer solicitações para endpoints de pilha dupla usando a API REST.