Usar endereços IP elásticos no Amazon EC2 - AWS SDK para C++

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 AWS (para o serviço e a ação). Para obter mais informações, consulte Fornecimento de AWS credenciais.

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 AllocateAddress função do EC2 cliente com um AllocateAddressRequestobjeto contendo 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 (O EC2-Classic está sendo retirado: 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 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 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, o Amazon EC2 retornará um erro (inválido). IPAddress InUse).

Consulte o exemplo completo.

Mais informações