aws s3에서 php로 해당 경로에 있는 파일, 폴더를 리스트를 가져올때 아래와 같이 하면되는데..
public function getListObject($bucketName, $prefix, $delimiter, $marker){
$response = $this->S3->listObjects(array(
'Bucket' => $bucketName,
'Delimiter' => $delimiter,
'EncodingType' => 'url',
'Marker' => $marker,
'Prefix' => $prefix
));
return $response;
}
하지만 한번 listObjects를 칠때 max는 1000개다..
내가 불러올 경로의 파일, 폴더 갯수는 3000천개가 넘는데 이렇게되면 1000개를 제외한 나머지 2000여개는 짤리게된다.
한번에 전체다 불러오기 위해 아래와같이 소스를 짰다.
public function getAllListObject($bucketName, $prefix, $delimiter, $marker){
$response = $this->S3->listObjects(array(
'Bucket' => $bucketName,
'Delimiter' => $delimiter,
'EncodingType' => 'url',
'Marker' => $marker,
'Prefix' => $prefix
));
if ((!isset($response["CommonPrefixes"])) || (!is_array($response["CommonPrefixes"]))) {
$response["CommonPrefixes"] = array();
}
if ((!isset($response["Contents"])) || (!is_array($response["Contents"]))) {
$response["Contents"] = array();
}
while(true) {
if ($response["IsTruncated"]) {
$tmp = $this->S3->listObjects(array(
'Bucket' => $bucketName,
'Delimiter' => $delimiter,
'EncodingType' => 'url',
'Marker' => $response["NextMarker"],
'Prefix' => $prefix
));
if ((isset($tmp["CommonPrefixes"])) && (is_array($tmp["CommonPrefixes"]))) {
$response["CommonPrefixes"] = array_merge($response["CommonPrefixes"], $tmp["CommonPrefixes"]);
}
if ((isset($tmp["Contents"])) && (is_array($tmp["Contents"]))) {
$response["Contents"] = array_merge($response["Contents"], $tmp["Contents"]);
}
$response["IsTruncated"] = $tmp["IsTruncated"];
$response["NextMarker"] = $tmp["NextMarker"];
} else {
break;
}
}
return $response;
}
위와 같이 만들고 사용해서 프린트해보면 폴더는 $response["CommonPrefixes"] 이곳에
파일들은 $response["Contents"] 이곳에 배열로 저장되어 있는것을 확인 할 수 있다.
# bucket 에는 버킷이름
Delimiter 에는 그냥 '/' 를 넣었고
Marker는 파일경로인데 파일들은 쭉 나열했을때 어느 파일 후 부터 가져올것인지 정하는거고
Prefix 는 상위경로(어디서 가져올 것인지)이다.
'공부 > Aws' 카테고리의 다른 글
AWS SES Bounce 처리 (0) | 2018.11.17 |
---|---|
boto3 s3 remove deletemarker (7) | 2018.05.22 |
AWS cli s3 덮어쓰기 (0) | 2018.04.27 |
AWS cli s3 upload (0) | 2018.04.24 |
AWS cli config (0) | 2018.04.24 |