2016-12-04 3 views
2

S3 폴더 (개인 섹션)에 일련의 Python 스크립트/Excel 파일이 있습니다. 공개 인 경우 HTTP URL을 통해 액세스 권한을 읽을 수 있습니다.boto를 사용하여 S3에서 이진 파일을 읽는 방법?

어떻게하면 바이너리로 액세스 할 수 있는지 궁금하십니까?

FileURL='URL of the File hosted in S3 Private folder' 
exec(FileURL) 
run(FileURL) 

답변

1

귀하의 질문을 이해할 수 있는지 확실하지 않지만 여기에 귀하의 질문을 어떻게 해석했는지에 대한 답변이 하나 있습니다. (내가 확실 해요 있지만, 너무 아마와 BOTO)만큼 당신이 당신의 버킷 이름객체/키 이름을 알고, 당신은 boto3로 다음을 수행 할 수

#! /usr/bin/env python3 
# 
import boto3 
from botocore.exceptions import ClientError 

s3_bucket = 'myBucketName' 
s3_key  = 'myFileName' # Can be a nested key/file. 
aws_profile = 'IAM-User-with-read-access-to-bucket-and-key' 
aws_region = 'us-east-1' 

aws_session = boto3.Session(profile_name = aws_profile) 
s3_resource = aws_session.resource('s3', aws_region) 
s3_object = s3_resource.Bucket(s3_bucket).Object(s3_key) 

# In case nested key/file, get the leaf-name and use that as our local file name. 
basename = s3_key.split('/')[-1].strip() 
tmp_file = '/tmp/' + basename 
try: 
    s3_object.download_file(tmp_file) # Not .download_fileobj() 
except ClientError as e: 
    print("Received error: %s", e, exc_info=True) 
    print("e.response['Error']['Code']: %s", e.response['Error']['Code']) 

으로 그런데 PUBLIC URL에서 파이썬 문을 추가하여 버킷 이름과 키/객체 이름을 파싱 할 수있다.

이 정보가 도움이되기를 바랍니다.