【发布时间】:2021-12-27 18:18:41
【问题描述】:
我在位于 /var/www/html/ 的 AWS 实例上有一个网页
到目前为止,该网站在代码本身中使用密钥 AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY 来访问托管在 S3 上的文件。
出于安全考虑,
我已经从我的代码中删除了这些密钥,并使用aws configure 命令通过 ssh 将它们存储在 AWS 推荐的服务器上。
我看到在我的目录~.aws/ 文件夹中创建了两个文件:credentials 和config。
两者似乎都是正确的,但现在在网络日志中,我在尝试从 S3 访问文件时收到以下错误:
PHP Fatal error: Uncaught Aws\Exception\CredentialsException: Error retrieving credentials from the instance profile metadata server. (Client error: 'GET http://169.254.169.254/latest/meta-data/iam/security-credentials /' resulted in a '404 Not Found resulted in a '404 Not Found' response:
<! DOCTYPE html PUBLIC "- // W3C // DTD XHTML 1.0 Transitional // EN"
"http: // www. (truncated ...)
) in /var/www/html/aws/Aws/Credentials/InstanceProfileProvider.php:88
我不知道那个 URL 是什么,但我无法通过浏览器访问它。
我已经用环境变量试过了: 导出 AWS_ACCESS_KEY_ID = xxxxx...
我已将 .aws 文件夹复制到 /var/www 我已授予 .aws 更多权限,我已将所有者和组从 root 更改为 ec2-user ...
我应该如何进行配置,以便我的代码正确调用 S3 并获取文件?
调用失败的例子:
$s3 = new Aws\S3\S3Client ([
'version' => 'latest',
'region' => 'eu-central-1'
]);
if ($s3) {
$result = $ s3-> getObject (array (
'Bucket' => AWS_S3_BUCKET,
'Key' => $s3_key,
'Range' => 'bytes ='. $Startpos .'- '. ($Startpos + 7)
));
【问题讨论】:
标签: php amazon-web-services amazon-s3 amazon-ec2