群组需要什么权限才能通过travisci发布到s3

时间:2017-02-12 23:37:54

标签: amazon-web-services amazon-s3 permissions amazon-iam

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

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

这就是说我试图将构建过程从我的jenkins服务器移到travis ci上。从文档中我认为我已经为该组授予了正确的权限,但是如果不向组/用户授予pop(),我就无法使用它。

这是我目前的iam群组许可政策:

consumer.on('message', (message) => { process(message, callback); // do stuff }); var callback(err, result) => { push(result) // Where should I push the results into? } producer.on('ready', function () { var payloads = pop(); // Where should I pop data from? producer.send(payloads, function (err, data) { console.log(data); }); }); producer.on('error', function (err) {})

基于aws文档的唯一权限是:

```

"s3:*"

```

但这不起作用。

1 个答案:

答案 0 :(得分:0)

我在我工作的系统管理员的帮助下找到了答案,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 部分是文件权限发生的地方,由于上传的文件需要公开,因此需要此权限。

虽然Amazon docs on s3 policies上的travisCI docs on working with s3非常糟糕,JSFiddle很好,如果我在发布之前看到它们,请告诉我。