AWS S3Client->getObject()
は返さず、存在しないキーを要求しても例外をスローしません。私は他のS3Clientメソッドが存在しないキーが与えられたときに同じ問題を抱えていると思われます。存在しないキーがあると、S3Client-> GetObject()は例外を返さず、例外をスローしません
しかし、S3Clientを'debug' => true
に設定すると、ファイルが見つからない場合はAws\S3\Exception\S3Exception
が返されますが、これは許容されます。ここで
は私が書いたテストケースである:
protected function _test_s3_client_get($unit, $key) {
$provider = CredentialProvider::ini(NULL, APPPATH . 'config/aws.ini');
$provider = CredentialProvider::memoize($provider);
$client = new S3Client([
'region' => 'us-east-1',
'version' => '2006-03-01',
'credentials' => $provider,
// 'debug' => ['logfn' => [$this, '_noop']]
// 'debug' => true,
]);
try {
$result = $client->getObject(array(
'Bucket' => 'mybucket',
'Key'=> $key,
));
} catch (S3Exception $e) {
error_log($e);
}
$unit->run(isset($result['Body']), true, "Got $key");
}
を'debug' => true
場合、S3Clientは関係なく、それがファイルを見つけたかどうかの応答に大量のデータをダンプします。回避策として、debug
オプションを設定して、デバッグ出力で空の関数を呼び出すことができます。それにもかかわらず、これは恒久的な解決策のようには見えません。
他に誰かがこの問題を抱えていますか?より良い回避策がありますか?
結果がない場合は、 '$ result'が' null'になると思いますか? – Pitchinnate
@Pitchinnateそれは決して戻らない。 –
ええ、ドキュメントを見ても、 'getObject()'メソッドの戻りエラーはありません。 'GetObjectAcl()'に 'NoSuchKey'というエラーがありますので、キーが存在することを確認してから' getObject() 'を呼び出してください。 – Pitchinnate