翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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 インスタンスへのインバウンド (ingress) とアウトバウンド (egress) トラフィックの両方を制御できます。
セキュリティグループに Ingress ルールを追加するには、EC2Client の AuthorizeSecurityGroupIngress 関数の呼び出しで、セキュリティグループの名前と割り当てるアクセスルール (IpPermission) を AuthorizeSecurityGroupIngressRequest オブジェクトで指定して渡します。以下の例では、セキュリティグループへの 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; }
セキュリティグループに egress ルールを追加するには、EC2Client の AuthorizeSecurityGroupEgress 関数の呼び出しで、同様のデータを AuthorizeSecurityGroupEgressRequest で指定して渡します。
完全な例
セキュリティグループを記述する
セキュリティグループのリストを取得したり情報を確認したりするには、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」