s3verify 소개: 개체 데이터를 다운로드하지 않고도 로컬 파일이 S3 개체와 동일한지 확인

4888 단어 opensources3aws
2022년 2월 Amazon S3는 객체 데이터( blog post , documentation )를 다운로드하지 않고도 무결성 검사를 허용하는 새로운 체크섬 기능을 출시했습니다. 오늘 저는 이 기능과 관련하여 제가 개발한 새 프로그램인 s3verify 을 발표하게 되어 기쁩니다. 내 프로그램에 대해 이야기하기 전에 새로운 S3 기능이 무엇이고 왜 그렇게 유용한지 설명하고 싶습니다.

이전에는 이와 같은 모든 종류의 표준화된 확인을 시도하는 유일한 기본 제공 방법은 개체 ETag를 사용하는 것이었습니다. 그러나 ETag는 개체가 암호화되지 않은 경우에만 이 용도로 사용할 수 있으며, 이는 요즘 대부분의 사용자에게 허용되지 않습니다. 암호화된 개체의 경우 ETag는 암호문의 체크섬일 가능성이 높으며, 이는 아마도 데이터가 손상되지 않았는지 확인하기 위해 S3 오류 검사 프로세스에 필요한 전부일 것입니다. 이것은 오랫동안 S3 사용자가 자체 검증 체계를 마련해야 하는 안타까운 상황이었습니다. Amazon의 많은 대형 고객이 이 문제를 해결하도록 요청했으며 올해 초 마침내 변경 사항이 도착했습니다!

S3에 파일을 업로드할 때 이제 체크섬 알고리즘(SHA-1, SHA-256, CRC-32 또는 CRC-32C)을 지정할 수 있습니다. 클라이언트는 업로드가 진행되는 동안 체크섬을 계산하고 마지막에 HTTP 트레일러를 사용하여 체크섬을 제출합니다. S3가 데이터를 수신하는 동안 S3에서 동일한 체크섬 계산을 수행하고 업로드가 끝날 때 두 체크섬이 일치하지 않으면 업로드를 거부합니다. 그런 다음 이 체크섬은 객체의 수명 동안 객체 메타데이터에 불변으로 저장되므로 나중에 객체 데이터를 다운로드할 필요 없이 사용할 수 있습니다. 개체에서 체크섬을 수정하거나 실수로 제거하는 것은 불가능합니다. 이 체크섬에 쉽게 액세스할 수 있도록 하는 것은 비용이 많이 들고 검색하는 데 며칠이 걸릴 수 있는 Glacier의 개체에 특히 유용합니다.

체크섬 알고리즘으로 업로드되지 않은 기존 개체가 있는 경우 x-amz-checksum-algorithm 헤더와 함께 CopyObject을 사용하여 개체의 복사본을 만들거나 체크섬 알고리즘을 선택한 상태에서 처음부터 개체를 업로드해야 합니다. 이 절차는 향후 블로그 게시물의 좋은 주제가 될 수 있습니다.

체크섬이 있는 S3 객체가 있으면 다음과 같이 자문할 수 있습니다. 이제 어떻게 확인합니까? 🤔

불행하게도 Amazon은 이 기능을 도입한 지 6개월이 지났음에도 불구하고 이 검증을 수행하기 위한 자체 도구를 출시하지 않았습니다. aws cli 하위 명령이 결국 나타날 것으로 예상했지만 발생하지 않았습니다. 그들은 this documentation page에서 AWS SDK를 사용하는 일부 Java 참조 코드를 릴리스했지만 대부분의 사람들이 사용하기가 매우 어렵습니다.

나는 s3verify 건물로 이 격차를 메우기로 했다. 개체 데이터를 다운로드할 필요 없이 로컬 파일이 S3 개체와 동일한지 매우 쉽게 확인할 수 있습니다. 이 새로운 체크섬 기능을 사용하여 업로드된 개체에서만 작동합니다.

이 프로그램은 매우 간단합니다. 프로그램을 호출하고 로컬 파일과 S3 객체를 가리키면 동일한지 알려줍니다.

$ s3verify important-backup-2021.zip s3://mybucketname/important-backup-2021.zip
Fetching S3 object information...
S3 object checksum: x5AZd/g+YQp7l0kwcN8Hw+qqXZj2ekjAHG0yztmkWXg=
Object consists of 21 parts.

