【问题标题】:EC2 instance does not have rights to download fileEC2 实例无权下载文件
【发布时间】:2021-09-08 08:08:33
【问题描述】:

我有从 S3 下载文件的应用程序。我在 EC2 实例上对其进行了测试。以交互方式运行时,应用程序运行良好。 我将角色附加到实例,删除 ~/.aws 文件夹并执行应用程序。下载失败。 SDK CPP 日志显示查询到元信息服务并获取临时访问令牌。接下来我在日志 404 中看到。分配给 EC2 实例的角色具有以下内联策略

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "managebucketsid",
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::mybuild"
        }
    ]
}

同一应用程序可以列出存储桶内容,但不能列出 GetObject。 目的是将应用程序作为计划任务运行,这意味着没有 AWS 配置文件。

我还将策略附加到存储桶授予角色完全 s3 访问权限。

【问题讨论】:

    标签: amazon-web-services amazon-s3


    【解决方案1】:

    您问题中的政策是允许在存储桶本身中执行操作:

    "Resource": "arn:aws:s3:::mybuild"
    

    而不是“在里面”或“在里面的物体上”:

    "Resource": "arn:aws:s3:::mybuild/*"
    

    如果您需要两者,您可以将您的政策更新为:

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "managebucketsid",
                "Effect": "Allow",
                "Action": "s3:*",
                "Resource": ["arn:aws:s3:::mybuild","arn:aws:s3:::mybuild/*"]
            }
        ]
    }
    

    存储桶策略的几个典型用例示例: https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-policies-s3.html

    【讨论】:

    • 非常感谢。几年前我也遇到过同样的问题,但我忘记了:-(单独的权限适用于存储桶和对象。我再次运行测试并下载文件。
    猜你喜欢
    • 1970-01-01
    • 2017-04-27
    • 1970-01-01
    • 2014-05-20
    • 1970-01-01
    • 1970-01-01
    • 2021-11-29
    • 2012-08-07
    • 1970-01-01
    相关资源
    最近更新 更多