ということをやったので書きます。いろいろ調べたらAWS SDK for .NETとかAWS Toolkit for Visual Studioをインストールしろとか出てきますが、今回やる範囲ではNugetAWSSDKをインストールするだけでよいです。というかAWS SDK for .NETNuget版がAWSSDKだと思います。たぶん…

なお、公式の手順はこちら

準備



  • 前述の通り、NugetAWSSDKをインストールします
  • AWSSQSにアクセスできるIAMユーザーを作成します
    • IAMユーザーのIDとアクセスキーを控えます

署名バージョン4でアクセスうんちゃらとか出てきますが よくわからないので 今回はこのIAMユーザーのIDとアクセスキーでAWS SQSにアクセスします。

コード


AWS SQSのメッセージの操作はNugetでインストールしたAWSSDKを使用します。
以下、コードです。解説はコード内に記述。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
using System;
using Amazon;
using Amazon.SQS;
using Amazon.SQS.Model;

namespace AwsSqsSample
{
class Program
{
static void Main(string[] args)
{

//SQSにアクセスできるIAMユーザーのIDとキーとリージョン
IAmazonSQS sqsClient = new AmazonSQSClient("IAM Users Access Key Id", "IAM Users Secret Access Key", RegionEndpoint.USWest2);

try
{
var sqsRequest = new CreateQueueRequest();
//アクセスするSQSキューを指定
sqsRequest.QueueName = "QueueName";
var createQueueResponse = sqsClient.CreateQueue(sqsRequest);
var queueUrl = createQueueResponse.QueueUrl;

//メッセージ取得用のインスタンス
var receiveMssageRequest = new ReceiveMessageRequest();
receiveMssageRequest.QueueUrl = queueUrl;
receiveMssageRequest.MaxNumberOfMessages = 10;

//SQSからメッセージを取得
var responsMessage = sqsClient.ReceiveMessage(receiveMssageRequest);

//削除操作用のインスタンス
var deleteMessageRequest = new DeleteMessageRequest();
deleteMessageRequest.QueueUrl = queueUrl;

//取得したメッセージの取り出し
foreach (var message in responsMessage.Messages)
{
//この辺で取得したメッセージをローカルに保存するなりDBにぶち込むなりする

//取得完了したメッセージを削除する
deleteMessageRequest.ReceiptHandle = message.ReceiptHandle;
sqsClient.DeleteMessage(deleteMessageRequest);
}
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
}

あとは、取得したメッセージを煮るなり焼くなりするだけです。