我正在将我的所有网站从我的服务器上移到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:*"
```
但这不起作用。
答案 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很好,如果我在发布之前看到它们,请告诉我。