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 접근을 정의하고 싶을 때 유용해요.
본문
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을 사용한 데이터 가져오기를 지원하지 않아요.
예제
[
{
"AllowedHeaders": [
"*"
],
"AllowedMethods": [
"GET",
"PUT",
"HEAD"
],
"AllowedOrigins": [
"lakefs.endpoint"
],
"ExposeHeaders": [
"ETag"
]
}
]
[
{
"origin": ["lakefs.endpoint"],
"responseHeader": ["ETag"],
"method": ["PUT", "GET", "HEAD"],
"maxAgeSeconds": 3600
}
]
<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/ 에서 확인할 수 있어요.