siv*_*a R 3 permissions amazon-s3 amazon-web-services
我的目标是将jpg文件上传到s3存储桶,我已经使用boto3库完成了。
当我尝试使用显示的链接在 s3 存储桶中打开该文件时,我遇到了错误。
错误:
此 XML 文件似乎没有任何与之关联的样式信息。文档树如下所示。
<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>7C702F46589DF223</RequestId>
<HostId>
/CbLJfLthWd2n6br7m1fkSy3W71yyKMWavtOxk/8h/afUr3w09cXl5e1eU8lppXSP7AU90jbymE=
</HostId>
</Error>
Run Code Online (Sandbox Code Playgroud)
编辑 1: 按照@CaffeinatedCod3r建议的答案后,我收到以下错误。
看起来您正在尝试在浏览器中查看图像。
为此,你需要
S3你的对象AWS。S3对象的属性。Metadata部分。Content-Type。它的初始值可能是binary/stream. 将其更改为图像类型image/jpeg,image/png
或者application/pdf(如果您正在处理 pdf 文件)等。现在您应该能够在浏览器选项卡中查看图像或文件,而不是下载。
在使用生成的 Web URL 下载文件之前,您需要使用“存储桶策略”工具应用公共权限。
要应用存储桶策略,请执行以下步骤:
您必须申请 的政策GetObject。
注意:这将为所有获得链接的人授予下载权限。
示例策略如下所示
{
"Id": "PolicyID",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "StmtID",
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::<YOUR_BUCKET_NAME>",
"Principal": "*"
}
]
}
Run Code Online (Sandbox Code Playgroud)
在 @mondyfy 回答后编辑政策将是
{
"Id": "PolicyID",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "StmtID",
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::<YOUR_BUCKET_NAME>/*",
"Principal": "*"
}
]
}
Run Code Online (Sandbox Code Playgroud)