gpt4 book ai didi

amazon-web-services - 从 AWS SES 发送电子邮件时出现凭据错误

转载 作者:IT王子 更新时间:2023-10-29 01:46:59 25 4
gpt4 key购买 nike

我正在尝试通过 Golang 中的 Amazon SES 发送电子邮件。以前,它使用以下代码在开发服务器(没有 SSL)上工作:

sess, err := session.NewSession(&aws.Config{
Region:aws.String(AwsRegion)},
)

/* Create an SES client in the session */
svc := ses.New(sess)

/* Assemble the email */
input := &ses.SendEmailInput{
Destination: &ses.Destination{
CcAddresses: []*string{
},
ToAddresses: []*string{
aws.String(request.EmailTo),
},
},
Message: &ses.Message{
Body: &ses.Body{
Html: &ses.Content{
Charset: aws.String(CharSet),
Data: aws.String(body),
},
},
Subject: &ses.Content{
Charset: aws.String(CharSet),
Data: aws.String(subject),
},
},
Source: aws.String("test<test@example.com>"),
}

/* Attempt to send the email */
result, err := svc.SendEmail(input)

最近我开始在生产服务器上工作(使用 SSL),同样的代码开始给我以下错误:

NoCredentialProviders: no valid providers in chain. Deprecated.
For verbose messaging see aws.Config.CredentialsChainVerboseErrors

我试过像这样向代码中添加凭据:

creds := credentials.NewCredentials(&ec2rolecreds.EC2RoleProvider{})

/* updated session block with credentials in aws config */
sess, err := session.NewSession(&aws.Config{
Region: aws.String(AwsRegion),
Credentials: creds})

但是这段代码不工作(甚至不编译)并给我以下错误:

/main.go:63:42: undefined: ec2rolecreds

但是我已经在代码中包含了凭据包。

我不知道如何向这段代码添加凭据,以便它也能在生产服务器上运行。我们将不胜感激。

最佳答案

第一个错误 (NoCredentialProviders) 不是代码问题,而是找不到任何凭据。根据this page它会按以下顺序自动检查:

  1. 环境变量。
  2. 共享凭据文件。
  3. 如果您的应用程序在 Amazon EC2 实例上运行,Amazon EC2 的 IAM 角色。

如果它在一个环境中工作而不在另一个环境中工作,我猜你有一个 IAM 角色,该角色具有通过实例配置文件与 EC2 实例关联的必要权限。

要显式设置凭证,试试这个:

staticCreds = credentials.NewStaticCredentials("<key-id>", "<secret>", "<session token>")
session, err = session.NewSession(&aws.Config{Credentials: staticCreds})

关于amazon-web-services - 从 AWS SES 发送电子邮件时出现凭据错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50829144/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com