雑記帳
2014-06-15 (Sun) [長年日記]
■ [AWS] EC2が起動しているSubnetのNetwork ACLのルールの一覧を取得するワンライナー
こんなの需要はない気がするけど…。
$ region=`curl -s http://169.254.169.254/latest/dynamic/instance-identity/document | jq -r '.region'`; \ mac=`ip addr show eth0 | grep 'link/ether' | awk '{print $2}'`; \ subnetid=`curl -s http://169.254.169.254/latest/meta-data/network/interfaces/macs/${mac}/subnet-id/`; \ aws --region ${region} ec2 describe-network-acls --filters "Name=association.subnet-id,Values=${subnetid}" --query 'NetworkAcls[*].Entries[*]' --output text
- 1行目
- メタデータサーバからEC2が稼働しているリージョンを取得している。
- 2行目
- eth0のMACアドレスを取得している。
- 3行目
- メタデータサーバからEC2が稼働しているサブネットIDを取得している。MACアドレスを使っている。
- 4行目
- フィルタを使って指定のサブネットに適用されているネットワークACLを取得する。
出力の例
0.0.0.0/0 True -1 allow 100 0.0.0.0/0 True -1 deny 32767 0.0.0.0/0 False -1 allow 100 0.0.0.0/0 False -1 deny 32767
EC2にIAM Roleで必要な情報が取得できる権限があること、AWS CLI, jq, curl, ip, bashが前提。