组需要哪些权限才能通过 travisci 发布到 s3



我正在将所有站点从服务器移动到 s3 上。我已经将它们从动态站点移动到静态站点,因此操作不再需要运行服务器。

最后一个站点是我的博客,它运行 jekyll,我宁愿不必在本地构建来发布新内容。我不想把它留给github页面,因为我不想锁定在jekyll。

总而言之,我正在尝试将构建过程从我的 jenkins 服务器转移到 travis ci 上。从文档中,我认为我已经为该组提供了正确的权限,但是如果不向组/用户授予"s3:*",我就无法使其工作。

这是我当前的 iam 组权限策略:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::*" ] }, { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObject", "s3:PutObjectVersion", "s3:GetObjectVersion", "s3:DeleteObjectVersion", "s3:ListMultipartUploadParts", "s3:ListMultipartUpload", "s3:RestoreObject", "s3:GetObjectVersionTorrent", "s3:GetObjectTorrent", "s3:PutObjectVersionTagging", "s3:PutObjectTagging", "s3:GetObjectVersionTagging", "s3:GetObjectTagging", "s3:DeleteObjectTagging", "s3:DeleteObjectVersionTagging" ], "Resource": [ "arn:aws:s3:::travis-s3-pub-test/*" ] } ] }

根据 aws 文档,唯一需要的权限是:

'

''

            "s3:PutObject",
            "s3:GetObject",
            "s3:DeleteObject",
'

''

但这行不通。

我在我工作的系统管理员 jfronza 的帮助下找到了答案。

我错过了策略的 acl 部分。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:DeleteObject", "s3:DeleteObjectVersion", "s3:GetObject", "s3:GetObjectAcl", "s3:GetObjectTorrent", "s3:GetObjectVersion", "s3:GetObjectVersionAcl", "s3:GetObjectVersionTorrent", "s3:PutObject", "s3:PutObjectAcl", "s3:PutObjectVersionAcl", "s3:RestoreObject" ], "Resource": [ "arn:aws:s3:::travis-s3-pub-test/", "arn:aws:s3:::travis-s3-pub-test/*" ] }, { "Effect": "Allow", "Action": [ "s3:ListAllMyBuckets" ], "Resource": [ "arn:aws:s3:::*" ] } ] }

acl 部分是文件权限发生的地方,由于上传的文件需要公开,因此需要此权限。

虽然关于 s3 政策的 Amazon 文档非常糟糕,但关于使用 s3 的 travisCI 文档很好,如果我在发布此文档之前看到它们,请准确地告诉我这一点。

相关内容

  • 没有找到相关文章

最新更新