Skip to content

์ตœ๊ทผ ๊ณ ๊ฐ์‚ฌ์˜ ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ๋œ 2~3๋…„์น˜์˜ ๋ฐ์ดํ„ฐ ์ค‘ ์ผ๋ถ€๋ฅผ CSV๋กœ ์ถ”์ถœํ•˜๊ณ  GZIP์œผ๋กœ ์••์ถ•ํ•œ ํ›„ S3 ๋ฒ„ํ‚ท์— ์—…๋กœ๋“œํ•˜๋Š” ์œ ์ง€๋ณด์ˆ˜ ์ž‘์—…์„ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋™์•ˆ ๊ฐœ๋ฐœ์ž๋กœ ์ผํ•ด์˜ค๋ฉด์„œ AWS CLI ๋ฅผ ์ž์ฃผ ํ™œ์šฉํ•˜์ง€๋Š” ์•Š์•˜๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์œ ์ง€๋ณด์ˆ˜ ์ž‘์—… ๊ณผ์ •์—์„œ AWS S3 CLI ๋ฅผ ์–ด๋–ป๊ฒŒ ํ™œ์šฉํ–ˆ๋Š”์ง€ ๋‚จ๊ฒจ๋ณด๋„๋ก ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฏธ ๋งŽ์€ ๋ธ”๋กœ๊ทธ ๊ธ€์—์„œ ๊ณต์œ ๋œ ๋‚ด์šฉ์ด๋ผ์„œ ํฅ๋ฏธ๋กœ์šด ์ •๋ณด๋Š” ์•„๋‹ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ฐœ๋ณ„ CSV ํŒŒ์ผ์„ GZIP ์œผ๋กœ ์••์ถ•ํ•˜๊ธฐ โ€‹

์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ๋ถ€ํ„ฐ CSV ํŒŒ์ผ๋“ค์€ /data/main/prepare ํด๋” ํ•˜์œ„์— {app_name}/{yyyyMM}/{yyyyMMdd}.csv ํŒจํ„ด์œผ๋กœ ์ €์žฅ๋˜๋„๋ก ์ถ”์ถœ๋˜๋„๋ก ๋ฏธ๋ฆฌ ์ž‘์—…ํ–ˆ๋Š”๋ฐ์š”. ์‰˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•ด์•ผํ•˜๋‚˜ ์‹ถ์—ˆ์œผ๋‚˜ ChatGPT์˜ ๋„์›€์„ ๋ฐ›์•„ ์•„๋ž˜์™€ ๊ฐ™์ด find ๋ช…๋ น์–ด๋กœ ์ฐพ์€ CSV ํŒŒ์ผ๋“ค์„ gzip ๋ช…๋ น์–ด๋ฅผ ์ˆ˜ํ–‰ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

sh
find /data/main/prepare -type f -name "*.csv" -exec gzip {} +

# CPU ์ฝ”์–ด๋ฅผ ํ™œ์šฉํ•œ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ
find /data/main -type f -name "*.csv" | xargs -P "$(nproc)" gzip

์••์ถ•์„ ์ง„ํ–‰ํ•  ๋•Œ -exec gzip {} \; ๋ฅผ ์‚ฌ์šฉํ–ˆ์—ˆ๋Š”๋ฐ ํŒŒ์ผ์ด ๋งŽ์€ ๊ฒฝ์šฐ์—๋Š” -exec gzip {} + ๋กœ ์ˆ˜ํ–‰ํ•˜๋Š”๊ฒƒ์ด ๋” ํšจ์œจ์ ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธ€์„ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ •๋ฆฌํ•˜๋‹ค๋ณด๋‹ˆ Bash ์‰˜์—์„œ๋Š” CPU ์ฝ”์–ด๋ฅผ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•ด์„œ ์••์ถ•ํ•  ์ˆ˜ ์žˆ๋Š” ๋‘๋ฒˆ์งธ ๋ฐฉ๋ฒ•๋„ ์žˆ์Œ์„ ์•Œ๊ฒŒ๋˜์—ˆ๋„ค์š”.

์••์ถ•๋œ CSV ํŒŒ์ผ์„ S3 ๋ฒ„ํ‚ท์œผ๋กœ ๋ณด๋‚ด๊ธฐ โ€‹

