AWS S3 CLI
μ΅κ·Ό κ³ κ°μ¬μ μκ³μ΄ λ°μ΄ν°λ² μ΄μ€μ μ μ₯λ 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 λͺ
λ Ήμ΄λ₯Ό μννμμ΅λλ€.
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λΆ μ΄λ΄μ μ λ‘λκ° μλ£λμμ΅λλ€.
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 λ°©νλ²½μμ μ μΈλλ€λ λ΅λ³μ λ°μμ΅λλ€.
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 λ²ν·μ λν μ€ν λ¦¬μ§ μ§νλ₯Ό κ³μ°ν μ μμμ΅λλ€.
aws s3 ls s3://[bucketname] --recursive --summarize --human-readable
Total Objects: 4895
Total Size: 295.0 GiB
μ΄λ² μ μ§λ³΄μ μμ μ 리λ μ€ λͺ λ Ήμ μ μ€ν¬λ¦½νΈ μμ± μ ChatGPTμ κ°μ μμ±ν AIλ₯Ό μ΅λν νμ©νμ¬ μκ°λ³΄λ€ μ½κ² μ§νν μ μμλ κ² κ°μ΅λλ€. κ³ κ°μ¬μμ μꡬν μ μ§λ³΄μ μμ μ μμ§ λ¨μμμΌλ AI μμ΄μ νΈ λμμ ν΅ν΄ μμλ³΄λ€ λ λΉ λ₯΄κ² μλ£λ κ²μΌλ‘ μκ°λ©λλ€.