gpt4 book ai didi

amazon-web-services - CloudFront Origin Access Identity signed url 上传的文件无法通过 boto3 或 IAM 角色访问?

转载 作者:行者123 更新时间:2023-12-05 02:17:30 25 4
gpt4 key购买 nike

我跟着云端文档 http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-restricting-access-to-s3.html#private-content-granting-permissions-to-oai用于私有(private)文件。

存储桶策略如下所示:

{  
"Version": "2008-10-17",
"Id": "PolicyForCloudFrontPrivateContent",
"Statement": [
{
"Sid": "1",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity XXXXXXXXX"
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::XXXXXX/*"
}
]
}

当我使用 KEY PAIR 通过签名的 url 上传文件时。文件所有者是

Owner CloudFront Origin Access Identity *********

目前,我无法在 ec2 中使用 boto3。命令

aws s3 cp s3::/xxx/uploadfile test.txt 

给我一​​个错误:

fatal error: An error occurred (403) when calling the HeadObject operation: Forbidden

我可以上传不使用签名 url 的文件。 boto3 可以很好地访问这些文件。这些文件的所有者是

 ****MyCountName***** 

所以我想不通为什么ec2机器不能headorigin access identity文件?

最佳答案

如您所见,当 CloudFront 原始访问身份 (OAI) 授权上传时,OAI 是拥有该对象的实体,而不是您的账户。

Owner CloudFront Origin Access Identity XXXX

OAI 代表您完全控制的实体,但它们实际上并不是您的 AWS 账户的一部分。

对象的所有权由授权上传的帐户决定,而不是拥有存储桶的帐户。上传帐户以外的帐户必须由拥有该对象的帐户授予权限。

x-amz-acl: bucket-owner-full-control

http://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html

您可以使用存储桶策略将此 header 设为强制性。

如果您控制进行上传的客户端,您应该能够添加此 header 。

如果您不控制客户端,您应该能够使用 Lambda@Edge Viewer Request 触发器添加它。我没有测试这段代码,但它应该可以达到目的:

'use strict';

exports.handler = (event, context, callback) => {
const request = event.Records[0].cf.request;
if(request.method == 'PUT')
{
request.headers['x-amz-acl'] = [
{ key: 'x-amz-acl', value: 'bucket-owner-full-control' }
];
}
return callback(null, request);
};

关于amazon-web-services - CloudFront Origin Access Identity signed url 上传的文件无法通过 boto3 或 IAM 角色访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47572484/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com