最新 追記

雑記帳


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が前提。