Aws\S3\S3Clientで画像を取得する際に、1000件を超えると、1000件までしか取得できない。
-> ListAllObjectsを使おうとするとエラーになる。
-> $s3client->getPaginatorを使用する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | $s3client = new Aws\S3\S3Client([ 'credentials' => [ 'key' => $key , 'secret' => $secret , ], 'region' => 'ap-northeast-1' , 'version' => 'latest' , ]); $results = $s3client ->getPaginator( 'ListObjects' ,[ 'Bucket' => $bucket , 'Prefix' => $prefix , 'Delimiter' => "/" ]); $list = array (); foreach ( $results as $result ) { foreach ( $result [ "Contents" ] as $object ) { if ( substr ( $object [ 'Key' ],-1,1) != "/" ){ array_push ( $list , substr ( $object [ 'Key' ], 4)); } } } echo count ( $list ); |
$ php app.php
1069
参考ページ: https://docs.aws.amazon.com/ja_jp/sdk-for-php/v3/developer-guide/guide_paginators.html
焦るがなー 画像ファイル側に何かあったのかと思って冷や汗かいたわ。