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

时间:2018-06-12 21:29:40

标签: c# amazon-web-services email .net-core amazon-ses

我尝试使用SDK通过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控制台验证,并且还显示为&#34;已启用发送&#34;。

我哪里错了?

2 个答案:

答案 0 :(得分:1)

我想出了我的问题的答案。

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

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

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

这很有效。但是为了更安全,建议使用Shared Credentials File

希望这有助于其他人。

答案 1 :(得分:1)

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

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