AWS S3正在我的本地主机和我的实时网站上工作,但我的开发服务器(完全相同的配置)引发了以下错误:http://xxx.xx.xxx.xxx/latest/meta-data/iam/security-credentials/ resulted in a
404 Not Found`响应:从实例配置文件元数据服务器检索凭据时出错。
Localhost URL is http://localhost/example
Live URL is http://www.example.com
Development URL is http://dev.example.com
为什么这会在localhost和live上运行,但不能在我的开发服务器上运行?
以下是我的示例代码:
$bucket = 'example'
$s3Client = new S3Client([
'region'=>'us-west-2',
'version'=>'2006-03-01',
'key'=>'xxxxxxxxxxxxxxxxxxxxxxxx',
'secret'=>'xxxxxxxxxxxxxxxxxxxxxxxx',
]);
$uniqueFileName = uniqid().'.txt';
$s3Client->putObject([
'Bucket' => $bucket,
'Key' => 'dev/'.$uniqueFileName,
'Body' => 'this is the body!'
]);
这是政策:
{
"Version": "2012-10-17",
"Id": "Policyxxxxxxxxx",
"Statement": [
{
"Sid": "Stmtxxxxxxxxx",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::example/*"
}
]
}
答案 0 :(得分:0)
http://169.254.169.254/latest/meta-data/iam/security-credentials/
返回的值与首次启动实例时分配给EC2实例的角色相关联。
由于您收到404 Not Found
响应,因此您的开发服务器可能没有分配角色。您可以登录EC2管理控制台 - 只需单击该实例,然后查看详细信息窗格并找到角色值。
如果您希望启动“完全”相同的新服务器,请使用“操作”菜单中的启动更多此类命令。它还将复制角色设置。