Rumah > pembangunan bahagian belakang > Golang > GO AWS SDK s3.GetObjectInput bukan jenis

GO AWS SDK s3.GetObjectInput bukan jenis

PHPz
Lepaskan: 2024-02-08 22:33:19
ke hadapan
960 orang telah melayarinya

GO AWS SDK s3.GetObjectInput 不是类型

editor php Yuzai menghadapi masalah apabila menggunakan AWS SDK bahasa GO, iaitu, s3.GetObjectInput bukan ralat jenis. Ralat ini sering ditemui apabila menggunakan bahasa GO untuk memanggil perkhidmatan AWS S3 Ini bermakna parameter jenis GetObjectInput dihantar secara salah. Terdapat banyak cara untuk menyelesaikan masalah ini, termasuk menyemak sama ada definisi jenis dalam kod dan hantaran parameter adalah betul. Sebelum menyelesaikan masalah ini, mari kita fahami dahulu jenis GetObjectInput dan peranannya dalam perkhidmatan AWS S3.

Kandungan soalan

Saya cuba menggunakan AWS's go sdk untuk memuat turun fail daripada s3, melakukan operasi yang serupa dengan apa yang dilakukan dalam contoh yang disediakan oleh 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")
}
Salin selepas log masuk

Apabila saya cuba membina projek, saya mendapat ralat: “github.com/aws/aws-sdk-go/service/s3”已导入但未使用 dan s3.getobjectinput 不是类型

Saya telah berlari pergi dapatkan pakej terpakai dan pergi mod kemas untuk mengemas fail go.mod saya. Nampaknya sangat gembira dengan barisan s3manager dan pakej aws lain, ia hanya mengeluh tentang rujukan s3.

Adakah saya kehilangan sesuatu yang mudah?

Penyelesaian

Pakej importgithub.com/aws/aws-sdk-go/service/s3的包名为s3,通过s3 := record.s3tersembunyi. Itulah sebabnya anda melihat ralat.

Penyelesaian yang dicadangkan ialah mengubah suai s3 := record.s3 以选择其他身份。例如,s3entity := record.s3。不要忘记将源代码中的 s3.object.key 替换为 s3entity.object.key .

Pilihan lain ialah memberi nama lain pada pakej yang diimport. Contohnya:

import awss3 "github.com/aws/aws-sdk-go/service/s3"
Salin selepas log masuk

Rujuk bahagian "Pengisytiharan dan Skop" dalam Spesifikasi:

Pengisytiharan mengikat pengecam bukan nol kepada pemalar, jenis, parameter jenis, pembolehubah, fungsi, label atau pakej. ...

go menggunakan blok untuk skop leksikal:

  • Skop pengecam yang diisytiharkan adalah blok alam semesta.
  • Menunjukkan bahawa skop pengecam untuk pemalar, jenis, pembolehubah atau fungsi (tetapi bukan kaedah) yang diisytiharkan di peringkat atas (di luar mana-mana fungsi) ialah blok pakej.
  • Skop nama pakej pakej yang diimport ialah blok fail fail yang mengandungi pengisytiharan import.
  • Skop pengecam yang mewakili penerima kaedah, parameter fungsi atau pembolehubah hasil ialah badan fungsi.
  • Menunjukkan bahawa julat pengecam yang diisytiharkan untuk parameter jenis fungsi atau penerima kaedah bermula selepas nama fungsi dan berakhir pada penghujung badan fungsi.
  • Julat pengecam yang mewakili parameter jenis sesuatu jenis bermula selepas nama jenis dan berakhir pada penghujung spesifikasi jenis.
  • Skop pengecam pemalar atau pembolehubah yang diisytiharkan dalam fungsi bermula dari penghujung constspec atau varspec (shortvardecl untuk pengisytiharan pembolehubah pendek) dan berakhir pada penghujung blok yang mengandungi paling dalam.
  • Skop pengecam jenis yang diisytiharkan di dalam fungsi bermula daripada pengecam dalam spesifikasi jenis dan berakhir di hujung blok paling dalam yang mengandungi.

Pengecam yang diisytiharkan dalam blok boleh diisytiharkan semula dalam blok dalaman. Apabila pengecam pengisytiharan dalaman berada dalam skop, ia mewakili entiti yang diisytiharkan oleh pengisytiharan dalaman .

Lihat juga Penyata Import.

Atas ialah kandungan terperinci GO AWS SDK s3.GetObjectInput bukan jenis. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan