スポンサーリンク
こんな人へ
- AWS Config を導入検討のためにルールの一覧が欲しい
- AWSのドキュメントを見たけど量が多いな・・・
- 自動的に抽出できないかなと考えている方
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」は以下のような感じです。
最後に
簡単にスクレイピングできたことに感動でした。
クラスメソッド様の記事を参考に少しスクリプトを修正し、実際に実行した手順を残しておきます。
スポンサーリンク