2 votes

ne peut pas utiliser &cfg (valeur de type *aws.Config) comme valeur *aws.Config en argument de session.NewSession

J'essaie d'obtenir une nouvelle session AWS comme celle-ci :

cfg, err := config.LoadDefaultConfig(context.TODO())
if err != nil {
    log.Fatal(err)
}

awsSession, err := session.NewSession(&cfg)
if err != nil {
    log.Fatal(err)
}

Mais je reçois une erreur déroutante (du moins pour moi) :

ne peut pas utiliser &cfg (valeur de type *aws.Config) comme valeur *aws.Config en argument de session.NewSession

La signature de NewSession() ressemble à ça :

func NewSession(cfgs ...*aws.Config) (*Session, error)

Est-ce que le fait que NewSession() une fonction variadique joue-t-elle un rôle dans la production de cette erreur ?

Pourquoi l'erreur disparaît-elle si je passe un littéral aws.Config{} comme ça ?

awsSession, err := session.NewSession(&aws.Config{})

3voto

TXV Points 215

Vous mélangez les versions du SDK AWS.

Le paquet session existe dans AWS SDK v1 avec le chemin d'importation github.com/aws/aws-sdk-go/aws/session et attend des arguments de type "github.com/aws/aws-sdk-go/aws".Config . Il n'existe pas dans AWS SDK v2.

Le site config à partir duquel vous chargiez vos configurations est à partir du SDK v2 d'AWS avec le chemin d'importation github.com/aws/aws-sdk-go-v2/config donc LoadDefaultConfigs renvoie à "github.com/aws/aws-sdk-go-v2/config".Config .

Ce ne sont pas le même type et le compilateur vous le dit (bien qu'avec un message d'erreur partiellement utile).

Vous devez maintenir la cohérence des versions de votre SDK AWS. Avec la version 2, vous êtes censé instancier les services AWS spécifiques avec la configuration, au lieu d'une session. Par exemple s3.New(&cfg) .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X