LoginSignup
11
3

More than 1 year has passed since last update.

S3 Object Lambdaで大量のテキストを並列加工

Posted at

はじめに

  • S3 Object Lambdaを使って、大量のテキスト文を並列で形態素解析します。
  • 形態素解析については別で記事を書いています

S3 Object Lambdaとは

S3 Object Lambda を使用すると、クライアントアプリケーションによって S3 からオブジェクトを取得するときに、Lambda 関数を使用してデータを処理および変換できます。

s3.png

参照

S3にあるオブジェクトにGetアクセスした際に、裏側でLambdaが起動して処理した結果をレスポンスとして受け取ります。

S3 Object Lambdaを使った並列処理

実際に書いてみる

  • Lambda処理
def handler(event:, context:)
  object_get_context = event['getObjectContext']
  request_route = object_get_context['outputRoute']
  request_token = object_get_context['outputToken']
  s3_url = object_get_context['inputS3Url']

  # S3のオブジェクトからテキストを取得
  uri = URI.parse(s3_url)
  res = Net::HTTP.get(uri)
  text = JSON.parse(res)

  # テキストを形態素解析処理
    ## 省略

  # S3 Object Lambdaのレスポンスとして返す
  s3_client.write_get_object_response(
    request_route: request_route,
    request_token: request_token,
    body: text
  )

  { 'statusCode': 200 }
end
  • Client
# 並行で以下の処理を実行

# S3にオブジェクト配置
s3_client.put_object(bucket: s3_lambda_bucket, key: s3_object_key, body: "This is test text")

# Lambdaで加工されたレスポンスを取得
res = s3_client.get_object(
  bucket: s3_lambda_bucket,
  key: s3_object_key
)

最後に

株式会社SARAHではサーバレスアーキテクチャを積極的に採用して、プロダクト開発を行っています。

11
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
3