amazon-s3 - 亚马逊S3 : Grant anonymous access from IP (via bucket policy)

标签 amazon-s3 amazon-ec2

我有一个 Amazon S3 存储桶,并且希望将其可供特定计算机上的脚本使用,而无需部署登录凭据。所以我的计划是只允许从该机器的 IP 进行匿名访问。我对亚马逊云还很陌生,存储桶策略看起来是不错的选择。我将以下策略添加到我的存储桶中:

{
    "Version": "2008-10-17",
    "Id": "S3PolicyId1",
    "Statement": [
        {
            "Sid": "IPAllow",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::name_of_my_bucket/*",
            "Condition": {
                "IpAddress": {
                    "aws:SourceIp": [
                        "my_ip_1/24",
                        "my_ip_2/24"
                    ]
                }
            }
        }
    ]
}

但是匿名访问还是不行。为了进行测试,我在 S3 管理控制台中向“Everyone”授予了访问权限。这很好用,但显然不是我想要做的。 ;-) 有什么提示我做错了什么以及如何让它工作吗?

我的用例是使用 EC2 和 S3 进行一些数据处理,因此通过 IP 进行访问控制比摆弄用户帐户要简单得多。如果有更简单的解决方案,我愿意接受建议。

最佳答案

But anonymous access still does not work.

到底什么操作仍然不起作用,您是否偶然尝试列出存储桶中的对象?

用例常常隐含地涉及 Amazon S3除了已由策略明确定位的资源之外,API 调用还可以处理不同的资源类型。具体来说,您需要了解 Operations on the Service 之间的区别(例如 ListAllMyBuckets )、Operations on Buckets (例如 ListBucket )和 Operations on Objects (例如 GetObject )。

特别是,您的策略的 Resource 规范当前仅处理存储桶内的对象 (arn:aws:s3:::name_of_my_bucket/*),这意味着您无法列出存储桶中的对象(尽管如此,您应该能够放置/获取/删除对象) - 为了还允许通过 ListBucket 列出存储桶中的对象,您需要相应修改您的政策如下:

{
    "Version": "2008-10-17",
    "Id": "S3PolicyId1",
    "Statement": [
        {
            // ... your existing statement for objects here ...
        },
        {
            "Sid": "IPAllow",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:ListBucket",
            "Resource": "arn:aws:s3:::name_of_my_bucket",
            "Condition": {
                "IpAddress": {
                    "aws:SourceIp": [
                        "my_ip_1/24",
                        "my_ip_2/24"
                    ]
                }
            }
        }
    ]
}

关于amazon-s3 - 亚马逊S3 : Grant anonymous access from IP (via bucket policy),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16141362/

相关文章:

amazon-s3 - 删除 S3 文件时刷新 CloudFront 的缓存

amazon-web-services - 使用以 aws : in IAM policies 为前缀的标签

amazon-web-services - 增加 EC2 磁盘大小

amazon-web-services - 亚马逊 EC2 Laravel 应用程序无法正常工作

java - 如何在 aws ec2 服务器上运行 selenium 测试

Ruby:使用 aws-sdk 列出带有标记和最大键的 s3 对象

ubuntu - 将文件从我的服务器下载到我的本地计算机

spring-boot - 同步 S3 Bucket 并监听变化

mysql - Amazon EC2 上的 MySQL 数据库和 Amazon RDS 上的 MySQL 数据库有什么区别

python - 运行 Flask 应用程序时 AWS cloud9 超时