こんにちはエンジニアの sakasai です。
9月が終わります。
そういえば今年はまだ September 聞いてないことに気づいたので慌てて聞いてます。
・
本日(2021-9-30)AWS Lambdaのアップデートで実行するアーキテクチャが選択できるようになりました。
関数作成時に「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」から
Duration | Billed Duration | Max Memory Used | |
1回目 | 23369.23 ms | 23370 ms | 64 MB |
2回目 | 22616.51 ms | 22617 ms | 64 MB |
3回目 | 22051.17 ms | 22052 ms | 67 MB |
次に「arm64」
Duration | Billed Duration | Max Memory Used | |
1回目 | 12365.42 ms | 12366 ms | 63 MB |
2回目 | 12008.45 ms | 12009 ms | 66 MB |
3回目 | 12417.56 ms | 12418 ms | 66 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 でカジュアル面談はじめました。
お気軽にご応募ください。