以前に環境変数を使用しましたが、うまくいきました。
現在、設定変数を1つのファイルに移行しており、このファイルから読み込まれるそれぞれの値を含むAWS_SECRET_ACCESS_KEY変数とAWS_ACCESS_KEY_ID変数があります。
私はこのコードを試しましたが、エラーを受け取りました:
creds := credentials.NewStaticCredentials("123", conf.AWS_SECRET_ACCESS_KEY, conf.AWS_ACCESS_KEY_ID)
sess, err := session.NewSession(&aws.Config{Credentials: creds})
ここにエラーがあります
InvalidClientTokenId:リクエストに含まれているセキュリティトークンが無効です。
キーをawssdk呼び出しに適切に挿入するにはどうすればよいですか?
ACCESS_KEYが最初のパラメーターでSECRET_KEYが2番目のパラメーターになるように、引数を並べ替えてみてください。
creds := credentials.NewStaticCredentials(conf.AWS_ACCESS_KEY_ID, conf.AWS_SECRET_ACCESS_KEY, "")
リージョンも追加してみてください。
sess, err := session.NewSession(&aws.Config{
Region: aws.String("us-west-2"),
Credentials: credentials.NewStaticCredentials(conf.AWS_ACCESS_KEY_ID, conf.AWS_SECRET_ACCESS_KEY, ""),
})
さらに、知らなかった場合、SDKでは.aws/config
の下で共有構成を使用できます。そこに値を入力してから、環境変数AWS_SDK_LOAD_CONFIG
をtrue値に設定して、共有構成をロードできます。共有設定の例は次のようになります。
[default]
aws_access_key_id = AKID
aws_secret_access_key = SECRET
次に実行します:
AWS_SDK_LOAD_CONFIG=true go run main.go
この汎用サービスを使用してSDKクライアントを接続します
var awsSession *session.Session
func init() {
initializeAwsSession()
}
func initializeAwsSession() {
awsSession = session.Must(session.NewSession(&aws.Config{
Region: aws.String("ap-southeast-1"),
Credentials: credentials.NewStaticCredentials("YOUR_ACCESS_KEY","YOUR SECRET_KEY", ""),
}))
}
または、環境変数を一時的に設定することもできます。
package main
import (
"fmt"
"os"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/s3/s3manager"
)
const (
AccessKeyId = "XXXXXXXXXXXXXXXXXX"
SecretAccessKey = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
Region = "eu-west-1"
Bucket = "XXXXX-XXXX-XXX"
)
func main() {
os.Setenv("AWS_ACCESS_KEY_ID", AccessKeyId)
os.Setenv("AWS_SECRET_ACCESS_KEY", SecretAccessKey)
filename := os.Args[1]
file, err := os.Open(filename)
if err != nil {
fmt.Println("Failed to open file", filename, err)
os.Exit(1)
}
defer file.Close()
conf := aws.Config{Region: aws.String(Region)}
sess := session.New(&conf)
svc := s3manager.NewUploader(sess)
fmt.Println("Uploading file to S3...")
result, err := svc.Upload(&s3manager.UploadInput{
Bucket: aws.String(Bucket),
Key: aws.String(filepath.Base(filename)),
Body: file,
})
if err != nil {
fmt.Println("error", err)
os.Exit(1)
}
}