Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Uso de direcciones IP elásticas en Amazon EC2
Requisitos previos
Antes de comenzar, le recomendamos que lea Primeros pasos con el AWS SDK para C++.
Descargue el código de ejemplo y compile la solución tal y como se describe en Introducción a los ejemplos de código.
Para ejecutar los ejemplos, el perfil de usuario que utiliza tu código para realizar las solicitudes debe tener los permisos adecuados AWS (para el servicio y la acción). Para obtener más información, consulte Proporcionar AWS credenciales.
Asignación de una dirección IP elástica
Para utilizar una dirección IP elástica, primero asigne una a su cuenta y, a continuación, asóciela a su instancia o a una interfaz de red.
Para asignar una dirección IP elástica, llame a la AllocateAddress función del EC2 cliente con un AllocateAddressRequestobjeto que contenga el tipo de red (EC2 clásico o VPC).
aviso
Vamos a retirar EC2-Classic el 15 de agosto de 2022. Le recomendamos que migre de EC2-Classic a una VPC. Para obtener más información, consulte Migración de EC2-Classic a una VPC en la Guía del usuario de Amazon EC2 para instancias de Linux o en la Guía del usuario de Amazon EC2 para instancias de Windows. Consulte también la entrada de blog EC2-Classic Networking is Retiring – Here's How to Prepare
La AllocateAddressResponseclase del objeto de respuesta contiene un identificador de asignación que puede utilizar para asociar la dirección a una instancia, pasando el identificador de asignación y el identificador de instancia en AssociateAddressRequesta a la función del EC2 AssociateAddress cliente.
Incluye
#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 el ejemplo completo
Describir direcciones IP elásticas
Para ver las direcciones IP elásticas asignadas a su cuenta, llame a la DescribeAddresses función del EC2 Cliente. Devuelve un objeto de resultado que contiene un objeto DescribeAddressesResponseque puede utilizar para obtener una lista de objetos de dirección que representan las direcciones IP elásticas de su cuenta.
Incluye
#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 el ejemplo completo
Liberación de una dirección IP elástica
Para liberar una dirección IP elástica, llame a la ReleaseAddress función del EC2 cliente y pásele una que ReleaseAddressRequestcontenga el ID de asignación de la dirección IP elástica que desee liberar.
Incluye
#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; }
Después de publicar una dirección IP elástica, se transfiere al conjunto de direcciones AWS IP y es posible que no esté disponible para usted posteriormente. Asegúrese de actualizar sus registros DNS y los servidores o dispositivos que se comunican con la dirección. Si intenta liberar una dirección IP elástica que ya ha publicado, aparecerá un mensaje de AuthFailureerror si la dirección ya está asignada a otra AWS cuenta.
Si utiliza una VPC predeterminada, al liberar una dirección IP elástica, esta se desvincula automáticamente de cualquier instancia a la que esté asociada. Para desasociar una dirección IP elástica sin liberarla, utilice la DisassociateAddress función del EC2 cliente.
Si utiliza una VPC distinta de la predeterminada, debe usar DisassociateAddress para desvincular la dirección IP elástica antes de intentar liberarla. De lo contrario, Amazon EC2 devuelve un error (no válido). IPAddress InUse).
Consulte el ejemplo completo
Más información
-
Direcciones IP elásticas en la Guía del usuario de Amazon EC2
-
AllocateAddressen la referencia de la API de Amazon EC2
-
DescribeAddressesen la referencia de la API de Amazon EC2
-
ReleaseAddressen la referencia de la API de Amazon EC2