【アップデート】LambdaでPython3.7がサポートされました!!

LambdaがPython3.7に対応したので、早速触ってみました!!
2018.11.20

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

サーバーレス開発部@大阪の岩田です。 AWSのブログをチェックしていたところ、LambdaがPython3.7に対応したという記事を発見したので早速触ってみました。 https://aws.amazon.com/jp/blogs/compute/python-3-7-runtime-now-available-in-aws-lambda/

マネジメントコンソールを確認

ランタイムの選択肢にPython3.7が追加されています。

バージョンを確認

print (sys.version)

でバージョン情報を出力してみました。

3.7.1が使われているようです!

Python3.7の新機能を試してみる

試しにPython3.7の新機能であるdataclassのデコレータを使って見ました。

import json
from dataclasses import dataclass

@dataclass
class InventoryItem:
    '''Class for keeping track of an item in inventory.'''
    name: str
    unit_price: float
    quantity_on_hand: int = 0

    def total_cost(self) -> float:
        return self.unit_price * self.quantity_on_hand


def lambda_handler(event, context):
    
    item = InventoryItem('item1', 100, 10)
    # TODO implement
    return {
        'statusCode': 200,
        'body': json.dumps({
            'total_cost': item.total_cost()
        })
    }

InventoryItemクラスのコンストラクタを特に実装していませんが@dataclassと記述しておくことで、よしなにやってくれています。

試しにランタイムをPython3.6に変えて試してみると・・・

エラーになり実行できません。想定通りです。

最後に

Pythonをメインに使っている開発者としては地味に嬉しいアップデートです。 Python3.7の新機能をうまく使って、保守性の高い良いコードを書けるように心がけていきたいです!

参考

What’s New In Python 3.7

Python3.7の新機能