1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

前回のおさらい

前回投稿した記事の続きです。

前回はPracticeLamdaという名前のLambda関数をPythonを選択肢して作成、
コードは特に変更せずデプロイ+テストの挙動を確認しただけでした。
それだけでは何も身につかないので実際にAPI作成へチャレンジしてみます。

日本の祝日取得APIを作成してみる

前回の続きから作業していきます。
スクリーンショット 2024-04-15 18.04.28.png

テストのタブを選択→新しいイベントを作成へ
「PracticeLamdaEventTst」という名前のイベントを作成します。
スクリーンショット 2024-04-15 18.27.08.png
作成したら保存してデータソースを調達しましょう。
内閣府HPの国民の祝日についてというサイトページへアクセス。
スクリーンショット 2024-04-15 18.08.29.png
下へスクロールしていくと、昭和30年〜令和7年までの祝日一覧がCSVファイルでダウンロードできます。
スクリーンショット 2024-04-15 18.08.47.png
中身はこんな感じの一覧形式となっております。
スクリーンショット 2024-04-15 18.38.25.png

では再度Lambda関数のコードソースへ
以下のように編集します。
スクリーンショット 2024-04-15 18.34.49.png

import json
from urllib.request import urlopen #URLを開くためのモジュール

#リソースとなる祝日一覧のURLを取得
link = "https://www8.cao.go.jp/chosei/shukujitsu/syukujitsu.csv"

def lamda_handler(event,context):
    f = urlopen(link)
    content = f.read()
    
    print(content)
    
    print("てすと")
    
    return{
        'statusCode':200,
        'body': json.dumps('Hello from Lamda')
    }

一旦デプロイ→テストの順で実行してみます。

スクリーンショット 2024-04-15 18.16.17.png
画像のようにFunction Logsが文字化けしちゃってますが、(ちなみに元のCSVファイルを超絶長い文字列として取得してきてるので見切れてます。)問題なく取得できてますね。

文字化けを修正する為にdecode関数を追加します。
今回日本語部分が全て文字化けしてしまっているので、Shift_JISでデコードする処理を追記します。

import json
from urllib.request import urlopen #URLを開くためのモジュール

#リソースとなる祝日一覧のURLを取得
link = "https://www8.cao.go.jp/chosei/shukujitsu/syukujitsu.csv"

def lamda_handler(event,context):
    f = urlopen(link)
    content = f.read()
    
    print(content)
    
    print("てすと")
    
    #文字化け対策でdecode関数を使用
    decoded = content.decode("shift_jis")
    
    print(decoded)
    
    return{
        'statusCode':200,
        'body': json.dumps('Hello from Lamda')
    }
    

やったぜ。

スクリーンショット 2024-04-15 19.08.38.png

改行ではなくリストにデータを格納する処理に変更します。

import json
from urllib.request import urlopen #URLを開くためのモジュール

#リソースとなる祝日一覧のURLを取得
link = "https://www8.cao.go.jp/chosei/shukujitsu/syukujitsu.csv"

def lamda_handler(event,context):
    f = urlopen(link)
    content = f.read()
    
    print(content)
    
    #文字化け対策でdecode関数を使用、splitで1行ごとにデータを区切る
    decoded = content.decode("shift_jis").split()
    print(decoded)
    
    return{
        'statusCode':200,
        'body': json.dumps('Hello from Lamda')
    }
    

スクリーンショット 2024-04-15 19.11.21.png

リストへ格納できたので、インデックスでの指定もしてみます。

import json
from urllib.request import urlopen #URLを開くためのモジュール

#リソースとなる祝日一覧のURLを取得
link = "https://www8.cao.go.jp/chosei/shukujitsu/syukujitsu.csv"

def lamda_handler(event,context):
    f = urlopen(link)
    content = f.read()
    
    print(content)
    
    #文字化け対策でdecode関数を使用、splitで1行ごとにデータを区切る
    decoded = content.decode("shift_jis").split()
    #0..2のインデックスを指定して出力
    print(decoded[0:2])
    
    return{
        'statusCode':200,
        'body': json.dumps('Hello from Lamda')
    }
    

スクリーンショット 2024-04-16 9.30.59.png

表名と一覧の先頭(1955年1月1日元日)も指定して取れます。
Slackと連携して祝日の通知がくるようにしても便利そうですね。

お読みいただきありがとうございました。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?