AWSS3使用PHP列出对象键
我正在使用PHP和AWSS3列出对象键 我在bucket设置中加载了一个测试文件: 以下是我在AWS文档中使用的参考: 以下是我在页面中使用的代码:AWSS3使用PHP列出对象键,php,amazon-web-services,amazon-s3,Php,Amazon Web Services,Amazon S3,我正在使用PHP和AWSS3列出对象键 我在bucket设置中加载了一个测试文件: 以下是我在AWS文档中使用的参考: 以下是我在页面中使用的代码: 当我执行这个PHP脚本时,它只返回:“Keys retrieved!”而没有列出测试文件。它应该列出文件夹中的文件 当我添加一个“var_dump($objects);”(在脚本中注释,因此当我取消注释它时),它会返回大量对象数据,如此屏幕截图所示: 出于某种原因,Amazon提供的这部分代码不起作用: foreach($objects作
当我执行这个PHP脚本时,它只返回:“Keys retrieved!”而没有列出测试文件。它应该列出文件夹中的文件
当我添加一个“var_dump($objects);”(在脚本中注释,因此当我取消注释它时),它会返回大量对象数据,如此屏幕截图所示:
出于某种原因,Amazon提供的这部分代码不起作用:
foreach($objects作为$object){
echo$object['Key'].PHP_EOL;
}
为什么AWS提供的代码不起作用
难道不需要钥匙和秘密吗
请帮助您的问题很可能是由PHP AWS SDK无法从环境变量获取凭据引起的-->凭据可以从环境变量获取,也可以直接在代码中指定,如下所示:
// Instantiate the client.
$credentials = new Aws\Credentials\Credentials('<KEY>', '<SECRET>');
$s3 = new S3Client([
'version' => 'latest',
'region' => 'us-east-1',
'credentials' => $credentials
]);
希望您会发现它很有用。您应该将
var\u dump
结果粘贴为文本而不是图片-您会注意到此对象中没有Key
元素。如果您尝试访问http://apollos-integrations-public.s3.amazonaws.com/
您将得到一个XML文档,其中列出了文件及其密钥。@ApollosEasy:这个答案有用吗?是的,这个答案确实回答了问题。不幸的是,项目被取消了,很抱歉,我没能早点给你回复。
<?php
error_reporting(-1);
ini_set('display_errors', 'On');
require 'vendor/autoload.php';
use Aws\S3\S3Client;
use Aws\S3\Exception\S3Exception;
$bucket = 'apollos-integrations-public';
// Instantiate the client.
$credentials = new Aws\Credentials\Credentials('<KEY>', '<SECRET>');
$s3 = new S3Client([
'version' => 'latest',
'region' => 'us-east-1',
'credentials' => $credentials
]);
// Use the high-level iterators (returns ALL of your objects).
try {
$objects = $s3->getPaginator('ListObjects', [
'Bucket' => $bucket
]);
echo "Keys retrieved!" . PHP_EOL;
foreach ($objects as $object) {
echo $object['Key'] . PHP_EOL;
}
} catch (S3Exception $e) {
echo $e->getMessage() . PHP_EOL;
}
// Use the plain API (returns ONLY up to 1000 of your objects).
try {
$result = $s3->listObjects([
'Bucket' => $bucket
]);
echo "Keys retrieved!" . PHP_EOL;
foreach ($result['Contents'] as $object) {
echo $object['Key'] . PHP_EOL;
}
} catch (S3Exception $e) {
echo $e->getMessage() . PHP_EOL;
}
Fatal error: Uncaught Aws\Exception\CredentialsException: Error retrieving credentials from the instance profile metadata server.