GZIP ์œผ๋กœ ์••์ถ•๋œ CSV ํŒŒ์ผ๋“ค์„ ๊ณ ๊ฐ์‚ฌ์—์„œ ์ œ๊ณตํ•ด์ค€ S3 ๋ฒ„ํ‚ท์œผ๋กœ ์—…๋กœ๋“œํ•ด์•ผํ•˜๋Š” ์ž‘์—…์„ ์ง„ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์••์ถ•๋œ CSV ํŒŒ์ผ์˜ ์ด ํฌ๊ธฐ๋Š” ์•ฝ 256GB์ด๋ฉฐ ์—…๋กœ๋“œํ•ด์•ผํ•  ํŒŒ์ผ์˜ ๊ฐœ์ˆ˜๋Š” 4800๊ฐœ ์ด์ƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋•Œ sync ๋ช…๋ น์–ด๋ฅผ ์ˆ˜ํ–‰ํ•  ๋•Œ ์—…๋กœ๋“œ ์„ฑ๋Šฅ์„ ์œ„ํ•ด max_concurrent_requests ์„ค์ •๊ฐ’์„ ๋ณ€๊ฒฝํ• ์ˆ˜๋„ ์žˆ์œผ๋‚˜ ๋ณต์ œ๋œ ์„œ๋ฒ„์˜ ์ธ์Šคํ„ด์Šค ์‚ฌ์–‘์˜ ๋„คํŠธ์›Œํฌ ์†๋„๊ฐ€ ์ค€์ˆ˜ํ•˜์—ฌ ๊ตณ์ด ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์•„๋„ 30๋ถ„ ์ด๋‚ด์— ์—…๋กœ๋“œ๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

sh
aws s3 sync /data/main/ s3://bucket_name/ --exclude "*" --include "*.gz"

๊ณ ๊ฐ์‚ฌ ์ธํ”„๋ผ์ด๊ธฐ ๋•Œ๋ฌธ์— AWS ์›น ์ฝ˜์†”์„ ํ†ตํ•ด ์„œ๋ฒ„ ์ธ์Šคํ„ด์Šค์˜ ๋ชจ๋‹ˆํ„ฐ๋ง ์ง€ํ‘œ๋ฅผ ์‚ดํŽด๋ณผ ์ˆ˜ ์—†์–ด์„œ ์•„์‰ฌ์šด ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

AWS S3 ํ˜ธ์ถœ ์‹œ ์ธ์ฆ์„œ ๋ฐœ๊ธ‰์ž ์ด์Šˆ ๐Ÿ”ฅ โ€‹

๊ณ ๊ฐ์‚ฌ ์ธํ”„๋ผ ํŒ€์—์„œ ์œ ์ง€๋ณด์ˆ˜ ์ž‘์—…์„ ์œ„ํ•ด ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ๋ณต์ œ ์„œ๋ฒ„๋ฅผ ์ œ๊ณตํ•ด์ฃผ์—ˆ์ง€๋งŒ AWS S3๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๊ธฐ๊นŒ์ง€ ์ƒ๊ฐ๋ณด๋‹ค ์‹œ๊ฐ„์ด ๋งŽ์ด ์†Œ์š”๋œ ์ •๋ณด๋ฅผ ๊ณต์œ ํ•ด๋ณผ๊นŒ ํ•ฉ๋‹ˆ๋‹ค. AWS S3 CLI ๋ช…๋ น์–ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ ค๊ณ  ๋ณด๋‹ˆ ์•„๋ž˜์™€ ๊ฐ™์ด SSL CERTIFICATE_VERIFY_FAILED ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์—ˆ๋Š”๋ฐ์š”. openssl ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์ธ์ฆ์„œ ์ฒด์ธ์„ ํ™•์ธํ•ด๋ณด๋‹ˆ Troubleshooting errors for the AWS CLI์— ๋‚˜์™€์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์ธ์ฆ์„œ ์ฒด์ธ์ด Fortinet ์ด๋ผ๊ณ  ํ•˜๋Š” WAF์— ์‚ฌ์šฉ๋˜๋Š” ๋ณด์•ˆ ์†”๋ฃจ์…˜์ด ๋ฐœ๊ธ‰์ž์ธ ๊ฒƒ์„ ์•Œ๊ฒŒ๋˜์—ˆ๊ณ  ์ด์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๊ณ ๊ฐ์‚ฌ ๋‹ด๋‹น์ž๋ฅผ ํ†ตํ•ด ์ธํ”„๋ผํŒ€์œผ๋กœ ์ „๋‹ฌํ–ˆ์ง€๋งŒ ๋ณต์ œ๋œ ์„œ๋ฒ„์—์„œ S3 ๊ฐ„ ํ†ต์‹ ์€ WAF ๋ฐฉํ™”๋ฒฝ์—์„œ ์ œ์™ธ๋œ๋‹ค๋Š” ๋‹ต๋ณ€์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค.

sh
ubuntu@hostname:/data$ aws s3 ls s3://[bucketname]

