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á.
Usando endereços IP elásticos na Amazon EC2
Pré-requisitos
Antes de começar, recomendamos que você leia Introdução ao uso do AWS SDK para C++.
Baixe o código de exemplo e crie a solução conforme descrito emIntrodução aos 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 AWS (para o serviço e a ação). Para obter mais informações, consulte Fornecimento de AWS credenciais.
Aloque 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 AllocateAddress
função do EC2 cliente com um AllocateAddressRequestobjeto contendo o tipo de rede (clássico EC2 ou VPC).
Atenção
Estamos nos aposentando do EC2 -Classic em 15 de agosto de 2022. Recomendamos que você migre de EC2 -Classic para uma VPC. Para obter mais informações, consulte Migrar de EC2 -Classic para uma VPC no Guia do usuário da Amazon para instâncias Linux ou no Guia EC2 do usuário da Amazon para instâncias EC2 do Windows. Veja também a postagem do blog EC2- A rede clássica está se aposentando - veja como se preparar
A AllocateAddressResponseclasse no objeto de resposta contém uma ID de alocação que você pode usar para associar o endereço a uma instância, passando a ID de alocação e a ID da instância em AssociateAddressRequesta para a função do EC2 AssociateAddress
Cliente.
Inclui
#include <aws/ec2/EC2Client.h> #include <aws/ec2/model/AllocateAddressRequest.h> #include <aws/ec2/model/AssociateAddressRequest.h> #include <iostream>
Código
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 à sua conta, chame a DescribeAddresses
função do EC2 cliente. Ele retorna um objeto de resultado que contém um DescribeAddressesResponseque você pode usar para obter uma lista de objetos de endereço que representam os endereços IP elásticos em sua 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
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 ReleaseAddress
função do EC2 cliente, passando a ela um ReleaseAddressRequestcontendo 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
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 de liberar um endereço IP elástico, ele é liberado para o pool de endereços AWS IP e pode ficar indisponível para você posteriormente. Não se esqueça de atualizar os registros DNS e todos os servidores ou dispositivos que se comunicam com o endereço. Se você tentar liberar um endereço IP elástico que você já liberou, receberá um AuthFailureerro se o endereço já estiver alocado para outra AWS conta.
Se você estiver usando uma VPC padrão, a liberação de um endereço IP elástico o desassociará automaticamente de qualquer instância à qual ele esteja associado. Para desassociar um endereço IP elástico sem liberá-lo, use a função do EC2 DisassociateAddress
cliente.
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. Caso contrário, a Amazon EC2 retornará um erro (IPAddressinválido). InUse).
Consulte o exemplo completo
Mais informações
-
Endereços IP elásticos no Guia EC2 do usuário da Amazon
-
AllocateAddressna Amazon EC2 API Reference
-
DescribeAddressesna Amazon EC2 API Reference
-
ReleaseAddressna Amazon EC2 API Reference