web-dev-qa-db-ja.com

EC2インスタンスメタデータサービスから認証情報を取得できませんでした

SDKを使用してAWSSESAPI経由でメールを送信しようとしています。

私はここの公式ドキュメントに基づいてコードを作成しました: 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コンソールで確認され、「送信可能」と表示されていることを確認しました。

どこが間違っているのですか?

5
TidyDev

私は自分の質問に対する答えを見つけました。

この問題は、IAMユーザーグループとSESサービスにアクセスできるユーザーを作成することで解決できます。

次に、AccessKeyIdとSecretAccessKeyを渡すようにコードを編集しました。

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

これは機能しています。ただし、より安全にするために、 共有資格情報ファイル を使用することをお勧めします。

これが他の誰かに役立つことを願っています。

1
TidyDev