如何使用变量的凭据运行AWS SDK?

时间:2017-01-09 09:18:17

标签: amazon-web-services go aws-sdk aws-sdk-go

之前我使用过环境变量并且工作正常。

现在我将配置变量迁移到单个文件中,我有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调用?

4 个答案:

答案 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", ""),
    }))
}