Amazon S3 Boto-폴더 생성 방법
boto
Amazon s3 용 라이브러리를 사용하여 버킷 아래에 폴더를 생성하려면 어떻게 해야합니까?
나는 매뉴얼을 따르고 권한, 메타 데이터 등으로 키를 만들었지 만 boto의 문서에서 버킷 아래에 폴더를 만들거나 버킷의 폴더 아래에 폴더를 만드는 방법을 설명하지 않습니다.
S3에는 폴더 또는 디렉토리 개념이 없습니다. 같은 "abc/xys/uvw/123.jpg"
S3 액세스 도구와 같은 파일 이름을 생성 S3Fox
하여 디렉토리 구조 처럼 표시 할 수 있지만 실제로는 버킷에있는 단일 파일 일뿐입니다.
버킷에 abc / 123 / 폴더를 만들고 싶다고 가정하면 Boto와 함께 케이크 한 조각입니다.
k = bucket.new_key('abc/123/')
k.set_contents_from_string('')
또는 콘솔을 사용하십시오
AWS SDK .Net이 완벽하게 작동하면 폴더 이름 문자열 끝에 "/"를 추가하면됩니다.
var folderKey = folderName + "/"; //end the folder name with "/"
AmazonS3 client = Amazon.AWSClientFactory.CreateAmazonS3Client(AWSAccessKey, AWSSecretKey);
var request = new PutObjectRequest();
request.WithBucketName(AWSBucket);
request.WithKey(folderKey);
request.WithContentBody(string.Empty);
S3Response response = client.PutObject(request);
그런 다음 AWS 콘솔을 새로 고치면 폴더가 나타납니다.
폴더 이름에 "_ $ folder $"를 추가하고 전화를 겁니다.
String extension = "_$folder$";
s3.putObject("MyBucket", "MyFolder"+ extension, new ByteArrayInputStream(new byte[0]), null);
이것을 사용하십시오 :
import boto3
s3 = boto3.client('s3')
bucket_name = "YOUR-BUCKET-NAME"
directory_name = "DIRECTORY/THAT/YOU/WANT/TO/CREATE" #it's name of your folders
s3.put_object(Bucket=bucket_name, Key=(directory_name+'/'))
2019 년 업데이트, bucket_name / folder1 / folder2 경로로 폴더를 만들려면이 코드를 사용할 수 있습니다.
from boto3 import client, resource
class S3Helper:
def __init__(self):
self.client = client("s3")
self.s3 = resource('s3')
def create_folder(self, path):
path_arr = path.rstrip("/").split("/")
if len(path_arr) == 1:
return self.client.create_bucket(Bucket=path_arr[0])
parent = path_arr[0]
bucket = self.s3.Bucket(parent)
status = bucket.put_object(Key="/".join(path_arr[1:]) + "/")
return status
s3 = S3Helper()
s3.create_folder("bucket_name/folder1/folder2)
S3에는 폴더 구조가 없지만 키라고하는 것이 있습니다.
/2013/11/xyz.xls
콘솔에서 폴더를 만들 수 있으며 폴더로 표시됩니다. 그러나 S3의 스토리지 부분은이를 파일 이름으로 사용합니다.
검색 할 때에도 ListObjects
메소드와 Prefix
매개 변수를 사용 하여 특정 폴더 (또는 키)의 파일을 볼 수 있음을 알 수 있습니다 .
폴더를 만드는 것은 정말 쉽습니다. 실제로 그것은 단지 키를 만드는 것입니다.
You can see my below code i was creating a folder with utc_time as name.
Do remember ends the key with '/' like below, this indicates it's a key:
Key='folder1/' + utc_time + '/'
client = boto3.client('s3')
utc_timestamp = time.time()
def lambda_handler(event, context):
UTC_FORMAT = '%Y%m%d'
utc_time = datetime.datetime.utcfromtimestamp(utc_timestamp)
utc_time = utc_time.strftime(UTC_FORMAT)
print 'start to create folder for => ' + utc_time
putResponse = client.put_object(Bucket='mybucketName',
Key='folder1/' + utc_time + '/')
print putResponse
Although you can create a folder by appending "/" to your folder_name. Under the hood, S3 maintains flat structure unlike your regular NFS.
var params = { Bucket : bucketName, Key : folderName + "/" }; s3.putObject(params, function (err, data) {});
Apparently you can now create folders in S3. I'm not sure since when, but I have a bucket in "Standard" zone and can choose Create Folder from Action dropdown.
Tried many method above and adding forward slash /
to the end of key name, to create directory didn't work for me:
client.put_object(Bucket="foo-bucket", Key="test-folder/")
You have to supply Body
parameter in order to create directory:
client.put_object(Bucket='foo-bucket',Body='', Key='test-folder/')
Source: ryantuck in boto3 issue
참고URL : https://stackoverflow.com/questions/1939743/amazon-s3-boto-how-to-create-a-folder
'IT story' 카테고리의 다른 글
C # 사전은 어떻게됩니까? (0) | 2020.08.03 |
---|---|
VIM에서 REPLACE 모드로 전환하는 방법 (0) | 2020.08.03 |
JERSEY를 사용하여 입력 및 출력 이진 스트림? (0) | 2020.08.03 |
주어진 프로젝트에 올바른 신원 (이름과 이메일)을 사용하도록 git에 지시하는 방법은 무엇입니까? (0) | 2020.08.03 |
자동 레이아웃을 사용하여 총 너비의 백분율을 만드는 방법은 무엇입니까? (0) | 2020.08.03 |