私はC#アプリケーションを持っています。これはAmazon SESを使って電子メールを送信しています。私がやりたいことは、電子メールにバウンスや返信をしたときに、ラムダ関数を使ってアプリケーションのエンドポイントを呼び出すことです。私は次のC#ラムダ関数を持っていますが、2つの問題があります。 1.私は失敗を特定する方法を理解できません。 2.ユーザーからのメッセージのテキストが見つかりません。C#ラムダでSESがバウンスして苦情を処理する
public async Task FunctionHandler(Amazon.Lambda.SimpleEmailEvents.SimpleEmailEvent emailEvent, ILambdaContext context)
{
foreach (Amazon.Lambda.SimpleEmailEvents.SimpleEmailEvent.SimpleEmailRecord record in emailEvent.Records)
{
Amazon.Lambda.SimpleEmailEvents.SimpleEmailEvent.SimpleEmailService sesRecord = record.Ses;
LambdaLogger.Log($"Processing message {sesRecord.Mail.MessageId}.");
using (HttpClient client = new HttpClient())
{
try
{
string messageId = sesRecord.Mail.MessageId;
string to = string.Empty;
if (sesRecord.Mail.Destination != null && sesRecord.Mail.Destination.Count > 0)
{
to = sesRecord.Mail.Destination.First();
}
StringContent requestContent = new StringContent(JsonConvert.SerializeObject(new { MessageId = messageId, To = to }), Encoding.UTF8, "application/json");
HttpResponseMessage response = await client.PostAsync("http://xxxx", requestContent);
response.EnsureSuccessStatusCode();
string stringResponse = await response.Content.ReadAsStringAsync();
}
catch (HttpRequestException e)
{
Console.WriteLine($"Request exception: {e.Message}");
}
}
}
}
これは正しいアプローチではありませんか?私はこれを達成するためにSESとSNSを使用することについても読んでいますが、可能であれば別のレイヤーを追加することは避けたいと思います。
私はその文書を見て、それを何度も読んだ。私は別のシステム(SQS)の複雑さを避けようとしています。それが私が取らなければならないルートなら、私はラムダが何のために誤解していない限り、ラムダは良い選択肢のように見えた。 – Nick