我正在使用aws中提供的API创建会话。
问题:如果我提供了错误的凭据,那么它也会创建一个会话。但是当我使用这个sesssion进行其他API调用时,它会引发一个错误。
在创建会话之前,有什么方法可以验证凭据吗?
会话创建方法:
变量credentials.NewStaticCredentials(access_key_id,MyCredentials = secret_access_key,"")
var sess = session.Must(session.NewSession(&aws.Config{
Credentials: MyCredentials,
Region: aws.String(hostRegion),
MaxRetries: aws.Int(3),
}))发布于 2020-04-30 14:21:15
你所说的“错误的证书”是什么意思?如果凭据是伪造的,那么每个电话都会失败。如果您的意思是您有不同的配置文件,那么使用您在~/..aws/凭据中指定的配置文件创建会话。例如,如果我在~/..aws/凭据中有以下内容:
[default]
aws_access_key_id = ...
aws_secret_access_key = ...
[goober]
aws_access_key_id = ...
aws_secret_access_key = ...在创建会话时,可以通过以下方式使用默认凭据:
sess := session.Must(session.NewSessionWithOptions(session.Options{
SharedConfigState: session.SharedConfigEnable,
}))但是,如果我想使用我的goober配置文件(来自https://docs.aws.amazon.com/sdk-for-go/api/aws/session/):
session.NewSessionWithOptions(session.Options{配置文件:"goober",})
发布于 2020-05-05 20:05:54
创建会话时,API不与服务器/服务对话。它所知道的就是你有一些价值观,就像我展示的那样。也许最简单的确认方法是在您知道存在的桶上使用S3 HeadBucket命令,因为它大约是我知道的开销最低的调用。
HTH,
道格
发布于 2021-08-27 07:13:31
要验证凭据,必须调用API。但是,您可以检查是否向应用程序提供了一组凭据,如下所示
// MustHaveCredentials looks for aws credentials using default credential provider chain as
// documented here https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/credentials.html
func MustHaveCredentials() {
_, err := defaults.CredChain(defaults.Get().Config, defaults.Get().Handlers).Get()
if err != nil {
log.Fatalf("no AWS credentials provided! %v", err)
}
}https://stackoverflow.com/questions/61222501
复制相似问题