やることはタイトルまんま。まぁAWSのドキュメント見たらあるのだが、けっこうあちこちに情報も散らばっていて、色々と見て回ることになったので、参考URLを残しつつメモ。Webコンソールから操作すること前提。
SQS側の設定
S3 バケットのイベント通知を有効化および設定する方法 – Amazon Simple Storage Service
キューを作成し、「アクセス許可」タブより「ポリシードキュメントの編集(高度)」より以下のように編集。
{
"Version": "2012-10-17",
"Id": "適当なID",
"Statement": [
{
"Sid": "example-statement-ID",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "SQS:SendMessage",
"Resource": "作成したキューのARN",
"Condition": {
"ArnLike": {
"aws:SourceArn": "arn:aws:s3:*:*:通知元のS3のバケット名"
}
}
}
]
}
こういう編集するところを明示する時、日本語使うと便利だよね。
S3側の設定
チュートリアル例: バケットを通知用に設定する (メッセージの宛先: SNS トピックおよび SQS キュー) – Amazon Simple Storage Service
Amazon S3 イベント通知の設定 – Amazon Simple Storage Service
Web通知元にしたいバケットにアクセスして、「プロパティ」タブより下部の詳細設定の「イベント」を選択、「通知の追加」。
適当な「名前」をつけて、「イベント」は「すべてのオブジェクト作成イベント」、プレフィックス、サフィックスは任意。送信先として、作成した受け側のSQSのキューを選択。で、「保存」。この時権限(上のSQSでの設定)がないとエラーが出る。
通知の内容
この状態でS3にてファイルを作成すると、その内容がSQSに通知される。ちなみに通知内容は、時間とObjectのkey、すなわちファイル名、ファイルの中身まではわからない。まぁ必ずしもテキストファイルじゃないしそりゃそうか。
以上。
関連記事
aws の記事
- [2020年10月13日] AWS Lambda (Python 3.8)から Amazon Elasticsearchを使う(LambdaはSAMで)
- [2020年10月12日] AWS SAM CLIでSNSからLambdaを起動する(Python 3.8)、S3からSNSに通知する
- [2020年5月13日] Grafana on EC2 で Let’s Encrypt 使ってSSL
- [2020年4月28日] httpでPOSTする受け口をSAM CLI + API Gateway + Lambdaで作る
- [2020年4月26日] DynamoDBで多対多のテーブル設計
- ---本記事---
- [2019年6月12日] とにかくCloudSearch + boto3で全文検索するために学習する
- [2019年4月21日] DynamoDBのテーブル設計をするとき、自分に問いかけていること
- [2019年4月16日] S3 + CloudFrontでS3にファイルをアップロードしたら自動でキャッシュをクリアする
- [2019年3月27日] DynamoDBにboto3でトランザクションな書き込み
- [2019年1月22日] AWSのAPI Gateway + LambdaによるWeb APIでクエリ文字列を用いるcloudformation用テンプレートファイルの記述(swagger形式)
スポンサーリンク