无法从 EC2 实例元数据服务检索凭证



我正在尝试使用开发工具包通过 AWS SES API 发送电子邮件。

我的代码基于这里的官方文档:https://docs.aws.amazon.com/ses/latest/DeveloperGuide/examples-send-using-sdk.html

我正在await client.SendEmailAsync(sendRequest);并收到错误消息:

无法从 EC2 实例元数据服务检索凭证。

// initialization
var client = new AmazonSimpleEmailServiceClient(RegionEndpoint.USWest2);
var response = new SendEmailResponse();
// build email
var sendRequest = new SendEmailRequest
{
Source = ToAddress,
Destination = new Destination
{
ToAddresses =
new List<string> { ReceiverAddress }
},
Message = new Message
{
Subject = new Content(model.Subject),
Body = new Body
{
Html = new Content
{
Charset = "UTF-8",
Data = model.HtmlBody
},
}
},
};
// send async call to api
try
{
var response = await client.SendEmailAsync(sendRequest);
}
catch (Exception ex)
{
}

我已确认我的域已通过 AWS 控制台进行验证,并且它也显示为"已启用发送"。

我哪里出错了?

我想出了我问题的答案。

可以通过创建有权访问 SES 服务的 IAM 用户组和用户来解决此问题。

然后我编辑了我的代码以传递 AccessKeyId 和 SecretAccessKey。

var client = new AmazonSimpleEmailServiceClient(awsAccessKeyId, awsSecretAccessKey, RegionEndpoint.USWest2);
var response = new SendEmailResponse();

这是有效的。但是,为了更安全,建议使用共享凭据文件。

希望这对其他人有所帮助。

编辑:在 AWS SES SDK 的 V2 中,您需要将AmazonSimpleEmailServiceClient更改为AmazonSimpleEmailServiceV2Client

var client = new AmazonSimpleEmailServiceV2Client(awsAccessKeyId, awsSecretAccessKey, RegionEndpoint.USWest2);
var response = new SendEmailResponse();

如果有人来到这里,对从头开始配置 AWS 一无所知。只是添加一些细节:

安装 AWS Toolkit
  • (在我的情况下为 Visual Studio 扩展:> Extensions Manage Extensions>"AWS Toolkit for Visual Studio 2017 和 2019"( - https://docs.aws.amazon.com/toolkit-for-visual-studio/latest/user-guide/setup.html#install
  • 在 AWS 控制台中创建访问密钥(例如,下载为.csv带有私有密钥的文件( - https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html#Using_CreateAccessKey
  • 打开 AWS 资源管理器>视图并添加新账户配置文件。在这里,您可以从.csv导入凭据

之后,我可以在本地访问 AWS 服务

相关内容

  • 没有找到相关文章

最新更新