amazon-web-services - 创建预签名 url 时出现紧急错误

标签 amazon-web-services go amazon-s3

我正在尝试使用 aws-sdk-go 创建一个预签名的 url,但它失败了,输出如下:

panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x18 pc=0x138d40a]

goroutine 1 [running]:
github.com/aws/aws-sdk-go/service/s3.New(0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
    /Users/me/go/src/github.com/aws/aws-sdk-go/service/s3/service.go:47 +0x3a
main.main()
    /Users/me/go/src/Test/main.go:22 +0xa0
exit status 2

我没有看到我在哪里犯了错误,也许有更多经验的人可以向我指出:

package main

import (
    "fmt"
    "log"
    "time"

    // "github.com/aws/aws-sdk-go/aws"
    "github.com/aws/aws-sdk-go/service/s3"
    "github.com/kelseyhightower/envconfig"
)


func main() {
  var configuration s3.PutObjectInput
  err := envconfig.Process("configuration", &configuration)

  if err != nil {
    log.Fatal(err.Error())
  }

  svc := s3.New(nil)
  req, _ := svc.PutObjectRequest(&configuration)
  url, err := req.Presign(15 * time.Minute)
  fmt.Println("The url is ", url)
}

最佳答案

您在初始化 s3 服务 svc := s3.New(nil) 时传递了一个 nil session ,这就是您收到 nil 指针错误的原因。

您可以使用以下代码传递 session ,

导入“github.com/aws/aws-sdk-go/aws/session”

awsSession = session.Must(session.NewSessionWithOptions(session.Options{
    SharedConfigState: session.SharedConfigEnable,
}))
// Create S3 service client
serviceS3 = s3.New(awsSession)

您可能需要根据您计划使用凭据的方式更改 session 配置。您可以在此处阅读有关凭证配置的更多信息 https://docs.aws.amazon.com/sdk-for-go/api/

关于amazon-web-services - 创建预签名 url 时出现紧急错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48876891/

相关文章:

go - Heroku Golang 部署

php - Go和PHP中的sha1结果不同

python - 远程图像上传的执行方式与开发服务器不同

amazon-web-services - 输出不是根据条件生成的

amazon-web-services - 如何将Amazon ECS添加到我已经创建的非默认VPC中?

go - http.Post 数据二进制,golang 中的 curl 等价物

amazon-web-services - AWS S3 存储桶数据的 URL 缩短

php - 如何创建 amazon MySQL RDS 实例的镜像并连接到它?

amazon-web-services - 如何处理 CF 堆栈之外的参数更改?

java - 每 30 秒查询 PostgreSQL 的有效方法?