Amazon EC2의 보안 그룹 작업
사전 조건
시작하기 전에 AWS SDK for C++ 사용 시작하기를 읽어보시기 바랍니다.
예제 코드를 다운로드하고 코드 예제 시작하기에 설명된 대로 솔루션을 빌드합니다.
예제를 실행하려면 코드가 요청을 수행하는 데 사용하는 사용자 프로필이 AWS에서 적절한 권한(서비스 및 동작에 대한)을 보유하고 있어야 합니다. 자세한 내용은 AWS 자격 증명 제공을 참조하세요.
보안 그룹 생성
보안 그룹을 생성하려면 EC2Client의 CreateSecurityGroup 함수를 키 이름이 포함된 CreateSecurityGroupRequest와 함께 호출합니다.
포함 파일
#include <aws/ec2/EC2Client.h> #include <aws/ec2/model/CreateSecurityGroupRequest.h>
코드
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;
전체 예제
보안 그룹 구성
보안 그룹은 Amazon EC2 인스턴스에 대한 인바운드(수신) 및 아웃바운드(송신) 트래픽을 모두 제어할 수 있습니다.
보안 그룹에 수신 규칙을 추가하려면 EC2Client의 AuthorizeSecurityGroupIngress 함수를 사용합니다. 이때 AuthorizeSecurityGroupIngressRequest 객체 내에서 보안 그룹의 이름과 보안 그룹에 할당하려는 액세스 규칙(IpPermission)을 제공해야 합니다. 다음 예제에서는 IP 권한을 보안 그룹에 추가하는 방법을 보여줍니다.
포함 파일
#include <aws/ec2/model/AuthorizeSecurityGroupIngressRequest.h>
코드
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; }
보안 그룹에 송신 규칙을 추가하려면 AuthorizeSecurityGroupEgressRequest의 유사한 데이터를 EC2Client의 AuthorizeSecurityGroupEgress 함수에 제공합니다.
전체 예제
보안 그룹 설명
보안 그룹을 설명하거나 보안 그룹에 대한 정보를 가져오려면 EC2Client의 DescribeSecurityGroups 함수를 DescribeSecurityGroupsRequest와 함께 호출합니다.
결과 객체에서 DescribeSecurityGroupsResponse를 수신하게 되며, 이 객체의 GetSecurityGroups 함수를 호출하여 보안 그룹 목록에 액세스할 수 있습니다. 그러면 SecurityGroup 객체 목록이 반환됩니다.
포함 파일
#include <aws/ec2/EC2Client.h> #include <aws/ec2/model/DescribeSecurityGroupsRequest.h> #include <aws/ec2/model/DescribeSecurityGroupsResponse.h> #include <iomanip> #include <iostream>
코드
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());
전체 예제
보안 그룹 삭제
보안 그룹을 삭제하려면 EC2Client의 DeleteSecurityGroup 함수를 호출합니다. 이때 삭제할 보안 그룹의 ID가 포함된 DeleteSecurityGroupRequest를 전달합니다.
포함 파일
#include <aws/ec2/EC2Client.h> #include <aws/ec2/model/DeleteSecurityGroupRequest.h> #include <iostream>
코드
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; }
전체 예제
추가 정보
-
Amazon EC2 사용 설명서의 Amazon EC2 보안 그룹
-
Amazon EC2 사용 설명서의 Linux 인스턴스의 인바운드 트래픽 권한 부여
-
Amazon EC2 API 참조의 CreateSecurityGroup
-
Amazon EC2 API 참조의 DescribeSecurityGroups
-
Amazon EC2 API 참조의 DeleteSecurityGroup
-
Amazon EC2 API 참조의 AuthorizeSecurityGroupIngress