S3 업로더
이 스킬은 자동화 실행 시 CSV 보고서, PDF, JSON 체크포인트, 스크린샷, 모델 출력, 로그 등 로컬 머신 외부에 보관해야 하는 내구성 있는 아티팩트 저장이 필요할 때 사용합니다. 도우미는 일반적인 S3 호환 스토리지를 대상으로 하며, 버킷, 엔드포인트, 자격 증명을 환경 변수에서만 읽어옵니다.
호출 시기
- 사용자가 말합니다: "이 보고서를 S3에 업로드해줘", "아티팩트를 객체 스토리지에 저장해줘", "마지막 실행 파일을 다운로드해줘", "MinIO/R2/Spaces를 사용해줘".
- 대화 중인 코드가 로컬로 파일을 생성하지만, 이식 가능한 전달 또는 보관 위치가 필요합니다.
호출하지 말아야 할 때
- 아티팩트가 동일한 프로세스 내에서만 필요하면 디스크에 유지합니다.
- 사용자가 캐시 무효화와 서명된 URL이 포함된 공개 웹 사이트 CDN 워크플로를 필요로 합니다.
구체적인 예시
사용자 입력:
스크래퍼가 끝난 후 생성된 CSV를 내 S3 호환 버킷에 업로드해줘.
출력:
# assets/s3.py를 프로젝트에 복사한 후 다음을 실행:
from s3 import upload_file
key = upload_file("out/daily_report.csv", key="reports/daily_report.csv")
print("업로드됨:", key)
도우미는 환경 변수 S3_BUCKET, S3_ACCESS_KEY_ID, S3_SECRET_ACCESS_KEY, 선택적 S3_ENDPOINT_URL, 선택적 S3_REGION을 읽어옵니다. 대상별 비밀 정보는 커밋되지 않습니다.
적용할 패턴
- 버킷 이름, 엔드포인트, 액세스 키, 시크릿 키는 환경 변수에만 유지합니다.
reports/YYYY-MM-DD/name.csv와 같은 결정론적 객체 키를 사용하여 재실행 시 쉽게 찾을 수 있도록 합니다.- 로컬 파일이 완전히 작성된 후에만 업로드하며, 절반만 작성된 아티팩트를 스트리밍하지 않습니다.
- AWS를 하드코딩하는 대신
endpoint_url을 전달하여 S3 호환 엔드포인트를 지원합니다. - 환경 변수나 클라이언트 라이브러리가 누락된 경우 명확한 구성 오류로 실패합니다.
참고: assets/s3.py.
출처
저자의 자동화 프로젝트 전반에 걸친 프로덕션 사용 경험에서 추출되었습니다. v1.0.0. 또한 다음을 참조하세요: [[csv-report-writer]], [[playwright-pdf-snapshot]], [[pipeline-orchestrator]].
→ Trawlkit으로 완전한 실행 가능한 봇을 구축하세요.