amazon-s3 - ECS 任务对 S3 的访问被拒绝

标签 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/*"
            ]
        }
    ]
}

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

我似乎能够从 bucket/下的文件夹读取和写入 bucket/00001,但我无法从 bucket/Templates 读取。

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

我被难住了。有人知道我在这里可能错过了什么吗?

谢谢

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 但我删除了它以查看是否有帮助 - 它没有。也许我还需要其他东西?

最佳答案

它现在可以工作了,因为您更改了资源以匹配“”。 尝试将存储桶本身添加为资源,以及/ 模式:

"Version": "2012-10-17",
"Statement": [
    {
        "Sid": "sid1",
        "Effect": "Allow",
        "Action": [
            "s3:ListAllMyBuckets",
            "s3:ListBucket",
            "s3:HeadBucket"
        ],
        "Resource": "*"
    },
    {
        "Sid": "sid2",
        "Effect": "Allow",
        "Action": "s3:*",
        "Resource": [
                "arn:aws:s3:::bucket",
                "arn:aws:s3:::bucket/*",
                "arn:aws:s3:::anotherBucket"
                "arn:aws:s3:::anotherBucket/*",
            ]
    }
]

关于amazon-s3 - ECS 任务对 S3 的访问被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50328410/

相关文章:

amazon-web-services - 如何使 CloudFront 从不在 S3 存储桶上缓存 index.html

php - 使用作业队列上传到 AWS S3 存储桶

amazon-web-services - AWS ECS-在一个ALB中注册多个ECS集群

amazon-web-services - 如何运行 Docker inspect 以获取 ECR 注册表中镜像的镜像元数据

node.js - 使用更多的vCPU是否有助于提高node.js的性能?

amazon-s3 - 从云端发送 "Cache-Control : no-cache"

java - Spark 1.6 DirectFileOutputCommitter

java - 如何使用 Lambda 在 S3 存储桶内触发应用程序?

amazon-web-services - 确保 ECS 仅在新任务准备就绪时终止旧任务