
php小编鱼仔在使用GO语言的AWS SDK时,遇到了一个问题,即s3.GetObjectInput不是类型的错误。这个错误在使用GO语言调用AWS S3服务时经常遇到,它意味着GetObjectInput类型的参数传递错误。解决这个问题的方法有很多,包括检查代码中的类型定义、参数传递是否正确等。在解决这个问题之前,我们先了解一下GetObjectInput是什么类型,以及它在AWS S3服务中的作用。
我尝试使用 aws 的 go sdk 从 s3 下载文件,执行类似于 aws 提供的示例中所做的操作:https://docs.aws.amazon.com/sdk-for-go /api/service/s3/
package main
import (
"context"
"fmt"
"io/ioutil"
"os"
"path/filepath"
"github.com/aws/aws-sdk-go/service/s3"
"github.com/aws/aws-sdk-go/service/s3/s3manager"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-lambda-go/events"
"github.com/aws/aws-lambda-go/lambda"
"github.com/davidbyttow/govips/v2/vips"
)
func handler(ctx context.Context, s3Event events.S3Event) {
for _, record := range s3Event.Records {
s3 := record.S3
sess, err := session.NewSession(&aws.Config{
Region: aws.String("<REGION>"),
})
if err != nil {
exitErrorf("cannot create s3 session, %v", err)
}
downloader := s3manager.NewDownloader(sess)
file, err := os.Create(filepath.Base(s3.Object.Key))
if err != nil {
exitErrorf("DownloadFile:::Unable to open file, %v", err)
}
defer file.Close()
numBytes, err := downloader.Download(file,
&s3.GetObjectInput{
Bucket: aws.String("<BUCKET>"),
Key: aws.String(s3.Object.Key),
})
if err != nil {
exitErrorf("Unable to download item %q, %v", s3.Object.Key, err)
}
fmt.Println("Downloaded", file.Name(), numBytes, "bytes")
}当我尝试构建项目时,出现错误:
“github.com/aws/aws-sdk-go/service/s3”已导入但未使用
和
s3.getobjectinput 不是类型
我已经运行了 go get on 使用的软件包和 go mod tidy 来整理我的 go.mod 文件。它似乎对 s3manager 行和其他 aws 软件包非常满意,它只是抱怨 s3 引用。
我缺少一些简单的东西吗?
导入的包github.com/aws/aws-sdk-go/service/s3的包名为s3,通过s3 := record.s3隐藏。这就是您看到错误的原因。
建议的解决方案是修改 s3 := record.s3 以选择其他身份。例如,s3entity := record.s3。不要忘记将源代码中的 s3.object.key 替换为 s3entity.object.key 。
另一个选项是为导入的包指定另一个名称。例如:
import awss3 "github.com/aws/aws-sdk-go/service/s3"
参考规范的“声明和范围”部分:
声明将非空标识符绑定到常量、类型、类型参数、变量、函数、标签或包。 ...
go 使用块进行词法作用域:
在块中声明的标识符可以在内部块中重新声明。当内部声明的标识符在范围内时,它表示内部声明所声明的实体。
另请参阅导入声明。
以上就是GO AWS SDK s3.GetObjectInput 不是类型的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号