当前位置: 首页 > 知识库问答 >
问题:

AWS S3+跨帐户文件下载失败

凤棋
2023-03-14

我在“AWS帐户1”中创建了一个名为(apple-bucket)的bucket,并允许访问另一个“AWS帐户2”以将文件上传到apple-bucket。

文件上载成功,从“AWS帐户2”到帐户1桶。

我的水桶政策是

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Access",
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::******:role/role-name",
                    "arn:aws:iam::******:root"
                ]
            },
            "Action": [
                "s3:ListBucket",
                "s3:PutObject",
                "s3:ListBucketVersions",
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": [
                "arn:aws:s3:::apple-bucket/*",
                "arn:aws:s3:::apple-bucket"
            ]
        },
        {
            "Sid": "Access1",
            "Effect": "Allow",
            "Principal": "*",
            "Action": [
                "s3:ListBucket",
                "s3:ListBucketVersions",
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": [
                "arn:aws:s3:::apple-bucket/*",
                "arn:aws:s3:::apple-bucket"
            ]
        }
    ]
}

注意:在命令行中,我可以使用“QA AWS凭据”下载文件,但不能使用“Prod AWS”凭据。

共有1个答案

应煌
2023-03-14

正如Michael和John所讨论的(在注释中),您可以通过复制现有对象来更正S3对象ACL,或者通过确保ACL在上传时正确设置来避免下载问题。

我最近不得不在相当大的范围内(数百万对象没有适当的ACL)解决这个问题。在不得不为所有这些对象承担就地复制的时间和费用之后,我设置了一个bucket策略,以确保上传到bucket的所有对象都必须授予bucket所有者完全控制权

此示例策略演示如何允许特定AWS帐户在需要适当的对象ACL的情况下将对象上载到您的bucket:

{
"Version": "2012-10-17",
"Statement": [
    {
        "Sid": "AllowSourceAccount0123456789ToPutObjects",
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::0123456789:root"
        },
        "Action": "s3:PutObject",
        "Resource": "arn:aws:s3:::apple-bucket/*"
    },
    {
        "Sid": "RequireAllUploadedObjectsToAssignFullControlToBucketOwner",
        "Effect": "Deny",
        "Principal": {
            "AWS": "*"
        },
        "Action": "s3:PutObject",
        "Resource": "arn:aws:s3:::apple-bucket/*",
        "Condition": {
            "StringNotEquals": {
                "s3:x-amz-acl": "bucket-owner-full-control"
            }
        }
    }
]
}

AWS s3 cp example-file.txt s3://apple-bucket/example-file.txt--profile aws-profile-name--acl bucket-owner-full-control

 类似资料:
  • 背景: 项目访问地址:https://xxx.com a标签下载文件的方式,类似 在本地下载正常,部署到正式环境之后,下载失败 定位原因:是项目访问https的原因,更改成http之后下载正常。 解决方案: 进行代理转发,改成调用接口的方式进行下载 设置代理 "/api/file-storage","http://10.8.15.1:10040/file-storage/" 书写、调用接口 接口u

  • 本文向大家介绍Feign实现跨服务文件上传下载,包括了Feign实现跨服务文件上传下载的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Feign实现跨服务的文件上传下载操作,供大家参考,具体内容如下 1、跨服务文件上传,目前feign不支持调用文件上传接口,需要自行配置来满足feign的调用方式 ①.首先需要在pom文件里添加feign依赖 ②.上传的接口 ③.添加配置来满足feig

  • 问题内容: 我正在使用它向用户发送文件 用户下载后我想删除该文件,我该怎么做? 编辑:我的情况是这样的,当用户点击下载按钮时,我的脚本将创建一个临时zip文件,然后用户下载该文件,然后该临时zip文件将被删除。 EDIT2:好的最佳方法似乎是运行一个cron作业,该作业每小时将清理一次临时文件。 EDIT3:我使用来测试了我的脚本,除非用户取消下载,否则它将起作用。如果用户取消下载,则zip文件将

  • 下载 <?php /** * 下载文件请求示例 */ require dirname(__DIR__) . '/vendor/autoload.php'; use Yurun\Util\HttpRequest; use Yurun\Util\YurunHttp; use Yurun\Util\YurunHttp\Handler\Swoole; $url = 'http://www.baid

  • URL生成的目的是与我的组织中的内部团队共享。此文件可能具有任何应用程序的异常。 我必须使文件或桶被限制在我的组织(不是公共的)。我曾经拥有的桶服务器端加密是启用的。如何生成启用了服务器端加密的文件url?

  • 问题内容: 我在使用通过相对URL访问的字体时遇到问题。 当我访问网页时,字体不起作用,在控制台中,我得到以下信息: 通过将URL复制/粘贴到浏览器地址栏中来访问文件,这表明它是正确的URL,因为我可以下载字体。 问题答案: 乔纳森·邱(Jonathan Kew)对有关MozillaBugzilla条目的回应的提示: 我相信这是按设计工作的。AIUI,这里的问题是,对于从file:// URI加载