やりたいこと
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'
ってゆーキーがあった。
気をつけんとね。