我有以下程序:
package main
import "bytes"
import "io"
import "log"
import "os"
import "os/exec"
import "time"
func main() {
runCatFromStdinWorks(populateStdin("aaa\n"))
runCatFromStdinWorks(populateStdin("bbb\n"))
}
func populateStdin(str string) func(io.WriteCloser) {
return func(stdin io.WriteCloser) {
defer stdin.Close()
io.Copy(stdin, bytes.NewBufferString(str))
}
}
func runCatFromStdinWorks(populate_stdin_func func(io.WriteCloser)) {
cmd := exec.Command("cat")
stdin, err := cmd.StdinPipe()
if err != nil {
log.Panic(err)
}
stdout, err := cmd.StdoutPipe()
if err != nil {
log.Panic(err)
}
err = cmd.Start()
if err != nil {
log.Panic(err)
}
go populate_stdin_func(stdin)
go func() { …Run Code Online (Sandbox Code Playgroud) 在Eclipse的Preferences - > Scala - > Compiler - > Build manager中,我可以选择"buildmanager"."精致"和"sbt"有什么区别?
另外,这是将sbt构建文件集成到Eclipse IDE中的一些方法吗?
我目前有一个IAM角色,其策略如下:
{
"Version":"2008-10-17",
"Statement": [
{
"Effect":"Allow",
"Action":["s3:ListBucket"],
"Resource":[
"arn:aws:s3:::blah.example.com"
]
},
{
"Effect":"Allow",
"Action":["s3:GetObject", "s3:GetObjectAcl", "s3:ListBucket", "s3:PutObject", "s3:PutObjectAcl", "s3:DeleteObject"],
"Resource":[
"arn:aws:s3:::blah.example.com/prefix/"
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
Boto似乎要求在桶的根目录上存在ListBucket权限才能执行get_bucket调用.如果我删除Statement数组中的第一个哈希,get_bucket('blah.example.com')将失败.这是错误文本:
*** S3ResponseError: S3ResponseError: 403 Forbidden <?xml version="1.0" encoding="UTF-8"?> <Error><Code>AccessDenied</Code><Message>Access Denied</Message><RequestId>xxxx</RequestId><HostId>yyyy</HostId></Error>
有没有办法在仍然使用boto的情况下将存储桶的列表限制为某个前缀(例如"prefix /")?
UPDATE
为了使一切正常,我使用了以下策略:
{
"Version":"2008-10-17",
"Statement": [
{
"Effect":"Allow",
"Action":["s3:ListBucket"],
"Resource":[
"arn:aws:s3:::blah.example.com"
],
"Condition":{
"StringLike":{
"s3:prefix":"prefix/*"
}
}
},
{
"Effect":"Allow",
"Action":["s3:GetObject", "s3:GetObjectAcl", "s3:PutObject", "s3:PutObjectAcl", "s3:DeleteObject"],
"Resource":[
"arn:aws:s3:::blah.example.com/prefix/*"
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
您仍然必须使用该方法的validate=False参数get_bucket,但它允许在前缀中列出.
我有一个文件.我们称之为"x".我想将"x"与linux中的环回设备关联起来.从bash,我输入:
losetup -f x
Run Code Online (Sandbox Code Playgroud)
这将创建类似/ dev/loop0的东西,我可以在任何地方安装.当它没有安装时,我可以用以下方法销毁环回文件:
losetup -d /dev/loop0
Run Code Online (Sandbox Code Playgroud)
我希望能够在golang中做同样的事情,而无需从go程序中调用losetup.当我查看losetup源时,是否有某个库可以实现这一点,它看起来有些棘手,尤其是创建部分.