AWS SQSをdotnetから利用するためのサンプルを作成しました。
基本的にはAmazon SQS 例 - AWS SDK for .NETを参照して作成したものです。時間の関係からデッドレターキューについては実装していません。
認証について
認証についてどうしているんだろうと気になったのですが、開発者であれば通常はユーザーディレクトリに.aws/credentials
を作成していると思います。それをAmazonSQSClient
を生成するときにFallbackCredentialsFactory
あたりで取得してくれます。
この辺はJavaのときはwithCredentialsのように認証チェーンを自分で定義したのですが、SQSではよしなに対応してくれるようです。
なお、AWS SDK for .NETでの認証に関するドキュメントはこちらになります。
認証周りは基本的に設定ファイルに記述しないことが前提になるので、ここは重要なところですよね。
SQSへの各処理について
SQSへの各処理については特に困るようなこともなく、普通に実装すればOKでした。Queueメッセージの登録はこんな感じでサクッとできますね。
SQSへのQueueメッセージの登録
[HttpPost("create")] public async Task<string> CreateMessage([FromBody] string message) { var queue = await QueueUrl.Build(_client,QueueName, _sqsConfigParam.QueueAttributes); var request = new SendMessageRequest { QueueUrl = queue.Value, MessageBody = message }; var response = await _client.SendMessageAsync(request); if (response.HttpStatusCode == HttpStatusCode.OK) { var result = new { StatusCode = "正常終了", Message = "SQSへメッセージの登録に成功しました。" }; return JsonConvert.SerializeObject(result); } else { var result = new { StatusCode = "エラー", Message = "SQSへメッセージの登録に失敗しました。" }; return JsonConvert.SerializeObject(result); } }
終わりに
これまで主にJavaではAWSをよく利用したのですが、dotnetからも同じ感じで利用できそうなので色々と利用していみたいと思います。