処理の実行
VPC IDを取得します。
コマンド:
EC2_VPC_ID=$( \
aws ec2 describe-vpcs \
--filters Name=tag:Name,Values=${EC2_VPC_TAG_NAME} \
--query 'Vpcs[].VpcId' \
--output text \
) \
&& echo ${EC2_VPC_ID}
結果(例):
セキュリティグループのセキュリティグループIDを取得します。
コマンド:
EC2_SECURITY_GROUP_ID=$( \
aws ec2 describe-security-groups \
--filter Name=vpc-id,Values=${EC2_VPC_ID} \
Name=group-name,Values=${EC2_SECURITY_GROUP_NAME} \
--query "SecurityGroups[].GroupId" \
--output text \
) \
&& echo ${EC2_SECURITY_GROUP_ID}
結果(例):
作業サイトのIPアドレスを取得します。
コマンド:
IP_ADDR_LOCAL=$( curl -s http://checkip.amazonaws.com/ ) \
&& echo ${IP_ADDR_LOCAL}
結果(例):
変数の設定:
EC2_SECURITY_GROUP_RULE_CIDR="${IP_ADDR_LOCAL}/32" \
&& echo ${EC2_SECURITY_GROUP_RULE_CIDR}
結果(例):
セキュリティグループルールIDを取得します。
コマンド:
EC2_SECURITY_GROUP_RULE_ID=$( \
aws ec2 describe-security-group-rules \
--max-results 100 \
--filter Name=group-id,Values=${EC2_SECURITY_GROUP_ID} \
Name=tag:Name,Values=${EC2_SECURITY_GROUP_RULE_TAG_NAME} \
--query 'SecurityGroupRules[].SecurityGroupRuleId' \
--output text \
) \
&& echo ${EC2_SECURITY_GROUP_RULE_ID}
結果(例):
セキュリティグループルールID配列を生成します。
変数の設定:
ARRAY_EC2_SECURITY_GROUP_RULE_IDS=$( \
echo "${EC2_SECURITY_GROUP_RULE_ID} ${ARRAY_EC2_SECURITY_GROUP_RULE_IDS}" \
| sed 's/ *$//' \
) \
&& echo ${ARRAY_EC2_SECURITY_GROUP_RULE_IDS}
結果(例):
セキュリティグループのルールを削除します。
変数の確認:
cat << END
# EC2_SECURITY_GROUP_ID:"sg-xxxxxxxxxxxxxxxxx"
EC2_SECURITY_GROUP_ID="${EC2_SECURITY_GROUP_ID}"
# ARRAY_EC2_SECURITY_GROUP_RULE_IDS:"sgr-xxxxxxxxxxxxxxxxx"
ARRAY_EC2_SECURITY_GROUP_RULE_IDS="${ARRAY_EC2_SECURITY_GROUP_RULE_IDS}"
END
コマンド:
aws ec2 revoke-security-group-ingress \
--group-id ${EC2_SECURITY_GROUP_ID} \
--security-group-rule-ids "${ARRAY_EC2_SECURITY_GROUP_RULE_IDS}"
結果(例):
完了確認
「VPC"handson-cli-ec2-sg-vpc"のセキュリティグループ"handson-cli-ec2-sg-app-sg"に、タグ名"http-local"のルールが存在しない。」ことを確認します。
コマンド:
aws ec2 describe-security-group-rules \
--max-results 100 \
--filter Name=group-id,Values=${EC2_SECURITY_GROUP_ID} \
Name=tag:Name,Values=${EC2_SECURITY_GROUP_RULE_TAG_NAME} \
--query 'SecurityGroupRules[].Tags[].Value' \
--output text
結果(例):
「VPC"handson-cli-ec2-sg-vpc"のセキュリティグループ"handson-cli-ec2-sg-app-sg"に、"80/tcp"に対する通信をCIDR"xxx.xxx.xxx.xxx/32"に許可するルールが存在しない。」ことを確認します。
コマンド:
aws ec2 describe-security-groups \
--filter Name=vpc-id,Values=${EC2_VPC_ID} \
Name=group-name,Values=${EC2_SECURITY_GROUP_NAME} \
Name=ip-permission.protocol,Values=${EC2_SECURITY_GROUP_RULE_PROTOCOL} \
Name=ip-permission.to-port,Values=${EC2_SECURITY_GROUP_RULE_PORT} \
Name=ip-permission.cidr,Values=${EC2_SECURITY_GROUP_RULE_CIDR} \
--query "SecurityGroups[].IpPermissions[?IpProtocol == \`${EC2_SECURITY_GROUP_RULE_PROTOCOL}\` \
&& ToPort == \`${EC2_SECURITY_GROUP_RULE_PORT}\` \
&& IpRanges[?CidrIp == \`${EC2_SECURITY_GROUP_RULE_CIDR}\`]].IpRanges[][].CidrIp" \
--output text
結果(例):