【问题标题】:accessing s3 from lambda within VPC in aws-go-sdk在 aws-go-sdk 的 VPC 中从 lambda 访问 s3
【发布时间】:2018-09-23 09:04:45
【问题描述】:

我刚开始使用 aws-sdk-go 并注意到 s3 请求使用的是 http/https 而不是 s3 协议。如何使用 aws-sdk-go 从 vpc 中的 lambda 读取 s3 中的对象?

而且我不想使用 NAT 网关。我可以在 NodeJS 中做到这一点,但是 aws-go-sdk 有什么办法可以做到这一点吗?

谢谢!

【问题讨论】:

  • 没有“S3 协议”。 S3 使用 HTTP。 s3://bucket/object 表示法(如果这是您所指的)只是一种 URI 格式,一种表示法样式。不清楚你在说什么你可以在不同于 Go 的 Node 中做......请澄清这一点,因为应该没有区别。
  • 啊.. 我以为 s3:// 和 https:// 是不同的
  • 是的。事实证明我需要@Robo 提到的 S3 端点。对困惑感到抱歉。 NodeJS 中的应用程序属于具有 s3 端点的 VPC

标签: go amazon-s3 aws-lambda aws-sdk amazon-vpc


【解决方案1】:

此代码 sn-p 显示如何使用 aws-go-sdk 在 Lambda 函数中列出区域 us-east-1 的 S3 存储桶:

func listBuckets() {
    svc := s3.New(session.New(&aws.Config{Region: aws.String("us-east-1")}))
    buckets, err := svc.ListBuckets(nil)
    log.Printf("listBuckets: %q error=%v", buckets, err)
}

在这里找到完整的源代码:https://github.com/udhos/hellolambda/blob/master/main.go

【讨论】:

    【解决方案2】:

    要在没有互联网网关的情况下访问 VPC 中的 S3,您需要使用 S3 Endpoint

    【讨论】:

      猜你喜欢
      • 2017-02-08
      • 2019-06-04
      • 2020-09-28
      • 2019-09-18
      • 2021-03-09
      • 2021-04-05
      • 2016-01-11
      • 1970-01-01
      • 2020-11-30
      相关资源
      最近更新 更多