我正在嘗試像這樣獲得一個新的 AWS 會話:
cfg, err := config.LoadDefaultConfig(context.TODO())
if err != nil {
log.Fatal(err)
}
awsSession, err := session.NewSession(&cfg)
if err != nil {
log.Fatal(err)
}
但我得到一個令人困惑的(至少對我而言)錯誤:
不能在 session.NewSession 的引數中使用 &cfg(*aws.Config 型別的值)作為 *aws.Config 值
的簽名NewSession()看起來像這樣:
func NewSession(cfgs ...*aws.Config) (*Session, error)
可變引數函式這一事實是否NewSession()在產生此錯誤中起任何作用?
如果我傳遞這樣的文字,為什么錯誤會消失aws.Config{}?
awsSession, err := session.NewSession(&aws.Config{})
uj5u.com熱心網友回復:
您正在混合 AWS 開發工具包版本。
該包session存在于 AWS SDK v1 中,帶有匯入路徑github.com/aws/aws-sdk-go/aws/session,并且需要型別為 的引數"github.com/aws/aws-sdk-go/aws".Config。它在 AWS SDK v2 中不存在。
config相反,您從中加載配置的包來自 AWS SDK v2 并帶有匯入路徑,github.com/aws/aws-sdk-go-v2/config因此LoadDefaultConfigs回傳"github.com/aws/aws-sdk-go-v2/config".Config.
這些不是同一型別,編譯器會告訴您(盡管有部分有用的錯誤訊息)。
您必須保持 AWS 開發工具包版本一致。使用 v2,您應該使用配置而不是會話來實體化特定的 AWS 服務。例如s3.New(&cfg).
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/437963.html
上一篇:Terraform將負載均衡器偵聽器附加到ElasticBeanstalk負載均衡器。不是有效的負載均衡器ARN
