3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Ruby を利用して Aws lambda function からS3にあるJsonファイルを読込

Posted at

やりたいこと

Ruby を利用して Aws lambda function からS3にあるJsonファイルを読込したい。

手順

  1. S3の該当なDirにJsonファイルを用意します。
  2. LambdaFunctionを作成する。
    スクリーンショット 2023-03-29 11.01.53.png

Rubyコード

require 'aws-sdk'
require 'time'

def lambda_handler(event:, context:)

    # Set region
    region = 'us-east-1'

    # API client for S3
    s3 = Aws::S3::Client.new(region: region)
    ##### 引数を格納
    # S3のバケット名
    bucket_name = event['bucket_name']
    execute_day = Time.parse(event['execute_day']).strftime("%Y%m%d")
    # S3Pathを生成する [my_folder/20230303/index.json]
    obj_key = 'my_folder/' + execute_day.to_s + '/index.json'
    # S3にあるJsonファイルを読込
    resp = s3.get_object(bucket: bucket_name, key: obj_key)
    data_json = JSON.parse(resp.body.read)

    # Jsonを返す
    return { statusCode: 200, body: data_json}
    
end

上記でS3にあるJsonファイルの読み込みができます。
続いて「data_json」の中身を確認しましょう!
data_jsonがHash型でデータを持っているためキーを指定してデータが取れます。

例:
puts data_json["user"]
# output:↓
# [{"user_id"=>3, "name"=>"John Smith", "email"=>"johnsmith@test.com"}, {"user_id"=>2, "name"=>"Cherry", "email"=>"cherry@test.com"}, {"user_id"=>2, "name"=>"Starry ", "email"=>"blue@test.com"}]

例:
puts data_json["order"]
# output:↓
# [{"order_id"=>1, "user_id"=>"3", "order_detail_id"=>"1001"},{"order_id"=>2, "user_id"=>"3", "order_detail_id"=>"1002"}]

プライベートテストイベントを作成

  1. Lambda Function の[Test] (テスト) タブを選択します。
  2. [Test event] (テストイベント) で、次の作業を行います。
    • [Template] (テンプレート) を選択します。
    • テストの [Name] (名前) を入力します。
    • イベント JSONに渡したいパラメータを用意します。
    • 保存をクリック

3.[Test] (テスト) をクリックする。
4.テスト結果を確認するには、[Execution result] (実行結果) で、[Details] (詳細) を展開します。
上記でテスト準備ができます。

参考リンク

スクリーンショット 2023-03-29 11.08.14.png

スクリーンショット 2023-03-30 10.41.38.png

テストを試しましょう

テストする前にDeployをしないと作成したコードが反映されないので、テスト前にDeployを押してください。
[Test] (テスト) をクリックする。

結果:

Test Event Name
test

Response
{
  "statusCode": 200,
  "body": {
    "user": [
    {
      "user_id": 2,
      "name": "John Smith",
      "mail": "johnsmith@test.com"
    },
    {
      "agency_id": 3,
      "name": "Cherry",
      "mail": "cherry@test.com"
    }],
    "order": [
      {
        "order_id": 1,
        "user_id": 2,
        "order_detail_id": "1001"
      },
      {
        "order_id": 2,
        "user_id": 3,
        "order_detail_id": "1002"
      }
    ]
  }
}

以上。

3
1
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
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?