- ã¯ããã«
- åæ
- ããæ¥ã®ãã¨
- ã°ã°ã£ã¦ã¿ã
- botocoreãboto3 ã®ãã¼ã¸ã§ã³ã確èªãã¦ã¿ã
- å¾ã ã«æ ¸å¿ã«
- ãªããã¼ã¸ã§ã³ç«¶åãçºçããã®ã
- åå ã¾ã¨ã
- 対å¿
- ãããã«
ã¯ããã«
ãµã¼ãã¼ã¯ã¼ã¯ã¹ã®å®®æ¬ã§ããä»åã¯æ¬çªéç¨ãã¦ãã AWS Lambda 颿°ãä½ã夿´ãã¦ããªãã®ã«çªç¶åããªããªã£ã話ãå ±æãã¾ããä¸è¦ããã¨ä¿¡ããããªã話ã§ãããæå¾ã¾ã§ãèªã¿ããã ããã¨å¹¸ãã§ãã
åæ
対象㮠Lambda 颿°ã«é¢ããåºæ¬æ å ±ï¼ä»åã®è©±ã«é¢ä¿ããé¨åã®ã¿ï¼ã¯ä»¥ä¸ã®éãã§ãã
- 2023/01 ã«ååãããã¤ããéç¨ãç¶ãã¦ãã
- ã©ã³ã¿ã¤ã 㯠Python3.9
- ä¾åã©ã¤ãã©ãªã¯ Lambda Layer ã«ã¾ã¨ãã¦ãã
- æã«æ°ååãããããªãããå¦ç
ããæ¥ã®ãã¨
4æææ¥ã®ãã¨ã§ããå½è©² Lambda ã®å®è¡ã§ã¨ã©ã¼ãçºçãããã¨ãéç¥ããã¾ããã以ä¸ã¯ã¨ã©ã¼å å®¹ã®æç²ã§ãã
[ERROR] Runtime.ImportModuleError: Unable to import module '{ã¢ã¸ã¥ã¼ã«å}': cannot import name 'DEPRECATED_SERVICE_NAMES' from 'botocore.docs' (/opt/python/botocore/docs/__init__.py) Traceback (most recent call last):
ãããã... ç¥ããªãåã§ãããå½è©² Lambda ã¯åæã¾ã§åé¡ãªãåä½ãã¦ãããè¨å®ãããã°ã©ã ã夿´ãã¦ãã¾ãããä¸ä½ä½ãèµ·ããã®ã§ãããï¼botocore
ã§åé¡ãèµ·ãã¦ããããã§ããå
¨ãå¿ããããããã¾ããã
ã°ã°ã£ã¦ã¿ã
ã¨ãããããã¨ã©ã¼ã¡ãã»ã¼ã¸ã§ã°ã°ã£ã¦ã¿ã¾ãããããã¨ä»¥ä¸ boto3 ã® Issue ãããããã¾ãããboto3 ã®ã¤ã³ãã¼ãã§ã¨ã©ã¼ãåºã¦ãããbotocore 㨠boto3 ã®ãã¼ã¸ã§ã³ãç«¶åãã¦ãããã¨ã«èµ·å ããäºè±¡ã®ããã§ããï¼ãããæ¸ãã¦ããä»ã¯ãããªãçè§£ã§ããã®ã§ããã彿ã¯ãã¾ããã³ã¨æ¥ã¦ãã¾ããã§ãããï¼
botocoreãboto3 ã®ãã¼ã¸ã§ã³ã確èªãã¦ã¿ã
ãªãã¨ãªã調æ»ãã¤ã³ããæ´ããã®ã§ãLambda ã®ç¶æ³ã確èªãã¦ã¿ããã¨ã«ãã¾ããå½è©²ããã¸ã§ã¯ãã§ã¯ãä¾åã©ã¤ãã©ãªã Pipenv ã§ç®¡çãã¦ããã®ã§ãPipfile
ã®å
容ã確èªãã¾ãã
# ä¸é¨æç² [packages] aws-lambda-powertools = "*" pynamodb = "*" pydantic = "*" # 以ä¸ç¥ [dev-packages] boto3 = "==1.20.32" black = "*" pytest = "*" # 以ä¸ç¥
boto3 㯠dev-package
ã«å«ã¾ãã¦ããããããã¤æã®ããã±ã¼ã¸ã³ã°å¯¾è±¡ã§ã¯ãªãããã§ããããã¯ãLambda ç°å¢ã«ããã©ã«ãã§ã»ããã¢ããããã¦ãã boto3 ã使ãããã¨ãããã¨ãæå³ãã¾ããbotocore 㯠boto3 ã®ä¾åã¨ãã¦ãåããããã©ã«ãã§ã»ããã¢ããããã¦ããã¯ããªã®ã§ããªããã¼ã¸ã§ã³ã®ç«¶åãçºçããã®ããããããã¾ããã
試ãã«æå ã®ç°å¢ã§ãæ°è¦ã« Python3.9 ã® Lambda ã使ãããã¼ã¸ã§ã³ã®ç¢ºèªããã¦ã¿ããã¨ã«ããã¼ã¸ã§ã³ã¯ä»¥ä¸ã®ã³ã¼ãã§ç¢ºèªãããã¨ãã§ãã¾ãã
def lambda_handler(event, context): import botocore print(botocore.__version__) import boto3 print(boto3.__version__)
ãããå®è¡ããã¨ä»¥ä¸ã®ãã°ãåºåããã¾ãããbotocoreãboto3 ã¨ãã«ãã¼ã¸ã§ã³ã¯ 1.34.42
ã§ãã
INIT_START Runtime Version: python:3.9.v51 Runtime Version ARN: arn:aws:lambda:ap-northeast-1::runtime:850b605499cb99649454b5f45a401c538f93f8eb6e094569c572200f6773b28e START RequestId: 8b6ad0a0-1b53-4902-9e86-ba25cade32a6 Version: $LATEST 1.34.42 1.34.42 END RequestId: 8b6ad0a0-1b53-4902-9e86-ba25cade32a6
ããããã§ããäºå®ã«æ°ãã¤ãã¾ããã1è¡ç®ã® Runtime Version: python:3.9.v51
ã®é¨åã§ãã2023/01 ã«çºè¡¨ãããã©ã³ã¿ã¤ã 管çå¶å¾¡æ©è½ã«ãããã©ã³ã¿ã¤ã ãã¼ã¸ã§ã³ç®¡çãè¡ãããããã«ãªã£ãã®ã§ãã
æ¤è¨¼ç¨ã«ä½æãã Lambda ã§ã¯ãã©ã³ã¿ã¤ã ãã¼ã¸ã§ã³ã v51 ã§ãããäºè±¡ãçºçãã¦ãã Lambda ã§ã¯ç°ãªãã©ã³ã¿ã¤ã ãã¼ã¸ã§ã³ã使ç¨ãã¦ããå¯è½æ§ãããããã§ãã
å¾ã ã«æ ¸å¿ã«
äºè±¡ãçºçãã¦ãã Lambda ã®ã©ã³ã¿ã¤ã ãã¼ã¸ã§ã³ããã°ãã確èªãã¾ããã¾ãã¯4æææ¥ã®ã¨ã©ã¼çºçæã®ã©ã³ã¿ã¤ã ãã¼ã¸ã§ã³ã§ãã
INIT_START Runtime Version: python:3.9.v47 Runtime Version ARN: arn:aws:lambda:ap-northeast-1::runtime:10c0a712b86e00044c2a7684d5440555c68f84a2c1426a98dcccee6f5f9eb905
ã©ã³ã¿ã¤ã ãã¼ã¸ã§ã³ã¯ v47 ã§ãããæ¤è¨¼ç¨Lambda ã®ã©ã³ã¿ã¤ã ãã¼ã¸ã§ã³ã v51 -> v47 ã«å¤æ´ï¼ããã¸ã¡ã³ãã³ã³ã½ã¼ã«ãã宿½å¯è½ã§ãã以ä¸ç»ååç §ï¼ãã¾ãã

