AWS

AWS Configのマネージドルールの一覧をCSVファイルで出力

AWS Config のマネージドルールの一覧と詳細を抽出し、CSVファイルに出力する手順をまとめました!

 対象ページ:AWS Config マネージドルールのリスト

前提

  • EC2上に建てたAmazon Linux2のインスタンスを使用
  • SSHでログインできる状態

実行手順

スクリプト

このスクリプトはそのままコピペで使用可能です。

import re
import csv
import requests
from bs4 import BeautifulSoup

re_delete_indent = re.compile(r'\n +')
base_url = "https://docs.aws.amazon.com/ja_jp/config/latest/developerguide/"
target_url = "https://docs.aws.amazon.com/ja_jp/config/latest/developerguide/managed-rules-by-aws-config.html"
r = requests.get(target_url)
r.encoding = 'utf-8'

soup = BeautifulSoup(r.text, 'lxml')
# delete pankukzu list
soup.find(id="main-col-body").find("div").extract()
# get config rules child pages
link_list = soup.find(id="main-col-body").find_all("a")

rules = []
for child in link_list:
	child_url = base_url + child.get('href')
	r2 = requests.get(child_url)
	r2.encoding = 'utf-8'
	soup2 = BeautifulSoup(r2.text, 'lxml')
	detail = soup2.find(id="main-col-body").p.text.strip()
	# delete indent
	detail = re_delete_indent.sub(' ', detail)
	rules.append({'rule_name': soup2.h1.text, 'rule_detail': detail})

file_name = "config_rules_list.csv"
with open(file_name, 'w') as f:
	writer = csv.DictWriter(f, ["rule_name", "rule_detail"])
	writer.writeheader()
	writer.writerows(rules)
	print('success!')

実行

EC2インスタンスへSSH接続し、以下の順にコマンドを実行します。

sudo -i
yum install python3 -y
python3 -m venv myenv
source myenv/bin/activate
pip install requests
pip install beautifulsoup4
pip install lxml
vi test.py                 # スクリプトをぺたっ
python3 test.py            # 90秒くらい処理にかかった。success! と表示されたらOK
ls                         # config_fules_lists.csvが出力されているはず

出力結果

「config_fules_lists.csv」は以下のような感じです。

最後に

簡単にスクレイピングできたことに感動でした。

クラスメソッド様の記事を参考に少しスクリプトを修正し、実際に実行した手順を残しておきます。

ABOUT ME
湖山 貴裕
はじめまして。 二児のお父さんプログラマーです。最近キャンプにも興味あり。夏には庭でキャンプしようともくろみ中。ボドゲ好き。チョコ好き。茶道経験者。 2012年大学卒業→IT企業就職 Java,VB.NET, C#, javascript等の企業向けシステム開発/主にバックエンドを担当/AWSを少しかじる→2020年フリーランスエンジニアへ転身 広島でAWS案件にて楽しく活動中