我正在尝试使用Curl和WGET使用我的EC2实例之一从我的S3存储桶下载文件。我最初以
为本设置了我的存储策略{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "HelpGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": ["arn:aws:s3:::name_of_bucket/*"],
"Condition": {
"IpAddress": {
"aws:SourceIp": [
"10.152.0.0/15",
"10.154.0.0/17",
"10.154.128.0/17"
]
}
}
}
]
}
然后,我去了我的实例,该实例具有IP地址10-152-17-111,并用和不引用的wget/curl
wget https://s3.amazonaws.com/name_of_bucket/my_file.tar.gz
这给了我403 curl https://s3.amazonaws.com/name_of_bucket/my_file.tar.gz
这给了我403
现在我更改了政策,以便所有S3操作都可以使用,并且我的特定IP地址均包含
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "HelpGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::name_of_bucket",
"arn:aws:s3:::name_of_bucket/*"
],
"Condition": {
"IpAddress": {
"aws:SourceIp": [
"10.152.0.0/15",
"10.154.0.0/17",
"10.154.128.0/17",
"10.152.17.111/32"
]
}
}
}
]
}
i然后以和没有引号的方式再次运行相同的命令:
wget https://s3.amazonaws.com/name_of_bucket/my_file.tar.gz
返回403
curl https://s3.amazonaws.com/name_of_bucket/my_file.tar.gz
返回403
我不知道下一步该怎么做,我只想从S3存储桶中下载文件。我应该有权限,但没有任何可行。
在您的S3存储牌策略中,您在10/8
范围内提供允许的IP。但是您要击中的S3端点并不在您的私有10/8
网络上;他们有公共IPS,您的请求将被视为源自您的您的公共IP,而不是您的私人IP。
https://wtfismyip.com/text是确定您的公共IP的一种方法。显然,这将根据您使用的网络而改变,并且还适用于该网络上的其他任何人,这是基于IP的权限不是授予S3访问的共同方法的两个原因。如果您的S3内容确实是公开的,而不是机密的,则可以考虑在上传时间将public-read
ACL附加到对象上;然后,遗愿政策是无关紧要的。
tl; dr :将您的公共IP放入策略中,而不是私人IP。