ãã®ä¸ã§ãbotocoreãboto3 ã®ãã¼ã¸ã§ã³ã確èªããã¨ãã以ä¸ã®çµæã§ããã
- botocore==1.34.42
- boto3==1.34.42
åæ§ã«ãæåããåæä»¥åã®ã©ã³ã¿ã¤ã ãã¼ã¸ã§ã³ã確èªãã¾ãã
INIT_START Runtime Version: python:3.9.v46 Runtime Version ARN: arn:aws:lambda:ap-northeast-1::runtime:785596225436995dcc561b9cc5101b0b76da2573cf322ec7ca1d619abb3fc581
ã©ã³ã¿ã¤ã ãã¼ã¸ã§ã³ã¯ v46 ã§ãããåé ã§ä½ã夿´ãã¦ããªãæ¨ãæ¸ãã¾ããããã©ã³ã¿ã¤ã ãã¼ã¸ã§ã³ãAWSã«ãã£ã¦èªåçã«ã¢ãããã¼ãããã¦ããã®ã§ã...!!ãã¡ããåæ§ã« botocoreãboto3 ã®ãã¼ã¸ã§ã³ã確èªããã¨ãã以ä¸ã®çµæã§ããã
- botocore==1.29.90
- boto3==1.26.90
ããããªãããã©ã³ã¿ã¤ã ãã¼ã¸ã§ã³ v47 ã«å梱ããã botocoreãboto3 ã®ãã¼ã¸ã§ã³ã¯å ±ã« 1.34.42 ã§ç«¶åãåºãã¨ã¯æãã¾ããã念ã®çºãæå ã®é©å½ãªç°å¢ã§ boto3==1.34.42 ãè¦æ±ãã botocore ã®ãã¼ã¸ã§ã³ã確èªãã¾ãã
$ pipenv install boto3==1.34.42 $ pipenv graph boto3==1.34.42 âââ botocore [required: >=1.34.42,<1.35.0, installed: 1.34.94] â âââ jmespath [required: >=0.7.1,<2.0.0, installed: 1.0.1] â âââ python-dateutil [required: >=2.1,<3.0.0, installed: 2.9.0.post0] â â âââ six [required: >=1.5, installed: 1.16.0] â âââ urllib3 [required: >=1.25.4,<1.27, installed: 1.26.18]
boto3==1.34.42 㯠botocore 1.34.42 以ä¸ã1.35.0 ããåã®ãã¼ã¸ã§ã³ã«å¯¾å¿ãã¦ãããã¨ããããã¾ãããã£ã¦ v47 ã«å梱ããã¦ãããã¼ã¸ã§ã³ã¯åé¡ããã¾ãããï¼å½ããåï¼
ãªããã¼ã¸ã§ã³ç«¶åãçºçããã®ã
ä»ã« botocoreãboto3 ã®ãã¼ã¸ã§ã³ãå¤ããè¦å ãèãã¦ã¿ãçµæãä»ã®ä¾åã©ã¤ãã©ãªã botocoreãboto3 ã«ä¾åãã¦ããå¯è½æ§ãããããã ã¨èãã¾ãããpipenv graph
ã§åæ§ã«ç¢ºèªãã¾ãã
$ pipenv graph pynamodb==5.3.4 - botocore [required: >=1.12.54, installed: 1.29.51] - jmespath [required: >=0.7.1,<2.0.0, installed: 1.0.1] - python-dateutil [required: >=2.1,<3.0.0, installed: 2.8.2] - six [required: >=1.5, installed: 1.16.0] - urllib3 [required: >=1.25.4,<1.27, installed: 1.26.14] # 以ä¸ç¥
PynamoDB ã botocore ã«ä¾åãã¦ãããã¨ã夿ãã¾ãã...!! ãã¼ã¸ã§ã³ã¯ 1.29.51 ã§ãboto3==1.34.42 ã¨äºææ§ããªããã¼ã¸ã§ã³ã§ãã
ã¡ãªã¿ã«ãLambda Layer ã®ã½ã¼ã¹ã³ã¼ãã¯ä»¥ä¸ã³ãã³ãã§ãã¦ã³ãã¼ãURLãå¾ãããã®ã§ããã¦ã³ãã¼ãã»è§£åãã¦ãã¼ã¸ã§ã³ç¢ºèªãã§ãã¾ãã
$ aws lambda get-layer-version \ --layer-name {Lambda Layer å} \ --version-number {ãã¼ã¸ã§ã³çªå·} { "Content": { "Location": "{ãã¦ã³ãã¼ãURL}", "CodeSha256": "5O9DQ69ESEReYe3rDumATsrw9XNCzComASZzae+OgAE=", "CodeSize": 48265363 }, # 以ä¸ç¥ }
åå ã¾ã¨ã
ã¾ã¨ããã¨ã以ä¸ã®åå ã§ botocoreãboto3 ã®ãã¼ã¸ã§ã³ç«¶åãçºçãã¦ãã¾ããã
- boto3 ã¯ã©ã³ã¿ã¤ã 忢±ã®ãã®ã使ç¨ããã¼ã¸ã§ã³ã¯ 1.34.42
- botocore 㯠PynamoDB ãä¾åãã¦ãããLambda Layer ã«å«ã¾ããããã¼ã¸ã§ã³ã¯ 1.29.51 ã§ boto3 ã®ãã¼ã¸ã§ã³ã¨äºææ§ããªãããã¤ã³ãã¼ãæã«ã¨ã©ã¼ãçºçãã
- ã©ã³ã¿ã¤ã 忢±ã® botocore ã§ããã°ç«¶åã¯çºçããªãããã©ã³ã¿ã¤ã 忢±ã®ãã®ãã Lambda Layer ã®ã©ã¤ãã©ãªãåªå ãããããã§ã
- ã©ã³ã¿ã¤ã ãã¼ã¸ã§ã³ v46 ã§ã¯ç«¶åã¯çºçããªãã£ãããèªåæ´æ°ã§ v47 ã«ãªã£ããã¨ã«ããç«¶åãçºçããããã«ãªã£ã
対å¿
ã¾ããæ«å®å¯¾å¿ã¨ãã¦å½è©² Lambda ã®ã©ã³ã¿ã¤ã ãã¼ã¸ã§ã³ãæ£å¸¸ã«åã v46 ã«å¤æ´ã»åºå®ãã¾ãããããã«ãããã¼ã¸ã§ã³ç«¶åã®åé¡ã¯ã²ã¨ã¾ã解決ãã¾ãã
ããããªããããã¼ã¸ã§ã³ãåºå®ãã¦ãã¾ã㨠Lambda åºç¤ã®ã¢ãããã¼ããè¡ããããå°ãªãããã»ãã¥ãªãã£ãªã¹ã¯çãæã¤ç¶æ ã«ãªã£ã¦ãã¾ããããæä¹ çã«ã¯ã©ã³ã¿ã¤ã ãã¼ã¸ã§ã³ã®æ´æ°ã¯èªåã§è¡ãããããã«ããã®ã好ã¾ããã§ããã©ã³ã¿ã¤ã ãã¼ã¸ã§ã³ãèªåæ´æ°ãããç¶æ ã§ãç«¶åãçºçãããªãããã«ãããããã©ã³ã¿ã¤ã 忢±ã® boto3 ã¯ä½¿ç¨ãã Lambda Layer ã«å«ãããã«ããäºå®ã§ãã
ãããã«
ã½ããã¦ã§ã¢ã¯ä½ãããªãã¨å£ãããèã§æããä½é¨ã§ãããé·æçãªéç¨ãèæ ®ããè¨è¨ãç¶ç¶çãªã¡ã³ããã³ã¹ã大äºã§ããããã®è¨äºãã©ãªããã®ãå½¹ã«ç«ã¦ã°å¹¸ãã§ãã