[S3×AWS SDK for PHP] 통에서 가장 오래된 객체 가져오기

11296 단어 AWSPHPS3AWS SDKtech

개요


S3 섹션에서 가장 오래된 객체의 샘플 코드 가져오기(메모)

코드


getOldest.php
<?php

// AWS SDK for PHPの読み込み
require_once('/usr/lib/vendor/autoload.php');

use Aws\S3\S3Client;
use Aws\S3\Exception\S3Exception;

// アクセスキー、シークレットアクセスキーの設定
define('AWS_ACCESS_KEY_ID', 'xxxxxxxxxxxxxxxx');
define('AWS_SECRET_ACCESS_KEY', 'yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy');

// タイムゾーンの設定
date_default_timezone_set('Asia/Tokyo');

// バケット名、リージョンを設定
$bucket = 'zzzzzzzzzzzzzzz';
$region = 'ap-northeast-1';

$s3Client = new S3Client([
    'region' => $region,
    'version' => 'latest',
    'credentials' => [
        'key' => AWS_ACCESS_KEY_ID,
        'secret' => AWS_SECRET_ACCESS_KEY,
    ],
]);

// バケット内のオブジェクト一覧を取得
$results = $s3Client->listObjects([
    'Bucket' => $bucket
])['Contents'];

$objects = array();

// 取得したオブジェクトから必要な要素(キー = ファイル名、日付: ソート用)を取得
foreach ($results as $result) {
    $lastModified = (array)($result["LastModified"]);
    array_push($objects, ['file' => $result["Key"], 'date' => $lastModified["date"]]);
}

// 並び替えの基準(date)を取得
$dates = array_column($objects, 'date');
// 以下PHP5.4用
/*
$dates = [];
foreach($dates as $date) {
    $dates[] = $objects['date'];
}
*/

// dateの昇順でソート
array_multisort($dates, SORT_ASC, $objects);
// dateのいちばん古いものを取得

try {
    // dateのもっとも古いファイルをtmpディレクトリ下にDL
    $result = $s3Client->getObject([
        'Bucket' => $bucket,
        'Key'    => $objects[0]['file'],
        'SaveAs' => './tmp/' . $objects[0]['file']
    ]);
} catch (S3Exception $e) {
    echo $e->getMessage() . PHP_EOL;
}

참고 자료

  • GetObject.php | aws
  • aws-doc-sdk-examples/php/example_code/s3 | GitHub
  • DB에서 가져온 검색 결과(array multissort의 활용, 오름차순, 내림차순, 여러 정렬 키, 사용자 정의 정렬) | YoheiM을 PHP로 재배열합니다.NET
  • 좋은 웹페이지 즐겨찾기