Uso de direcciones IP elásticas en Amazon EC2 - AWS SDK para C++

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 su código utilice para realizar las solicitudes debe tener los permisos adecuados en AWS (para el servicio y la acción). Para obtener más información, consulte Proporcionar credenciales de AWS.

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 función AllocateAddress del EC2Client con un objeto AllocateAddressRequest 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 (Se va a retirar la red EC2-Classic: cómo prepararse).

La clase AllocateAddressResponse devuelta en el objeto de respuesta contiene un ID de asignación que puede utilizar para asociar la dirección a una instancia, transfiriendo el ID de asignación y el ID de instancia en un objeto AssociateAddressRequest a la función AssociateAddress del EC2Client.

Incluye

#include <aws/ec2/EC2Client.h> #include <aws/ec2/model/AllocateAddressRequest.h> #include <aws/ec2/model/AssociateAddressRequest.h> #include <iostream>

Código de

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 listar las direcciones IP elásticas asignadas a su cuenta, llame a la función DescribeAddresses del EC2Client. Devuelve como resultado un objeto que contiene DescribeAddressesResponse que puede utilizar para obtener una lista de objetos Address que representen 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 función ReleaseAddress del EC2Client; transfiriéndole un objeto ReleaseAddressRequest que contenga el ID de asignación de la dirección IP elástica que quiere liberar.

Incluye

#include <aws/ec2/EC2Client.h> #include <aws/ec2/model/ReleaseAddressRequest.h> #include <iostream>

Code

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; }

Tras liberar una dirección IP elástica, esta se libera del grupo de direcciones IP de AWS y puede que no esté disponible para usarla más adelante. 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 liberado, obtendrá un error AuthFailure si la dirección ya se ha asignado a otra cuenta de AWS.

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 desvincular una dirección IP elástica sin liberarla, utilice la función DisassociateAddress del EC2Client.

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 (InvalidIPAddress.InUse).

Consulte el ejemplo completo

Más información