之前我使用过环境变量并且工作正常。
现在我将配置变量迁移到单个文件中,我有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:请求中包含的安全令牌无效。
如何正确地将我的密钥注入aws sdk调用?
答案 0 :(得分:16)
尝试重新排序你的args,以便ACCESS_KEY是第一个参数,而SECRET_KEY是第二个参数:
router.post('/delete',function (req,res) {
var providerId = req.body.providerId;
model.Shops.findOneAndUpdate(
{ "providerId": providerId },
{ "$set": { "products": [] } },
{ "new": true }
function(err, doc) {
console.log(doc) // returns doc with empty products here...
res.json({"msg": "Products deleted"});
}
);
});
尝试添加该区域:
creds := credentials.NewStaticCredentials(conf.AWS_ACCESS_KEY_ID, conf.AWS_SECRET_ACCESS_KEY, "")
答案 1 :(得分:2)
此外,如果您还不知道,SDK允许在.aws/config
下使用共享配置。您可以将值放在那里,然后将环境变量AWS_SDK_LOAD_CONFIG
设置为truthy值以加载共享配置。一个示例共享配置如下所示:
[default]
aws_access_key_id = AKID
aws_secret_access_key = SECRET
然后跑步:
AWS_SDK_LOAD_CONFIG=true go run main.go
答案 2 :(得分:1)
或者您也可以临时设置环境变量。
{{1}}
答案 3 :(得分:0)
使用此常规服务连接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", ""),
}))
}