SSL validation failed for https://[bucketname].s3.ap-northeast-2.amazonaws.com/?list-type=2&prefix=&delimiter=%2F&encoding-type=url [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1125)

# S3 ๋ฒ„ํ‚ท ์ฃผ์†Œ์— ๋Œ€ํ•œ ์ธ์ฆ์„œ ์ฒด์ธ์„ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•
ubuntu@hostname:/data$ openssl s_client -showcerts -connect [bucketname].s3.ap-northeast-2.amazonaws.com:443

depth=1 C = US, ST = California, L = Sunnyvale, O = Fortinet, OU = Certificate Authority, CN = FGVM4VTM23003261, emailAddress = support@fortinet.com
verify error:num=19;self signed certificate in certificate chain
verify return:1
depth=0 CN = *.s3.ap-northeast-2.amazonaws.com
verify return:1

AWS S3 CLI ๋ช…๋ น์–ด ์ˆ˜ํ–‰ ์‹œ --no-verify-ssl ์˜ต์…˜์„ ํ†ตํ•ด ์ธ์ฆ์„œ ๊ฒ€์ฆ์„ ๋ฌด์‹œํ•ด๋ณธ ๊ฒฐ๊ณผ ์ „๋‹ฌ๋ฐ›์€ ์•ก์„ธ์Šค ํ‚ค๊ฐ€ S3 ๋ฒ„ํ‚ท์— ๋Œ€ํ•œ ๊ถŒํ•œ(ListObject, GetObject, PutObject)์ด ์—†๋Š” ๊ฒƒ์œผ๋กœ ํ™•์ธ๋˜์—ˆ์œผ๋ฉฐ, ๊ณ ๊ฐ์‚ฌ ์ธํ”„๋ผํŒ€์œผ๋กœ๋ถ€ํ„ฐ ํ•ด๊ฒฐ๋˜์—ˆ๋‹ค๋Š” ๋‹ต๋ณ€์„ ๋ฐ›์•˜์„ ๋•Œ ์ •ํ™•ํ•œ ์›์ธ์€ ๊ณต์œ ๋˜์ง€ ์•Š์•˜๊ธฐ์— ์–ด๋– ํ•œ ์‚ฌ์œ ๋กœ ํฌํ‹ฐ๋„ท์˜ ์ธ์ฆ์„œ๊ฐ€ ์ „๋‹ฌ๋˜์—ˆ๋Š”์ง€๋Š” ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

S3 ๋ฒ„ํ‚ท ๋™๊ธฐํ™” ๊ฒฐ๊ณผ ํ™•์ธํ•˜๊ธฐ โ€‹

AWS S3 CLI์˜ sync ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์—…๋กœ๋“œ๋œ CSV ์••์ถ• ํŒŒ์ผ์˜ ์ตœ์ข… ์—…๋กœ๋“œ ๊ฒฐ๊ณผ๋ฅผ ํ†ตํ•ด ์ œ๋Œ€๋กœ ์ „๋‹ฌ๋˜์—ˆ๋Š”์ง€๋ฅผ ๊ฒ€์ฆํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ๋„ ์ฐพ์•„๋ณด๋‹ˆ --summarize ๊ณผ --human-readable ์˜ต์…˜์„ ํ†ตํ•ด S3 ๋ฒ„ํ‚ท์— ๋Œ€ํ•œ ์Šคํ† ๋ฆฌ์ง€ ์ง€ํ‘œ๋ฅผ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

sh
aws s3 ls s3://[bucketname] --recursive --summarize --human-readable

Total Objects: 4895
    Total Size: 295.0 GiB

์ด๋ฒˆ ์œ ์ง€๋ณด์ˆ˜ ์ž‘์—… ์‹œ ๋ฆฌ๋ˆ…์Šค ๋ช…๋ น์™€ ์‰˜ ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ ์‹œ ChatGPT์™€ ๊ฐ™์€ ์ƒ์„ฑํ˜• AI๋ฅผ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•˜์—ฌ ์ƒ๊ฐ๋ณด๋‹ค ์‰ฝ๊ฒŒ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ณ ๊ฐ์‚ฌ์—์„œ ์š”๊ตฌํ•œ ์œ ์ง€๋ณด์ˆ˜ ์ž‘์—…์€ ์•„์ง ๋‚จ์•„์žˆ์œผ๋‚˜ AI ์—์ด์ „ํŠธ ๋„์›€์„ ํ†ตํ•ด ์˜ˆ์ƒ๋ณด๋‹ค ๋” ๋น ๋ฅด๊ฒŒ ์™„๋ฃŒ๋  ๊ฒƒ์œผ๋กœ ์ƒ๊ฐ๋ฉ๋‹ˆ๋‹ค.

Released under the MIT License.