Table des matières
Contenu de la question
Solution
Maison développement back-end Golang GO AWS SDK s3.GetObjectInput n'est pas un type

GO AWS SDK s3.GetObjectInput n'est pas un type

Feb 08, 2024 pm 10:33 PM
go语言 作用域

GO AWS SDK s3.GetObjectInput 不是类型

L'éditeur php Yuzai a rencontré un problème lors de l'utilisation du SDK AWS du langage GO, c'est-à-dire que s3.GetObjectInput n'est pas une erreur de type. Cette erreur se produit souvent lors de l'utilisation du langage GO pour appeler les services AWS S3. Cela signifie que les paramètres de type GetObjectInput sont transmis de manière incorrecte. Il existe de nombreuses façons de résoudre ce problème, notamment en vérifiant si la définition du type dans le code et la transmission des paramètres sont correctes. Avant de résoudre ce problème, comprenons d'abord quel est le type GetObjectInput et son rôle dans le service AWS S3.

Contenu de la question

J'essaie d'utiliser le SDK go d'AWS pour télécharger un fichier depuis s3, en effectuant des opérations similaires à ce qui est fait dans l'exemple fourni par AWS : https://docs.aws.amazon.com/sdk-for- aller/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")
}
Copier après la connexion

Lorsque j'essaie de construire le projet, j'obtiens l'erreur : “github.com/aws/aws-sdk-go/service/s3”已导入但未使用 et s3.getobjectinput 不是类型

J'ai exécuté Go Get sur les packages utilisés et Go Mod Tidy pour ranger mes fichiers go.mod. Il semble parfaitement satisfait de la gamme s3manager et des autres packages AWS, il se plaint simplement des références s3.

Est-ce que j'ai raté quelque chose de simple ?

Solution

Le package importégithub.com/aws/aws-sdk-go/service/s3的包名为s3,通过s3 := record.s3est masqué. C'est pourquoi vous voyez l'erreur.

La solution suggérée est de modifier s3 := record.s3 以选择其他身份。例如,s3entity := record.s3。不要忘记将源代码中的 s3.object.key 替换为 s3entity.object.key .

Une autre option consiste à donner un autre nom au package importé. Par exemple :

import awss3 "github.com/aws/aws-sdk-go/service/s3"
Copier après la connexion

Référez-vous à la section « Déclarations et champ d'application » du Spécification :

La déclaration lie un identifiant non nul à une constante, un type, un paramètre de type, une variable, une fonction, une étiquette ou un package. ...

go utilise des blocs pour la portée lexicale :

  • La portée des identifiants prédéclarés est le bloc univers.
  • Indique que la portée d'un identifiant pour une constante, un type, une variable ou une fonction (mais pas une méthode) déclarée au niveau supérieur (en dehors de toute fonction) est le bloc de package.
  • La portée du nom de package d'un package importé est le bloc de fichier du fichier contenant la déclaration d'importation.
  • La portée d'un identifiant représentant un récepteur de méthode, un paramètre de fonction ou une variable de résultat est le corps de la fonction.
  • Indique que la plage d'identifiants déclarés pour les paramètres de type de fonction ou les récepteurs de méthode commence après le nom de la fonction et se termine à la fin du corps de la fonction.
  • La plage d'identifiants représentant les paramètres de type d'un type commence après le nom du type et se termine à la fin de la spécification de type.
  • La portée d'un identifiant de constante ou de variable déclaré dans une fonction commence à la fin du constspec ou varspec (shortvardecl pour les déclarations de variables courtes) et se termine à la fin du bloc contenant le plus interne.
  • La portée d'un identifiant de type déclaré à l'intérieur d'une fonction commence à partir de l'identifiant dans la spécification de type et se termine à la fin du bloc conteneur le plus interne.

Les identifiants déclarés dans les blocs peuvent être redéclarés dans les blocs internes. Lorsqu'un identifiant déclaré en interne est dans la portée, il représente l'entité déclarée par la déclaration interne .

