はじめに
AWS認定試験に必ず出題される SQS ですが、今まで触ったことがなかったので本日は S3 と連携させて SQS を試してみたいと思います。
使用するサービス
アーキテクチャ
手順
- S3 でバケットを作成
- SQS キューを作成
- S3 でイベント通知を作成
- 動作確認
1. S3 でバケットを作成
「20220807-sqs-test」というバケットを作成します。設定はデフォルトでOKです。
2. SQS キューを作成
「TestQueue」という SQS キューを作成します。
アクセスポリシーを以下のように設定します。
{ "Version": "2008-10-17", "Id": "__default_policy_ID", "Statement": [ { "Sid": "__owner_statement", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "SQS:*", "Resource": "arn:aws:sqs:ap-northeast-1:xxxxxxxxxxxxx:TestQueue", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:s3:*:*:20220807-sqs-test" } } } ] }
3. S3 でイベント通知を作成
イベント名とイベントタイプを設定し、作成した SQS キューを設定して「変更の保存」をクリックします。
4. 動作確認
バケットにファイルをアップロードします。
「メッセージを送受信」をクリックします。
「メッセージをポーリング」をクリックします。
メッセージが2件表示されます。
上のキューのメッセージ
アップロードしたファイルの情報などが記載されています。
{"Records":[{"eventVersion":"2.1","eventSource":"aws:s3","awsRegion":"ap-northeast-1","eventTime":"2022-08-07T14:33:59.870Z","eventName":"ObjectCreated:Put","userIdentity":{"principalId":"AWS:AIDAVMRY2N7OKTN33RYNV"},"requestParameters":{"sourceIPAddress":"60.95.0.122"},"responseElements":{"x-amz-request-id":"Q73VJ1CPJ64CKJQ0","x-amz-id-2":"jqP4VGy4ubSEOvB+XRCdTjWUJEuCkkWRyiRlxdKCNqjP8cTjRUg0JGhDYsW9RprSsQPqdnlOviWD11mpmynwSJzlRyzzT8rgCka5XEnLzq8="},"s3":{"s3SchemaVersion":"1.0","configurationId":"SQS-Event","bucket":{"name":"20220807-sqs-test","ownerIdentity":{"principalId":"A2B5KBXGR14B9R"},"arn":"arn:aws:s3:::20220807-sqs-test"},"object":{"key":"hane.jpg","size":9846,"eTag":"ad1cdeed43375dca5b5e892be0968525","sequencer":"0062EFCD57CFFC5419"}}}]}
下のキューのメッセージ
こちらは S3 からの通知など概要レベルの情報が記載されています。
{"Service":"Amazon S3","Event":"s3:TestEvent","Time":"2022-08-07T14:33:31.875Z","Bucket":"20220807-sqs-test","RequestId":"0D8YVTX0QRFW78X3","HostId":"xj8sYZZALIXycdCYK54KnulIng2R3MMjMqjMAMM3gCQ5UqsHcL46nXX3FZ8x/Wpg4Duwz1IHXGY="}
さいごに
はじめて SQS を使用してみましたが設定は簡単にできました。何となく理解していたものが実際にサービスを使用することで理解が深まった気がします。次は SQS と Lambda の連携を試してみようと思います。