ディーメイクからのお知らせや技術情報などをお届けします

ディーメイクブログ

AWS lambda

AWS LambdaでGraviton2が使えるようになりました

更新日:

こんにちはエンジニアの sakasai です。

9月が終わります。

そういえば今年はまだ September 聞いてないことに気づいたので慌てて聞いてます。

 

 

本日(2021-9-30)AWS Lambdaのアップデートで実行するアーキテクチャが選択できるようになりました。

https://aws.amazon.com/jp/blogs/aws/aws-lambda-functions-powered-by-aws-graviton2-processor-run-your-functions-on-arm-and-get-up-to-34-better-price-performance/

 

関数作成時に「x86_64」と「arm64」が選択できるようになっています。(Graviton2の表記はありません)

あとから変更する場合は、ランタイム設定の編集から可能です。


 

というわけで早速試してみました。

ランタイムはPython3.9を利用します。

まずは実行するコード

※実行している内容に意味はありません(適当に少し時間がかかりそうな処理を作ってみただけです)

import re
import string
from html.parser import HTMLParser
import urllib.request


def lambda_handler(event, context):
    # ウィキペディアの「日本」のページを取得
    req = urllib.request.Request('https://ja.wikipedia.org/wiki/%E6%97%A5%E6%9C%AC')
    with urllib.request.urlopen(req) as response:
       html = response.read().decode()

    # パースしてテキストを抽出し、半角英数記号等を削除
    parser = MyHTMLParser()
    parser.feed(html)
    text = re.sub(f'[{string.printable}]', '', parser.text)

    # 抽出したテキストを配列に変換して先頭100文字と最後の100文字を出力
    a = [t for t in text]
    print(a[:100])
    print(a[-100:])


class MyHTMLParser(HTMLParser):
    text = ''
    def handle_data(self, data):
        self.text += f'|{data}'

実行結果は以下のようになります。

['日', '本', '月', '月', '月', '月', '月', '月', '月', '月', '月', '月', '月', '月', '日', '本', '日', '本', 'テ', 'ン', 'プ', 'レ', 'ー', 'ト', '呼', 'び', '出', 'し', 'エ', 'ラ', 'ー', 'の', 'あ', 'る', 'ペ', 'ー', 'ジ', '不', '明', 'な', '引', '数', 'テ', 'ン', 'プ', 'レ', 'ー', 'ト', 'の', 'リ', 'ン', 'ク', 'テ', 'ン', 'プ', 'レ', 'ー', 'ト', 'の', 'ウ', 'ェ', 'イ', 'バ', 'ッ', 'ク', 'リ', 'ン', 'ク', '外', '部', 'リ', 'ン', 'ク', 'が', 'リ', 'ン', 'ク', '切', 'れ', 'に', 'な', 'っ', 'て', 'い', 'る', '記', '事', '年', '月', '月', '外', '部', 'リ', 'ン', 'ク', 'が', 'リ', 'ン', 'ク', '切']
['だ', 'さ', 'い', '。', 'プ', 'ラ', 'イ', 'バ', 'シ', 'ー', '・', 'ポ', 'リ', 'シ', 'ー', 'ウ', 'ィ', 'キ', 'ペ', 'デ', 'ィ', 'ア', 'に', 'つ', 'い', 'て', '免', '責', '事', '項', 'モ', 'バ', 'イ', 'ル', 'ビ', 'ュ', 'ー', '開', '発', '者', '統', '計', 'に', '関', 'す', 'る', '声', '明', '基', '礎', '情', '報', '国', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\']

 

では実行してみます。

設定はメモリはデフォルトのまま128MBで、タイムアウトは30秒に変更しました。

今回はお試しなのでマネージメントコンソール上のtestで実行しています。

まずは「x84_64」から

DurationBilled DurationMax Memory Used
1回目23369.23 ms23370 ms64 MB
2回目22616.51 ms22617 ms64 MB
3回目22051.17 ms22052 ms67 MB

次に「arm64」

DurationBilled DurationMax Memory Used
1回目12365.42 ms12366 ms63 MB
2回目12008.45 ms12009 ms66 MB
3回目12417.56 ms12418 ms66 MB

 

10秒も早くなってる・・・。

 


というわけで、実行するコードにもよると思いますが、ケースによってはかなり早くなることが期待できるかもしれません。

今後Lambda関数を作るときや、既存の遅い関数を試してみるなど、いろいろ検討してみてはいかがでしょうか。

 

 

SAMとCDKも対応されてるっぽい

https://github.com/aws/aws-sam-cli/releases/tag/v1.33.0

https://github.com/aws/aws-cdk/releases/tag/v1.125.0

 

 

 

Meety でカジュアル面談はじめました。

お気軽にご応募ください。

https://meety.net/matches?q=%E6%A0%AA%E5%BC%8F%E4%BC%9A%E7%A4%BE%E3%83%87%E3%82%A3%E3%83%BC%E3%83%A1%E3%82%A4%E3%82%AF


ディーメイクではエンジニアを募集しています。

おすすめ記事リンク

-AWS, lambda
-,

Copyright© ディーメイクブログ , 2021 All Rights Reserved.