As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Usar endereços IP elásticos no Amazon EC2
Pré-requisitos
Antes de começar, recomendamos que você leia Getting started using the AWS SDK para C++.
Baixe o exemplo código de código e crie a solução conforme descrito em Conceitos básicos dos exemplos de código.
Para executar os exemplos, o perfil de usuário que seu código usa para fazer as solicitações deve ter as permissões adequadas na AWS (para o serviço e a ação). Para acessar mais informações, consulte Fornecer credenciais da AWS.
Alocar um endereço IP elástico
Para usar um endereço IP elástico, você primeiro aloca um para sua conta e o associa à instância ou a uma interface de rede.
Para alocar um endereço IP elástico, chame a função AllocateAddress do EC2Client com um objeto AllocateAddressRequest com o tipo de rede (EC2 ou VPC clássico).
Atenção
Estamos aposentando o EC2-Classic em 15 de agosto de 2022. É recomendável migrar do EC2-Classic para uma VPC. Para acessar mais informações, consulte Migrar do EC2-Classic para uma VPC no Guia do usuário das instâncias do Linux do Amazon EC2 ou no Guia do usuário das instâncias do Windows do Amazon EC2. Consulte também a publicação do blog EC2-Classic Networking is Retiring - Here's How to Prepare
A classe AllocateAddressResponse no objeto de resposta contém um ID de alocação que você pode usar para associar o endereço a uma instância, transmitindo o ID de alocação e o ID de instância em uma AssociateAddressRequest para a função AssociateAddress do EC2Client.
Inclui
#include <aws/ec2/EC2Client.h> #include <aws/ec2/model/AllocateAddressRequest.h> #include <aws/ec2/model/AssociateAddressRequest.h> #include <iostream>
Código da
Aws::EC2::EC2Client ec2Client(clientConfiguration); Aws::EC2::Model::AllocateAddressRequest request; request.SetDomain(Aws::EC2::Model::DomainType::vpc); const Aws::EC2::Model::AllocateAddressOutcome outcome = ec2Client.AllocateAddress(request); if (!outcome.IsSuccess()) { std::cerr << "Failed to allocate Elastic IP address:" << outcome.GetError().GetMessage() << std::endl; return false; } const Aws::EC2::Model::AllocateAddressResponse &response = outcome.GetResult(); allocationID = response.GetAllocationId(); publicIPAddress = response.GetPublicIp(); Aws::EC2::Model::AssociateAddressRequest associate_request; associate_request.SetInstanceId(instanceId); associate_request.SetAllocationId(allocationID); const Aws::EC2::Model::AssociateAddressOutcome associate_outcome = ec2Client.AssociateAddress(associate_request); if (!associate_outcome.IsSuccess()) { std::cerr << "Failed to associate Elastic IP address " << allocationID << " with instance " << instanceId << ":" << associate_outcome.GetError().GetMessage() << std::endl; return false; } std::cout << "Successfully associated Elastic IP address " << allocationID << " with instance " << instanceId << std::endl;
Consulte o exemplo completo
Descrever endereços IP elásticos
Para listar os endereços IP elásticos atribuídos à conta, chame a função DescribeAddresses do EC2Client. Ele exibe um objeto de resultado que contém uma DescribeAddressesResponse que pode ser usada para recuperar uma lista de objetos Address que representam os endereços IP elásticos na conta.
Inclui
#include <aws/ec2/EC2Client.h> #include <aws/ec2/model/DescribeAddressesRequest.h> #include <aws/ec2/model/DescribeAddressesResponse.h> #include <iomanip> #include <iostream>
Código da
Aws::EC2::EC2Client ec2Client(clientConfiguration); Aws::EC2::Model::DescribeAddressesRequest request; Aws::EC2::Model::DescribeAddressesOutcome outcome = ec2Client.DescribeAddresses(request); if (outcome.IsSuccess()) { std::cout << std::left << std::setw(20) << "InstanceId" << std::setw(15) << "Public IP" << std::setw(10) << "Domain" << std::setw(30) << "Allocation ID" << std::setw(25) << "NIC ID" << std::endl; const Aws::Vector<Aws::EC2::Model::Address> &addresses = outcome.GetResult().GetAddresses(); for (const auto &address: addresses) { Aws::String domainString = Aws::EC2::Model::DomainTypeMapper::GetNameForDomainType( address.GetDomain()); std::cout << std::left << std::setw(20) << address.GetInstanceId() << std::setw(15) << address.GetPublicIp() << std::setw(10) << domainString << std::setw(30) << address.GetAllocationId() << std::setw(25) << address.GetNetworkInterfaceId() << std::endl; } } else { std::cerr << "Failed to describe Elastic IP addresses:" << outcome.GetError().GetMessage() << std::endl; }
Consulte o exemplo completo
Liberar um endereço IP elástico
Para liberar um endereço IP elástico, chame a função ReleaseAddress do EC2Client, transmitindo a ela uma ReleaseAddressRequest com o ID de alocação do endereço IP elástico que você deseja liberar.
Inclui
#include <aws/ec2/EC2Client.h> #include <aws/ec2/model/ReleaseAddressRequest.h> #include <iostream>
Código da
Aws::EC2::EC2Client ec2(clientConfiguration); Aws::EC2::Model::ReleaseAddressRequest request; request.SetAllocationId(allocationID); Aws::EC2::Model::ReleaseAddressOutcome outcome = ec2.ReleaseAddress(request); if (!outcome.IsSuccess()) { std::cerr << "Failed to release Elastic IP address " << allocationID << ":" << outcome.GetError().GetMessage() << std::endl; } else { std::cout << "Successfully released Elastic IP address " << allocationID << std::endl; }
Depois que você liberar um endereço IP elástico, ele será liberado para o grupo de endereços IP da AWS e poderá estar indisponível em seguida. Não se esqueça de atualizar os registros DNS e todos os servidores ou dispositivos que se comunicam com o endereço. Se tentar liberar um endereço IP elástico já liberado, você receberá um erro AuthFailure se o endereço já estiver alocado para outra conta da AWS.
Se você estiver usando a VPC padrão, liberar um endereço IP elástico o desassociará automaticamente de qualquer instância a qual esteja associado. Para desassociar um endereço IP elástico sem liberá-lo, use a função DisassociateAddress do EC2Client.
Se estiver usando uma VPC não padrão, você deverá usar DisassociateAddress para desassociar o endereço IP elástico antes de tentar liberá-lo. Do contrário, o Amazon EC2 exibirá um erro (InvalidIPAddress.InUse).
Consulte o exemplo completo
Mais informações
-
Endereços IP elásticos no Guia do usuário do Amazon EC2.
-
AllocateAddress na Referência de API do Amazon EC2
-
DescribeAddresses na Referência de API do Amazon EC2.
-
ReleaseAddress na Referência de API do Amazon EC2