我正在尝试使用我的amazon ec2
实例将文件夹挂载到我的桌面文件夹sshfs
.
问题是我无法弄清楚如何为私钥(awskey.pem)提供选项.
通常我ssh
用
ssh ec2-user@{amz-ip-address} -i {path to amzkey.pem}
Run Code Online (Sandbox Code Playgroud)
但是sshfs
没有这样的选择.但是我看到了一个-F
选项并尝试过
sshfs ec2-user@{amz-ip-address}:{amz-folder} {my mount dir} -F {path to amzkey.pem}
Run Code Online (Sandbox Code Playgroud)
这给了我一个错误
"读取:由同行重置连接"
如果有人以前尝试过,请告诉我.
从文档中可以看出这一点
对于服务器请求,Request Body始终为非零,但在没有正文时立即返回EOF.
对于ContentLength,文档说明
对于客户端请求,如果Body不是nil ,则值0表示未知.
那么检查ContentLength会更好吗?
r *http.Request
if r.ContentLength == 0 {
//empty body
}
Run Code Online (Sandbox Code Playgroud)
或检查EOF
type Input struct {
Name *string `json:"name"`
}
input := new(Input)
if err := json.NewDecoder(r.Body).Decode(input); err.Error() == "EOF" {
//empty body
}
Run Code Online (Sandbox Code Playgroud) 我尝试使用 Amazon API Gateway 并在端点 URL 上对其进行了测试。如果服务器正在侦听端口 80,则它工作正常。
但是,如果我给端点 URL 提供不同的端口(例如http://52.xxx.xxx.33:8080),则会出现错误。如果我直接在浏览器上访问这个 URL(GET 方法),它会给我所需的输出。
这是 AWS API Gateway 中尚不可用的功能吗?
我正在尝试编写一个中间件,在其中我将对请求主体进行json模式验证。验证之后,我需要再次使用请求正文。但是我不知道该怎么做。我参考了这篇文章, 并找到了一种进入尸体的方法。但是,一旦使用了请求正文,我就需要下一个函数可用。
这是示例代码:
package main
import (
"fmt"
"io/ioutil"
"net/http"
"github.com/gin-gonic/gin"
//"github.com/xeipuuv/gojsonschema"
)
func middleware() gin.HandlerFunc {
return func(c *gin.Context) {
//Will be doing json schema validation here
body := c.Request.Body
x, _ := ioutil.ReadAll(body)
fmt.Printf("%s \n", string(x))
fmt.Println("I am a middleware for json schema validation")
c.Next()
return
}
}
type E struct {
Email string
Password string
}
func test(c *gin.Context) {
//data := &E{}
//c.Bind(data)
//fmt.Println(data) //prints empty as json body is already used
body := c.Request.Body …
Run Code Online (Sandbox Code Playgroud) 我使用 gin 在 Go 中创建了一个项目,它在本地运行良好。但是,当我尝试在 AWS 上的 EC2 实例上部署它时,我无法访问服务器上的 API。
我在托管机器上执行了 ssh 并给出了 curl 请求 ( curl localhost:8080
) 并给出了正确的响应。但是无法访问来自外部的任何请求。
服务器在端口 8080 上运行。我已打开 AWS 安全组中的端口。
是否需要在 Go/gin 中进行任何设置才能从 Internet 访问它?
示例代码:
package main
import (
"myConstants"
"myDatabase"
"myMiddleware"
"onboarding"
"github.com/gin-gonic/gin"
)
func main() {
var db = myDatabase.DBConnect()
router := gin.Default()
router.Use(myMiddleware.RestrictInputContent)
router.Use(myMiddleware.CheckToken(db))
router.Use(myMiddleware.RequestLoggerMiddleware())
router.POST("/signup", onboarding.Signup(db))
router.POST("/login", onboarding.Login(db))
router.POST("/logout", onboarding.Logout(db))
router.GET("/", onboarding.Hello(db))
defer db.Close()
//Listen and serve
router.Run("127.0.0.1:8080")
}
Run Code Online (Sandbox Code Playgroud)