【AWS】S3にアップロードされた画像にLambdaでタグをつける
Lambdaを使ってS3にアップロードされた画像ファイルへタグをつけます。タグはファイルアップロードが完了したタイミングでつけます。
Lambdaの作成
Lambda関数を以下のように作成します。Lambdaを起動するトリガーをS3、イベントタイプをObjectCreatedとします。
ハンドラ関数の引数eventからアップロードされたオブジェクトのキーを取得し、そのキーを使ってPutObjectTaggingを実行します。
import json
import boto3
def lambda_handler(event, context):
s3 = boto3.client("s3")
key = event['Records'][0]['s3']['object']['key']
s3.put_object_tagging(
Bucket = 'xxxxxxx',
Key = key,
Tagging = {
'TagSet': [
{
'Key': 'uploaded',
'Value': 'ok'
}
]
})
return {
'statusCode': 200,
'body': json.dumps('Success!')
}
トリガーの設定は以下のようになります。
LambdaへS3オブジェクトへタグをつける権限を付与する
Lambdaに付与するIAMポリシーの作成
Lambdaから特定のS3バケット内のオブジェクトへのタグの付与のみ許可するIAMポリシーを作成します。作成したポリシーは以下のようなものです。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:PutObjectTagging"
],
"Resource": "arn:aws:s3:::xxxxxxxxxxxx/*"
}
]
}
Lambdaのロールへ作成したIAMポリシーをアタッチ
作成したIAMポリシーをLambdaのロールへアタッチします。以下のようにLmbdaのコンソール画面からIAMロールの画面へ移動し、ポリシーをアタッチします。
IAMロールの画面へ移動したら「ポリシーをアタッチします」をクリックし、作成したポリシーを選択してアタッチを行います。