ECS 任务访问 S3 被拒绝

Jon*_*sie 5 amazon-s3 aws-ecs

我为我的任务设置了具有以下权限的 IAM 角色,但尝试访问存储桶时 却被拒绝。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "",
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::bucket/Templates/*",
                "arn:aws:s3:::bucket/*",
                "arn:aws:s3:::anotherBucket/*"
            ]
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

容器实例具有标准策略的角色 AmazonEC2ContainerServiceforEC2Role

我似乎能够从存储桶/下读取和写入文件夹,如存储桶/00001,但我无法从存储桶/模板中读取。

我已经反复重新部署权限和任务(使用 terraform),但没有任何变化。我已向应用程序添加了日志记录,以确保它使用正确的存储桶和路径/密钥。

我很困惑。有人知道我在这里可能错过了什么吗?

谢谢

PS:我刚刚想到,我无法访问的存储桶中的文件我使用脚本复制到那里。这是使用任务正在使用的凭据以外的凭据来完成的。

aws s3 cp ..\Api\somefiles\000000000001\ s3://bucket/000000000001 --recursive --profile p aws s3 cp ..\Api\somefiles\Templates\000000000001\ s3://bucket/Templates/000000000001 --recursive --profile p

我在 cp 命令上使用 -acl bucket-owner-full-control 但我删除了它以查看是否有帮助 - 它没有。也许我还需要别的东西?

Jon*_*sie 1

解决了。找到了前雇主的旧样本:) 我明确需要 List* 的权限,与其他权限分开。我还需要定义 sids。

"Version": "2012-10-17",
"Statement": [
    {
        "Sid": "sid1",
        "Effect": "Allow",
        "Action": [
            "s3:ListAllMyBuckets",
            "s3:ListBucket",
            "s3:HeadBucket"
        ],
        "Resource": "*"
    },
    {
        "Sid": "sid2",
        "Effect": "Allow",
        "Action": "s3:*",
        "Resource": "*"
    }
]
Run Code Online (Sandbox Code Playgroud)

}