[AWS Config/CLI] AWS EC2 ์ธ์คํด์ค ๋ชฉ๋ก ๋ฐ์ดํฐ easyํ๊ฒ ์ถ๋ ฅํ๊ธฐ (export data to CSV/JSON)
2022. 8. 2. 22:04ใAWS
โ๏ธ ๋ฌธ์
EC2 ์ธ์คํด์ค ๋ชฉ๋ก์ ์ถ์ถํด์ผ ํ๋๋ฐ,
๋ณด์ ๊ทธ๋ฃน ์ฝ์์ export security groups to CSV ๋ฉ๋ด์ ๊ฐ์ด EC2 ์ธ์คํด์ค ๋ชฉ๋ก์ ์ถ์ถํ๋ ๊ธฐ๋ฅ์ EC2 ์ฝ์์๋ ์์๋ค.
์ด๋ป๊ฒ ํ๋ฉด ๊ฐ๋จํ๊ฒ ์ธ์คํด์ค ๋ชฉ๋ก ๋ฐ์ดํฐ๋ฅผ ํ์ผ๋ก ์ถ์ถํ ์ ์์์ง ์์๋ณด์.
๐ซ Trouble Shooting
AWS CLI์ EC2 Command๋ฅผ ์ด์ฉํ๊ฑฐ๋ AWS Config์ Advanced Queries ๊ธฐ๋ฅ์ ์ด์ฉํ๋ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋ค.
AWS Config๋ฅผ ์ด์ฉํ๋ ๋ฐฉ๋ฒ 2๋ฒ์ EC2์ ํ์ ๋์ง ์๊ณ AWS ๋ฆฌ์์ค์ ๋ํ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ๋ ๊ฒ๋ ๊ฐ๋ฅํ๋ค.
๊ฐ์ ํธํ ๋ฐฉ๋ฒ์ ์ด์ฉํด๋ณด์์~
๋ฐฉ๋ฒ 1. AWS CLI ์ด์ฉํ๊ธฐ
ec2 describe-instances --output text
--query 'Reservations[*].Instances[*].[InstanceId, InstanceType, ImageId, State.Name, LaunchTime, Placement.AvailabilityZone, Placement.Tenancy, PrivateIpAddress, PrivateDnsName, PublicDnsName, [Tags[?Key==`Name`].Value] [0][0], [Tags[?Key==`purpose`].Value] [0][0], [Tags[?Key==`environment`].Value] [0][0], [Tags[?Key==`team`].Value] [0][0] ]'
> instances.csv
๋ฐฉ๋ฒ 2. AWS Config ์ด์ฉํ๊ธฐ
AWS Config๋?
- AWS ๊ณ์ ์ ๋ฆฌ์์ค ๊ตฌ์ฑ์ ์ธ๋ถ์ ์ผ๋ก ๋ณผ ์ ์๋ AWS ์ธก์ , ๊ฐ์ฌ, ํ๊ฐ ์๋น์ค
- ์ด๋ป๊ฒ ๊ตฌ์ฑ๋์ด ์๋์ง, ๊ฐ๊ฐ์ ๋ฆฌ์์ค๊ฐ ์๋ก ์ด๋ป๊ฒ ์ฐ๊ฒฐ๋์ด์๋์ง ๊ทธ๋ฆฌ๊ณ ์๊ฐ์ ๋ฐ๋ผ ์ด๋ป๊ฒ ๊ตฌ์ฑ๊ณผ ์ฐ๊ฒฐ๊ด๊ณ๊ฐ ๋ฐ๋์๋์ง๋ฅผ ๋ณผ ์ ์๋ค.
- Config๋ AWS ๋ฆฌ์์ค ๊ตฌ์ฑ์ ์ง์์ ์ผ๋ก ๋ชจ๋ํฐ๋ง ๋ฐ ๊ธฐ๋กํ๊ณ , ์ํ๋ ๊ตฌ์ฑ์ ๊ธฐ์ค์ผ๋ก ๊ธฐ๋ก๋ ๊ตฌ์ฑ์ ์๋์ผ๋ก ํ๊ฐํ๋ค.
- AWS ๋ฆฌ์์ค ๊ฐ ๊ตฌ์ฑ ๋ฐ ๊ด๊ณ ๋ณํ๋ฅผ ๊ฒํ ํ๊ณ , ์์ธํ ๋ฆฌ์์ค ๊ตฌ์ฑ ๊ธฐ๋ก์ ๋ถ์ํ๊ณ , ๋ด๋ถ ์ง์นจ์ ์ง์ ๋์ด ์๋ ๊ตฌ์ฑ์ ๊ธฐ์ค์ผ๋ก ์ ๋ฐ์ ์ธ ๊ท์ ์ค์ ์ฌ๋ถ๋ฅผ ํ์ธํ ์ ์๋ค.
AWS Config > Advanced queries๋?
- ๊ตฌ์ฑ ์์ฑ์ ๊ธฐ๋ฐํ์ฌ AWS ๋ฆฌ์์ค์ ํ์ฌ ๊ตฌ์ฑ ์ํ์ ๋ํด ์ง์ํ ์ ์๋ค.
- ์ ์ํด์๋ ํด๋น ๋ฆฌ์ ๊ณผ ๊ณ์ ์์ ์ง์๊ฐ ๊ฐ๋ฅํ๋ฉฐ, aggregator ์ด์ฉ ์ ์ค์ ๊ณ์ ์์ ๋ค์์ ๋ฆฌ์ ๊ณผ ๋ค์์ ๊ณ์ ์ ์ง์ํ๋ ๊ฒ๋ ๊ฐ๋ฅํ๋ค.
- SQL์ SELECT ๊ตฌ๋ฌธ์ ์ด์ฉํ์ฌ ์ฟผ๋ฆฌํ ์ ์๋ค. ์ง์๋๋ ํค์๋๋ ์๋ ๋งํฌ์์ ์ดํด๋ณผ ์ ์๋ค.
- AWS ์๋น์ค๋ณ API ํธ์ถ์ ์ํํ์ง ์๊ณ ๋ ํ์ํ ํ์ฌ ๋ฆฌ์์ค ์ํ๋ฅผ ์ ํํ๊ฒ ์ฟผ๋ฆฌํ ์ ์๋ค.
- ๋ฆฌ์์ค ์ข ๋ฅ์ ๋ฆฌ์์ค ์์ฑ์ ๋ค์์์ ํ์ธ ๊ฐ๋ฅ : โญ๏ธgithubโญ๏ธ
1. Advanced queries์์ ์ ์ฟผ๋ฆฌ ์ ํ
- Advanced queries ์ฝ์์์ New query ๋ฒํผ์ ํด๋ฆญํ์ฌ ์ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํ๋ค.
2. query scope ์ ํ ๋ฐ ์ํ๋ ์ฟผ๋ฆฌ ์ง์
// ๊ณ์ ID, EC2 ์ธ์คํด์ค ID, ์ธ์คํด์ค ํ์
, ์ธ์คํด์ค ์์ฑ ์๊ฐ
SELECT
accountId,
resourceId,
configuration.instanceType,
resourceCreationTime
WHERE
resourceType = 'AWS::EC2::Instance'
ORDER BY
accountId
- ํ๋ฉด ์ข์ธก์ [Query Scope]์์ ๊ตฌ์ฑํด๋์ aggregator๊ฐ ์๋ ๊ฒฝ์ฐ, aggregator๋ฅผ ์ ํํ์ฌ ์ฌ๋ฌ ๊ฐ์ ๊ณ์ ๊ณผ ๋ฆฌ์ ์์ ์ฟผ๋ฆฌ๋ฅผ ์ง์ํ ์ ์๋ค.
- resourceType์ด AWS::EC2::Instance์ธ ๊ฒฝ์ฐ ์ฐธ๊ณ : github
- [Export as] ๋ฒํผ ์ ํ ์, JSON๊ณผ CSV ์ค ์ถ์ถ ํ์
์ ๊ฒฐ์ ํ ์ ์๋ค.
- ๋ฒํผ์ ํด๋ฆญํ๋ฉด EC2 ์ธ์คํด์ค ๋ชฉ๋ก ๋ฐ์ดํฐ ์ถ์ถ ์๋ฃ~~!
๐ ์ฐธ๊ณ ๋งํฌ
- AWS Document: What Is AWS Config?
- AWS Document: Querying the Current Configuration State of AWS Resources
- Github: aws-config-resource-schema