Python
AWS
lambda

[AWS] Lambda Function の CodeSha256 をPythonで計算する

More than 1 year has passed since last update.


やりたいこと

AWSに登録済みのLambda Functionのコードと、これから更新しようとしているコードが同一かどうか判断するには、CodeSha256を比較します。… よね?

わざわざコードを落としてきて比較とかしないですよね?

登録済みのコードのCodeSha256はAWS側で勝手に計算されていますが、手元にあるコードのCodeSha256は自力で計算する必要があります。そういうことをやってくれるツールを使っていなければ。

というわけで、PythonでCodeSha256を計算する方法です。

名前はCodeSha256ですが、単純にSHA256の計算だけすればいいというわけでもなかったりします。


CodeSha256 計算


計算方法


  • zipファイルのバイナリの


  • SHA256を計算し

  • base64エンコードする。

以上。


サンプルコード


前提


  • Python 3.6


コード


python3.6

# coding: utf-8

# required
import hashlib
import base64

# for sample
import json

if __name__ == '__main__':

# zipファイルをバイナリモードで読み込み
function_zip_path = "/path/to/lambda_function.zip"
f = open(function_zip_path, 'br')
function_zip_bynary = f.read()
f.close()

# sha256算出
sha256 = hashlib.sha256(function_zip_bynary).digest()
sha256_base64 = base64.b64encode(sha256)
sha256_base64_str = sha256_base64.decode()

# 表示
print(json.dumps(sha256_base64_str, indent=2))


base64.b64encode()は bytes を返しますので、最後に.decode()でstrに変換してます。