amazon-web-services - 部署到时 S3 PutObject 访问被拒绝
问题描述
我想创建一个 IAM 用户,其唯一工作是部署到 AWS S3 静态网站。
我有这个政策给我的 DeployUser:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:ListBucket"
],
"Resource": "arn:aws:s3:::www.<my-site-name>.com"
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:PutBucketAcl",
"s3:DeleteObject"
],
"Resource": "arn:aws:s3:::www.<my-site-name>.com/*"
}
]
}
这是我的存储桶策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::www.<my-site-name>.com/*"
}
]
}
这是我部署时遇到的问题(我为此使用 Github Actions):
upload failed: public/404.html to s3://www.<my-site-name>.com/404.html An error occurred (AccessDenied) when calling the PutObject operation: Access Denied
在 Github 中,我将用户的访问密钥和密码传递给了我的 Action。我很确定它正在使用该用户进行交易。当我提供 S3FullAccess 时,我的用户能够做到这一点。但我想用它只需要的 AWS 操作创建一个用户。
在哪里可以查看有关此 IAM 用户操作的更好日志?
解决方案
根据评论,解决方案是PutObject
为DeployUser
.
推荐阅读
- mysql - 如何使用 Union All 更正结果
- c# - 如何设置 Mock 已经将对象呈现为默认行为?
- node.js - [TypeError: WebAssembly.instantiate(): Imports 参数必须存在并且必须是一个对象]
- java - 如何在android studio中通过带有密码的POST方法获取JSON数据
- c# - 为 Vuforia+Unity 检测到图像时启动 C# 脚本
- javascript - instance.invokeMethod 内存泄漏
- html - 如何在不将顶部属性添加到同级部分以使其可见的情况下修复顶部指定高度的标题?
- java - 正则表达式在 JSON 中查找值
- csv - Pyarrow read_csv 如何处理不同的文件编码?
- javascript - reactjs中的setstate object:{array:[]}我如何在状态对象**中的数组中添加**键和值?