Trabajar con grupos de seguridad 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.
Creación de un grupo de seguridad
Para crear un grupo de seguridad, llame a la función CreateSecurityGroup de EC2Client con un objeto CreateSecurityGroupRequest que contenga el nombre de la clave.
Incluye
#include <aws/ec2/EC2Client.h> #include <aws/ec2/model/CreateSecurityGroupRequest.h>
Código de
Aws::EC2::EC2Client ec2Client(clientConfiguration); Aws::EC2::Model::CreateSecurityGroupRequest request; request.SetGroupName(groupName); request.SetDescription(description); request.SetVpcId(vpcID); const Aws::EC2::Model::CreateSecurityGroupOutcome outcome = ec2Client.CreateSecurityGroup(request); if (!outcome.IsSuccess()) { std::cerr << "Failed to create security group:" << outcome.GetError().GetMessage() << std::endl; return false; } std::cout << "Successfully created security group named " << groupName << std::endl;
Consulte el ejemplo completo
Configuración de un grupo de seguridad
Un grupo de seguridad puede controlar el tráfico de entrada y salida a sus instancias de Amazon EC2.
Para añadir reglas de entrada al grupo de seguridad, utilice la función AuthorizeSecurityGroupIngress de EC2Client, proporcionando el nombre del grupo de seguridad y las reglas de acceso (IpPermission) que desea asignar al grupo dentro de un objeto AuthorizeSecurityGroupIngressRequest. El siguiente ejemplo muestra cómo añadir permisos de IP a un grupo de seguridad.
Incluye
#include <aws/ec2/model/AuthorizeSecurityGroupIngressRequest.h>
Código de
Aws::EC2::Model::AuthorizeSecurityGroupIngressRequest authorizeSecurityGroupIngressRequest; authorizeSecurityGroupIngressRequest.SetGroupId(groupID);
Aws::String ingressIPRange = "203.0.113.0/24"; // Configure this for your allowed IP range. Aws::EC2::Model::IpRange ip_range; ip_range.SetCidrIp(ingressIPRange); Aws::EC2::Model::IpPermission permission1; permission1.SetIpProtocol("tcp"); permission1.SetToPort(80); permission1.SetFromPort(80); permission1.AddIpRanges(ip_range); authorize_request.AddIpPermissions(permission1); Aws::EC2::Model::IpPermission permission2; permission2.SetIpProtocol("tcp"); permission2.SetToPort(22); permission2.SetFromPort(22); permission2.AddIpRanges(ip_range); authorize_request.AddIpPermissions(permission2);
Aws::EC2::Model::AuthorizeSecurityGroupIngressOutcome authorizeSecurityGroupIngressOutcome = ec2Client.AuthorizeSecurityGroupIngress(authorizeSecurityGroupIngressRequest); if (authorizeSecurityGroupIngressOutcome.IsSuccess()) { std::cout << "Successfully authorized security group ingress." << std::endl; } else { std::cerr << "Error authorizing security group ingress: " << authorizeSecurityGroupIngressOutcome.GetError().GetMessage() << std::endl; }
Para añadir una regla de salida al grupo de seguridad, proporcione datos similares en un objeto AuthorizeSecurityGroupEgressRequest a la función AuthorizeSecurityGroupEgress del EC2Client.
Consulte el ejemplo completo
Describir grupos de seguridad
Para describir los grupos de seguridad o para obtener información sobre ellos, llame a la función DescribeSecurityGroups del EC2Client con un objeto DescribeSecurityGroupsRequest.
Recibirá un objeto DescribeSecurityGroupsResponse en el resultado, que puede usar para obtener acceso a la lista de grupos de seguridad llamando a su función GetSecurityGroups, que devuelve una lista de objetos SecurityGroup.
Incluye
#include <aws/ec2/EC2Client.h> #include <aws/ec2/model/DescribeSecurityGroupsRequest.h> #include <aws/ec2/model/DescribeSecurityGroupsResponse.h> #include <iomanip> #include <iostream>
Codigo
Aws::EC2::EC2Client ec2Client(clientConfiguration); Aws::EC2::Model::DescribeSecurityGroupsRequest request; if (!groupID.empty()) { request.AddGroupIds(groupID); } Aws::String nextToken; do { if (!nextToken.empty()) { request.SetNextToken(nextToken); } Aws::EC2::Model::DescribeSecurityGroupsOutcome outcome = ec2Client.DescribeSecurityGroups(request); if (outcome.IsSuccess()) { std::cout << std::left << std::setw(32) << "Name" << std::setw(30) << "GroupId" << std::setw(30) << "VpcId" << std::setw(64) << "Description" << std::endl; const std::vector<Aws::EC2::Model::SecurityGroup> &securityGroups = outcome.GetResult().GetSecurityGroups(); for (const auto &securityGroup: securityGroups) { std::cout << std::left << std::setw(32) << securityGroup.GetGroupName() << std::setw(30) << securityGroup.GetGroupId() << std::setw(30) << securityGroup.GetVpcId() << std::setw(64) << securityGroup.GetDescription() << std::endl; } } else { std::cerr << "Failed to describe security groups:" << outcome.GetError().GetMessage() << std::endl; return false; } nextToken = outcome.GetResult().GetNextToken(); } while (!nextToken.empty());
Consulte el ejemplo completo
Eliminación de un grupo de seguridad
Para eliminar un grupo de seguridad, llame a la DeleteSecurityGroup del EC2Client transfiriéndole un objeto DeleteSecurityGroupRequest que contenga el ID del grupo de seguridad que desea eliminar.
Incluye
#include <aws/ec2/EC2Client.h> #include <aws/ec2/model/DeleteSecurityGroupRequest.h> #include <iostream>
Código
Aws::EC2::EC2Client ec2Client(clientConfiguration); Aws::EC2::Model::DeleteSecurityGroupRequest request; request.SetGroupId(securityGroupID); Aws::EC2::Model::DeleteSecurityGroupOutcome outcome = ec2Client.DeleteSecurityGroup(request); if (!outcome.IsSuccess()) { std::cerr << "Failed to delete security group " << securityGroupID << ":" << outcome.GetError().GetMessage() << std::endl; } else { std::cout << "Successfully deleted security group " << securityGroupID << std::endl; }
Consulte el ejemplo completo
Más información
-
Grupos de seguridad de Amazon EC2 en la Guía del usuario de Amazon EC2
-
Autorización del tráfico de entrada para sus instancias de Linux en la Guía del usuario de Amazon EC2
-
CreateSecurityGroup en la Referencia de la API de Amazon EC2
-
DescribeSecurityGroups en la Referencia de la API de Amazon EC2
-
DeleteSecurityGroup en la Referencia de la API de Amazon EC2
-
AuthorizeSecurityGroupIngress en la Referencia de la API de Amazon EC2