파이썬으로 S3 서비스를 사용하는 방법
소개
안녕하세요, 이 기사에서는 vultr 객체 스토리지를 Python과 연결하는 방법에 대해 설명합니다.
You can also use (digitalocean, aws or etc..)
처음에 Object Storage란 무엇입니까?
개체 저장소는 파일 개체를 저장하고 검색하기 위한 Vultr의 S3 호환 가능 웹 액세스 가능 클라우드 개체 저장소 서비스입니다.
개체는 웹을 통해 비공개 또는 공개적으로 액세스할 수 있습니다. 다음을 포함한 클라우드 객체 스토리지의 사용 사례:
요약하면 기본 파일 시스템을 관리하거나 확장할 필요 없이 방대한 수의 파일 객체를 처리해야 하는 경우 객체 스토리지가 적합합니다.
시작하기
오브젝트 스토리지 생성 방법
Vultr customer portal 상단에 있는 개체 메뉴를 선택하여 개체 스토리지 구독 목록으로 이동한 다음 Add Object Storage 양식을 사용하여 배포합니다. 배포 후 subscription listing page에서 액세스 키를 확인합니다.
객체 스토리지에 대한 질문이 있는 경우 이 항목article을 참조하십시오.
설치 요구 사항
pip install boto3
boto3란?
Boto3는 Python 개발자가 Vultr Object Storage와 같은 서비스를 사용하는 소프트웨어를 작성할 수 있게 해주는 Python용 소프트웨어 개발 키트(SDK)입니다.
시작하자:
먼저 subscription listing page의 객체 스토리지 페이지에서 Acess Key 및 Secret Key를 가져와야 합니다.
변수에 저장해 보겠습니다.
object_storage_config = {
'region_name': 'ewr1',
'endpoint_url': 'https://ewr1.vultrobjects.com',
'aws_access_key_id': 'Your_access_key',
'aws_secret_access_key': 'Your_secret_key'
}
파일 디렉토리에 파일을 업로드하는 방법:
import boto3
client = boto3.client('s3', **object_storage_config)
이제 vultr s3 객체 스토리지에 연결했습니다.
오브젝트 스토리지에 파일을 업로드하겠습니다. 먼저 새 버킷을 생성해야 합니다.
객체는 버킷에 저장됩니다. 객체 업로드를 시작하려면 먼저 하나 이상의 버킷을 생성해야 합니다. 버킷은 파일 시스템의 폴더와 유사합니다.
이 기사article에서 자세히 알아보십시오.
이제 새 버킷을 만듭니다.
client.create_bucket(Bucket="bucket_name")
이제 boto3으로 파일을 업로드합니다.
client.upload_file("file_name", "bucket_name", "object_name.extention")
위의 예제 코드:
import boto3
object_storage_config = {
'region_name': 'ewr1',
'endpoint_url': 'https://ewr1.vultrobjects.com',
'aws_access_key_id': 'Your_access_key',
'aws_secret_access_key': 'Your_secret_key'
}
client = boto3.client('s3', **object_storage_config)
client.create_bucket(Bucket="uploaded_images")
client.upload_file("./images/logo.png", "uploaded_images", "logo.png")
멀티파트 파일은 어떻습니까
upload_fileobj 함수를 사용하여 멀티파트 파일을 업로드할 수 있습니다.
client.upload_fileobj(file, "bucket_name", "object_name.extention")
예시:
import boto3
object_storage_config = {
'region_name': 'ewr1',
'endpoint_url': 'https://ewr1.vultrobjects.com',
'aws_access_key_id': 'Your_access_key',
'aws_secret_access_key': 'Your_secret_key'
}
client = boto3.client('s3', **object_storage_config)
# WE ALREADY CREATED BUCKET
with open("FILE_NAME", "rb") as file:
client.upload_fileobj(file, "uploaded_images", "logo.png")
이제 s3 저장소에 파일을 업로드했지만 문제가 있습니다. 문제는 우리가 업로드한 파일이 비공개 모드이며 액세스 키 없이는 아무도 액세스할 수 없다는 것입니다.
이 문제를 해결하는 두 가지 옵션이 있습니다. 먼저 파일을 업로드할 때 파일을 공개 모드로 만들고 두 번째로 미리 서명된 URL을 만들 수 있습니다.
미리 서명된 URL이란 무엇입니까?
개체에 액세스할 수 있는 Vultr 사용자는 미리 서명된 URL을 생성합니다. 생성된 URL은 승인되지 않은 사용자에게 전달됩니다. 미리 서명된 URL은 브라우저에 입력하거나 HTML 웹 페이지 또는 애플리케이션에서 사용할 수 있습니다. 미리 서명된 URL을 사용하는 자격 증명은 URL을 생성한 Vultr 사용자의 자격 증명입니다.
미리 서명된 URL은 URL이 생성될 때 지정된 제한된 시간 동안 유효합니다.
response = client.generate_presigned_url(
'get_object',
Params={'Bucket': "bucket_name", 'Key': "object_name"},
ExpiresIn=expiration
)
Expiration: Time in seconds for the presigned URL to remain valid
예시:
import boto3
object_storage_config = {
'region_name': 'ewr1',
'endpoint_url': 'https://ewr1.vultrobjects.com',
'aws_access_key_id': 'Your_access_key',
'aws_secret_access_key': 'Your_secret_key'
}
client = boto3.client('s3', **object_storage_config)
response = client.generate_presigned_url('get_object', Params={'Bucket': "uploaded_images", 'Key': "logo.png"}, ExpiresIn=3600)
print(response)
옵션 2는 공개 모드에서 파일을 업로드하는 것입니다.
upload_file 또는 upload_fileobj 함수에 ExtraArgs를 추가하여 이를 수행할 수 있습니다.
예시:
import boto3
object_storage_config = {
'region_name': 'ewr1',
'endpoint_url': 'https://ewr1.vultrobjects.com',
'aws_access_key_id': 'Your_access_key',
'aws_secret_access_key': 'Your_secret_key'
}
client = boto3.client('s3', **object_storage_config)
client.create_bucket(Bucket="uploaded_images")
client.upload_file("./images/logo.png", "uploaded_images", "logo2.png", ExtraArgs={"ACL": "public-read"})
Reference
이 문제에 관하여(파이썬으로 S3 서비스를 사용하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/seifalmotaz/how-to-use-s-with-puthon-2g05텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)