Amazon web services S3 putObject不工作访问被拒绝
AWS S3正在我的本地主机和我的live网站上工作,但我的开发服务器(配置完全相同)抛出以下错误:Amazon web services S3 putObject不工作访问被拒绝,amazon-web-services,amazon-s3,Amazon Web Services,Amazon S3,AWS S3正在我的本地主机和我的live网站上工作,但我的开发服务器(配置完全相同)抛出以下错误:导致了一个404未找到`响应:从实例配置文件元数据服务器检索凭据时出错 Localhost URL is http://localhost/example Live URL is http://www.example.com Development URL is http://dev.example.com 为什么这可以在本地主机和live上工作,而不能在我的开发服务器上工作 以下是我的示例代码
导致了一个
404未找到`响应:从实例配置文件元数据服务器检索凭据时出错
Localhost URL is http://localhost/example
Live URL is http://www.example.com
Development URL is http://dev.example.com
为什么这可以在本地主机和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/*"
}
]
}
http://169.254.169.254/latest/meta-data/iam/security-credentials/
与首次启动EC2实例时分配给该实例的角色关联
由于您收到的是404notfound
响应,因此您的开发服务器可能没有分配角色。您可以在EC2管理控制台中进行检查——只需单击实例,然后查看详细信息窗格并找到角色值
如果希望启动“完全”相同的新服务器,请使用“操作”菜单中的类似于此的启动命令。它还将复制角色设置。我认为您已编辑的xxx.xx.xxx.xx是169.254.169.254?这是EC2元数据虚拟服务器的标准IP地址,您的应用程序或AWS库将从中获取基于实例角色的临时凭据。如果一切都一样的话,为什么它能在localhost上工作似乎是一个很大的谜。您正在使用实例角色吗?两台EC2机器是否配置了相同的角色?
ec2metadata
命令行实用程序访问相同的端点。