Voir également Déclaration d'importation.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Où trouver la courte de la grue à atomide atomique
1 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Quelles bibliothèques sont utilisées pour les opérations du numéro de point flottantes en Go? Quelles bibliothèques sont utilisées pour les opérations du numéro de point flottantes en Go? Apr 02, 2025 pm 02:06 PM

La bibliothèque utilisée pour le fonctionnement du numéro de point flottante dans le langage go présente comment s'assurer que la précision est ...

Quelles bibliothèques de GO sont développées par de grandes entreprises ou fournies par des projets open source bien connus? Quelles bibliothèques de GO sont développées par de grandes entreprises ou fournies par des projets open source bien connus? Apr 02, 2025 pm 04:12 PM

Quelles bibliothèques de GO sont développées par de grandes entreprises ou des projets open source bien connus? Lors de la programmation en Go, les développeurs rencontrent souvent des besoins communs, ...

Quel est le problème avec le fil de file d'attente dans GO's Crawler Colly? Quel est le problème avec le fil de file d'attente dans GO's Crawler Colly? Apr 02, 2025 pm 02:09 PM

Problème de threading de file d'attente dans Go Crawler Colly explore le problème de l'utilisation de la bibliothèque Crawler Crawler dans le langage Go, les développeurs rencontrent souvent des problèmes avec les threads et les files d'attente de demande. � ...

Dans Go, pourquoi les chaînes d'impression avec println et string () ont-elles des effets différents? Dans Go, pourquoi les chaînes d'impression avec println et string () ont-elles des effets différents? Apr 02, 2025 pm 02:03 PM

La différence entre l'impression de chaîne dans le langage go: la différence dans l'effet de l'utilisation de fonctions println et string () est en Go ...

Pourquoi est-il nécessaire de passer des pointeurs lors de l'utilisation de bibliothèques Go et Viper? Pourquoi est-il nécessaire de passer des pointeurs lors de l'utilisation de bibliothèques Go et Viper? Apr 02, 2025 pm 04:00 PM

GO POINTER SYNTAXE ET ATTENDRE DES PROBLÈMES DANS LA BIBLIOTHÈQUE VIPER Lors de la programmation en langage Go, il est crucial de comprendre la syntaxe et l'utilisation des pointeurs, en particulier dans ...

Quelle est la différence entre la structure de définition des mots clés `var` et« type »dans le langage Go? Quelle est la différence entre la structure de définition des mots clés `var` et« type »dans le langage Go? Apr 02, 2025 pm 12:57 PM

Deux façons de définir les structures dans le langage GO: la différence entre les mots clés VAR et le type. Lorsque vous définissez des structures, GO Language voit souvent deux façons d'écrire différentes: d'abord ...

Pourquoi toutes les valeurs deviennent-elles le dernier élément lors de l'utilisation de la plage dans le langage GO pour traverser les tranches et stocker des cartes? Pourquoi toutes les valeurs deviennent-elles le dernier élément lors de l'utilisation de la plage dans le langage GO pour traverser les tranches et stocker des cartes? Apr 02, 2025 pm 04:09 PM

Pourquoi l'itération de la carte dans GO fait-elle que toutes les valeurs deviennent le dernier élément? En langue go, face à des questions d'entrevue, vous rencontrez souvent des cartes ...

GO Language Slice: Pourquoi ne signale-t-il pas une erreur lorsque l'indice de tranche à élément unique 1 interception? GO Language Slice: Pourquoi ne signale-t-il pas une erreur lorsque l'indice de tranche à élément unique 1 interception? Apr 02, 2025 pm 02:24 PM

GO Language Slice Index: Pourquoi une tranche à élément unique intercepte-t-elle de l'index 1 sans erreur? En langue GO, les tranches sont une structure de données flexible qui peut se référer au bas ...

See all articles