<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>조건부 요청 on 얼쑤 · Team Edo</title><link>https://team-edo.github.io/tags/%EC%A1%B0%EA%B1%B4%EB%B6%80-%EC%9A%94%EC%B2%AD/</link><description>Recent content in 조건부 요청 on 얼쑤 · Team Edo</description><generator>Hugo</generator><language>ko-kr</language><lastBuildDate>Tue, 03 Nov 2026 00:00:00 +0900</lastBuildDate><atom:link href="https://team-edo.github.io/tags/%EC%A1%B0%EA%B1%B4%EB%B6%80-%EC%9A%94%EC%B2%AD/index.xml" rel="self" type="application/rss+xml"/><item><title>업로드 재시도에서 기존 파일 지키기</title><link>https://team-edo.github.io/posts/2026/11/retry-safe-object-upload-conditional-put/</link><pubDate>Tue, 03 Nov 2026 00:00:00 +0900</pubDate><guid>https://team-edo.github.io/posts/2026/11/retry-safe-object-upload-conditional-put/</guid><description>&lt;p>팀에서 음원 파일이나 폴더를 R2에 올리는 공용 명령을 만들었습니다. 폴더를 올리다 중간에 연결이 끊기면 같은 명령을 다시 실행하고 싶습니다. 그런데 같은 키에 일반 PUT을 보내면, 이미 올라간 파일이 지금 로컬에 있는 내용으로 바뀔 수 있습니다. 기본 실행은 빈 키만 채우고, 기존 파일을 바꿀 때는 교체 옵션을 명시하도록 했습니다.&lt;/p>
&lt;h2 id="쓰기-요청에-빈-키라는-조건을-넣었다">비어 있는 키에만 쓰기&lt;/h2>
&lt;p>먼저 HEAD로 키가 비어 있는지 확인하고 뒤이어 PUT을 보내면, 두 요청 사이에 다른 작업자가 같은 키에 파일을 올릴 수 있습니다. 저는 기본 PUT에 &lt;code>If-None-Match: *&lt;/code>를 넣었습니다. R2는 이 조건을 객체 쓰기와 함께 판단합니다. 키가 이미 있으면 &lt;code>412 PreconditionFailed&lt;/code>가 돌아오고, 도구는 그 파일을 건너뛰었다고 표시한 뒤 다음 파일로 넘어갑니다. &lt;code>--overwrite&lt;/code>를 준 경우에는 이 조건을 붙이지 않습니다. &lt;a href="https://developers.cloudflare.com/r2/api/s3/extensions/#conditional-operations-in-putobject">Cloudflare R2의 조건부 PUT 문서&lt;/a>&lt;/p></description></item></channel></rss>