본문 바로가기
WIKI 기술 지식 베이스

lakeFS에서 presigned URL 사용 설정하기

원문 보기 위키 갱신

lakeFS에서는 presigned URL을 사용해 lakeFS를 거치지 않고 스토리지에서 데이터에 직접 접근할 수 있어요. presigned URL은 오브젝트 스토어에서의 객체 접근 권한에 따라 읽기 또는 쓰기 권한을 갖게 돼요.

presign 지원은 이를 지원하는 블록 어댑터(AWS, GCP, Azure)에서 활성화되어 있고, 설정(blockstore.<blockstore_type>.disable_pre_signed)으로 비활성화할 수 있어요. UI 지원은 기본적으로 비활성화되어 있다는 점에 주의하세요.

AWS에서는 설정(blockstore.s3.pre_signed_endpoint)을 지정해 기본 presigned URL 엔드포인트를 재정의할 수 있어요. 예를 들어 presigned URL에 대해 VPC endpoint 접근을 정의하고 싶을 때 유용해요.

출처: lakeFS에서 presigned URL 사용 설정하기

본문

UI에서 presigned URL 사용하기

UI에서 presigned URL을 사용하려면:

  • lakeFS 설정에서 presigned URL 지원 UI를 활성화해요:

blockstore.<blockstore_type>.disable_pre_signed_ui=false로 설정하세요.

  • UI가 lakeFS를 거치지 않고 presigned URL로 객체를 가져올 수 있도록, 버킷에 CORS(Cross-Origin Resource Sharing) 권한을 추가해요.

Warning

현재 DuckDB가 lakeFS에서 데이터를 가져오는 것은 presigned URL을 사용한 데이터 가져오기를 지원하지 않아요.

예제

AWS S3

  [
    {
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "GET",
            "PUT",
            "HEAD"
        ],
        "AllowedOrigins": [
            "lakefs.endpoint"
        ],
        "ExposeHeaders": [
            "ETag"
        ]
    }
  ]

Google Storage

  [
    {
        "origin": ["lakefs.endpoint"],
        "responseHeader": ["ETag"],
        "method": ["PUT", "GET", "HEAD"],
        "maxAgeSeconds": 3600
    }
  ]

Azure blob storage

  <Cors>
      <CorsRule>
          <AllowedOrigins>lakefs.endpoint</AllowedOrigins>
          <AllowedMethods>PUT,GET,HEAD</AllowedMethods>
          <AllowedHeaders>*</AllowedHeaders>
          <ExposedHeaders>ETag,x-ms-*</ExposedHeaders>
          <MaxAgeInSeconds>3600</MaxAgeInSeconds>
      </CorsRule>
  </Cors>

더 알아보기 (Learn more)

공식 문서의 원문은 https://docs.lakefs.io/security/presigned-url/ 에서 확인할 수 있어요.