登录
首页 >  Golang >  Go问答

如何排查 AWS 开发工具包中的 MissingAuthenticationTokenException

来源:stackoverflow

时间:2024-04-14 12:09:33 310浏览 收藏

各位小伙伴们,大家好呀!看看今天我又给各位带来了什么文章?本文标题《如何排查 AWS 开发工具包中的 MissingAuthenticationTokenException》,很明显是关于Golang的文章哈哈哈,其中内容主要会涉及到等等,如果能帮到你,觉得很不错的话,欢迎各位多多点评和分享!

问题内容

我正在编写一个 lambda 来在 aws secret manager 中轮换密钥。但是当我尝试拨打电话时,我从 sdk 收到错误。我正在使用的代码:

import (
    "context"
    "fmt"
    "github.com/aws/aws-sdk-go-v2/aws"
    "github.com/aws/aws-sdk-go-v2/service/secretsmanager"
)

func checksecret(ctx context.context, secretname string) error {
    awsconfig := aws.newconfig()
    awsconfig.region = "us-east-1"
    client := secretsmanager.newfromconfig(*awsconfig)

    resp, err := client.describesecret(ctx, &secretsmanager.describesecretinput{secretid: &secretname})
    if err != nil {
        fmt.println("err describing secret: ", err)
        return err
    }
    return nil
}

调用此函数返回:

operation error secrets manager: describesecret, 
https response error statuscode: 400, 
requestid: b4023b03-6455-41e6-be63-639bff8ec56c, 
api error missingauthenticationtokenexception: missing authentication token

但是,如果我使用 aws cli 调用相同的函数,它就会起作用:

> aws secretsmanager describe-secret --secret-id testSecret
{
    "ARN": "arn:aws:secretsmanager:us-east-1:xxxxx:secret:testSecret-eOGWj5",
    "Name": "testSecret",
    "Description": "Test secret to experiment with rotation.",
    "RotationEnabled": true,
    "RotationLambdaARN": "arn:aws:lambda:us-east-1:xxxxx:function:secretRotator",
    "LastChangedDate": "2022-09-14T16:09:32.485000-05:00",
    "LastAccessedDate": "2022-09-13T19:00:00-05:00",
    "Tags": [],
    "VersionIdsToStages": {
        "0efac0f5-e7d8-4519-8437-0a1c5f302785": [
            "AWSCURRENT"
        ],
        "b7a050c8-69b2-46cd-aba7-7e2927320dad": [
            "AWSPENDING"
        ]
    },
    "CreatedDate": "2022-09-14T15:25:25.246000-05:00"
}

所以我的 iam 规则看起来是正确的。我在本地运行此代码,以便 aws cli 和代码使用相同的 aws 凭证。

到目前为止,谷歌搜索只能找到有关此错误的 api gateway 的故障排除。


正确答案


该问题可能与 aws.newconfig() 未加载可能包含丢失的身份验证令牌的环境变量有关。

请尝试将您的代码替换为以下代码:

import (
    "context"
    "fmt"

    "github.com/aws/aws-sdk-go-v2/config"
    "github.com/aws/aws-sdk-go-v2/service/secretsmanager"
)

func checkSecret(ctx context.Context, secretName string) error {
    awsConfig := config.LoadDefaultConfig(ctx, config.WithRegion("us-east-1"))
    client := secretsmanager.NewFromConfig(*awsConfig)

    resp, err := client.DescribeSecret(ctx, &secretsmanager.DescribeSecretInput{SecretId: &secretName})
    if err != nil {
        fmt.Println("ERR Describing Secret: ", err)
        return err
    }
    return nil
}

以上就是《如何排查 AWS 开发工具包中的 MissingAuthenticationTokenException》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>