AWS s3 getIterator ListObjects 移动到另一台服务器后产生错误
Posted
技术标签:
【中文标题】AWS s3 getIterator ListObjects 移动到另一台服务器后产生错误【英文标题】:AWS s3 getIterator ListObjects after moving to another server producing an error 【发布时间】:2021-10-28 05:36:32 【问题描述】:我当前的服务器上有一个脚本,它可以抓取 s3 存储桶中的对象,这些对象是来自我拥有的 SES 设置的电子邮件并循环遍历它们。它目前工作得很好并且可以完成它的工作。
我正在创建一个与当前服务器完全相同的新生产服务器。唯一的区别是这个新服务器将从子域访问,而不是从www
访问的当前服务器,并且 IP 地址正在更改。
在新的生产服务器上,我的脚本此时正在中断。
$objects = $s3->getIterator('ListObjects', array('Bucket' => $bucketName));
对于我的一生,我无法弄清楚它为什么会破裂。我检查了我的 S3CLient 结果,它似乎工作得很好。我可以做一个print_r
,我可以查看结果,我没有看到任何错误。
try
// Instantiate the client.
$s3 = new S3Client([
'version' => 'latest',
'region' => 'us-west-2',
'credentials' => [
'key' => '*******************',
'secret' => '***********************************',
],
]);
catch (Exception $e)
die("Error: " . $e->getMessage());
我认为这可能与 SES 要求的某些域验证问题有关,但对我来说这似乎并不相关,因为错误是由 s3
方面引起的。
我查看了我的 IAM
角色,但在其中看不到任何特定于域的内容。
特定于域或 IP 的 s3 存储桶是否存在某种权限问题?我很久以前设置的,所以我不记得了。
【问题讨论】:
【参考方案1】:已解决
我想通了。在我当前的服务器上,我使用 AWS SDK for php 从下载文件夹而不是使用 composer 安装它。在我的新服务器上,我通过 composer 安装了 SDK 并删除了 require
我曾指向旧文件夹 SDK,它现在可以工作了。
【讨论】:
以上是关于AWS s3 getIterator ListObjects 移动到另一台服务器后产生错误的主要内容,如果未能解决你的问题,请参考以下文章
AttributeError: 'ElementTree' 对象在尝试导入 excel 文件时没有属性 'getiterator'
多个 AWS Lambda 中的 AWS::S3::Bucket LambdaConfiguration