Part  1: fiP2aEgcQGHHJgmce4C3e/a3m50y/UJHsYFojMS3Oy8=  OK
Part  2: /lRdaagPhvRL9PxpQZOTKLxr1+xX64bYN6hknuy9y3k=  OK
Part  3: nS/vLGZ13Cq7cGWlwW3QnLkJaDTRrY8PUgsCGs9abKU=  OK
Part  4: HJWCIDAo8MY0nk5m4uBvUJ5R0aZzPAWJPE9F9WheEAk=  OK
Part  5: JExPU8KHhBJ1K+fh/p0gNT50ueRi6BxOL3XXSvHVUgQ=  OK
Part  6: gyp/OaxJqKz1mYWAZadtNhBgqEXpDUvMVuIZybwD1ic=  OK
Part  7: 1RcmmE8STey0mE33MXrzFAXbWrjawaVbnXeX5GB/F/Y=  OK
Part  8: XdcyPdbc2OYgF0NE/c9Q5vBgI8BXlv8tLZB3g6ETvlI=  OK
Part  9: pOKv/u4hlfGEpaBE5YTKA3IlVQDY+hMlySbdh9dfqsI=  OK
Part 10: W4WKSjF+blMinRdP9EcJ9mSDQMMyAUn0KfFgCWv8ZxI=  OK
Part 11: nP35yqHA+Pgum8yWeeXRZU/jPGF/ntnAR+rqOcwlhqk=  OK
Part 12: aoEWVZnc/8ualswzKmMXWZaQg/Bg/4zFs1MGQQTpHV0=  OK
Part 13: LVMnzhFxBPzFfVRFzilrfNCPX8zJhu1jNSNn7cZYmew=  OK
Part 14: OrcQx1cNqtatD6WGf4kA2R/ld7rVzQTkzbL9rAtYLDY=  OK
Part 15: 1+1AxALVTubSsdBW1qXs2toyCLDpq81I+ivFKPAzogs=  OK
Part 16: 3kPLbv0PCSlATrTOdzin03KbAezfi165l1Tq09gAN0Q=  OK
Part 17: IPTEvMXa/ZZe8IabeFDNWAF8hBV7dwNsu3wXJrBHwRE=  OK
Part 18: IOhxLxcmmqWvRi+y6ITVaPyFLzjo4wAB4f7e7I6CFYc=  OK
Part 19: tGCw1J2c2dYlZdxlxvLX+w4r6Cp9S5WhN7hJeRXJMUo=  OK
Part 20: sMH7Jh9qH/nUOue0/oBaaPYJXf8S81j6p7LoMub+7H8=  OK
Part 21: q5W9UMl7As4VVuEJcdvQC1ENyAVM2AlLc9utiEF4v4E=  OK

Checksum of checksums: x5AZd/g+YQp7l0kwcN8Hw+qqXZj2ekjAHG0yztmkWXg=

Checksum matches! File and S3 object are identical.


체크섬이 일치하지 않으면 다음과 같이 표시됩니다.

Checksum MISMATCH! File and S3 object are NOT identical!


파일 크기와 S3 객체 크기가 일치하지 않으면 유사한 오류가 표시됩니다(이 경우 해싱이 시도되지 않음).

s3verify가 여러분에게 도움이 되기를 바랍니다. 사용에 문제가 있는 경우 the GitHub repository에 문제를 제기하십시오. 이전 S3 프로그램인 shrimps3sha256sum과 완벽한 동반자입니다.

추신 안타깝게도 aws s3 cp에는 아직 --checksum-algorithm 인수가 없습니다. 그들이 이것을 아직 추가하지 않은 것이 매우 이상합니다. 그러나 이 새로운 체크섬 기능으로 개체 업로드를 완벽하게 지원하므로 당분간 새우를 사용할 수 있습니다.

추신 현재 대부분의 검색 엔진에서 더 높은 순위에 있는 s3verify라는 또 다른 레거시 프로젝트가 있습니다. 개체 무결성 검사와는 관련이 없습니다. 내 프로젝트가 곧 검색 순위에서 추월할 수 있기를 바랍니다.

좋은 웹페이지 즐겨찾기