やりたいこと
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に変換してます。