我正在使用 Amazon Kinesis 和適用于 AWS 的 Go SDK,但出現錯誤。
這是我的代碼:
package main
import (
"math/rand"
"strings"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/session"
_kinesis "github.com/aws/aws-sdk-go/service/kinesis"
)
func main() {
session, err := session.NewSession(&aws.Config{
Region: aws.String("us-east-1"),
})
handleErr(err)
kinesis := _kinesis.New(session)
laugh := strings.Builder{}
laughingSounds := []string{"haha", "hoho", "hehe", "hehehe", "*snicker*"}
for i := 0; i < 10; i {
laugh.WriteString(laughingSounds[rand.Intn(len(laughingSounds))])
}
_, err = kinesis.PutRecord(&_kinesis.PutRecordInput{
Data: []byte(laugh.String()),
PartitionKey: aws.String("laughs"),
StreamName: aws.String("laughs"),
})
handleErr(err)
}
func handleErr(err error) {
if err != nil {
panic(err)
}
}
當我運行它時,我得到一個錯誤:
panic: UnrecognizedClientException: The security token included in the request is invalid.
status code: 400, request id: dc139793-cd38-fb30-86a3-f92b6410e1c7
goroutine 1 [running]:
main.handleErr(...)
C:/Users/####/----/main.go:5
main.main()
C:/Users/####/----/main.go:34 0x3ac
exit status 2
我跑了aws configure:
$ aws configure
AWS Access Key ID [None]: ####
AWS Secret Access Key [None]: ####
Default region name [None]: us-east-1
Default output format [None]:
并且使用正確的配置創建了 C:/users/####/.aws/credentials 檔案。但我的程式仍然無法成功執行。
我試圖設定一個環境變數,但無濟于事。
$ $env:aws_access_key_id="####"
版本資訊:
$ pwsh -v
PowerShell 7.2.2
$ aws -v
aws-cli/2.4.27 Python/3.8.8 Windows/10 exe/AMD64 prompt/off
作業系統:Windows 11
uj5u.com熱心網友回復:
我在 GoDoc 中找到了答案,我只需要更改配置設定并使用NewSessionWithOptions:
session, err := session.NewSessionWithOptions(session.Options{
Config: aws.Config{
Region: aws.String("<your region>"),
}, SharedConfigState: session.SharedConfigEnable,
})
確保aws configure使用正確的憑據運行(或者甚至只是手動創建~/.aws/credentials檔案),否則這將不起作用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/448504.html
