PHP
AWS
S3

AWS SDK for PHPのドキュメント(日本語)が一部誤ってるくさいので正しいやり方載せときますね

やりたいこと

S3のバケットから複数のオブジェクトを削除したい by PHP

参照したドキュメント

これ↓
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/DeletingMultipleObjectsUsingPHPSDK.html
→latestって書いてあるから多分古いドキュメントではないと思う。

やり方

ドキュメントに書いてあったやり方。

// ファイルのパスを取得して
$keys = $s3->listObjects(array('Bucket' => $bucket))
    ->getPath('Contents/*/Key');

// これで取得出来るらしい
$result = $s3->deleteObjects(array(
    'Bucket'  => $bucket,
    'Objects' => array_map(function ($key) {
        return array('Key' => $key);
    }, $keys),
));

やってみたけど、何度やっても引数間違ってんでオマー!って怒られる。。

エラーメッセージとソースコード見て原因探ってったら'Delete'ってゆーキーが必要だったらしい。

$s3->deleteObjects(array(
  'Bucket'  => $bucket,
  'Delete' => [
     'Objects' =>
         array_map(function ($key) {
             return array('Key' => $key);
         }, $keys)
  ]
));

ちなみに、上記の$keysはS3上のファイルパスの配列。

英語のドキュメントには'Delete'ってゆーキーがあった。

気をつけんとね。