aws-samples / aws-samples/aws-serverless-app-with-aurora-and-python-sql-alchemy-example
Issues going through tutorial
- 主要言語
- Python
- スター
- 67
- フォーク
- 16
- PR マージ指標
- 30日以内にマージされた PR はありません
説明
Hi @srijitm,
Thank you for linking me here from the comments on your article. It's brilliantly written and has been a godsend as I re-architect the backend for my start-up.
I was following the tutorial based in eu-west-2.
The issue I had was in the schema part of the tutorial - when CloudFormation was generating the schema, it got stuck on creating the SimpleBookStoreDBSchemaLambdaFunctionTrigger custom event with this error message:
> CloudFormation did not receive a response from your Custom Resource. Please check your logs for requestId [66edab8e-22df-4bd4-9eb1-26632f093a72]. If you are using the Python cfn-response module, you may need to update your Lambda function code so that CloudFormation can attach the updated version.
Eventually, I realised that CloudFormation won't acknowledge the creation of a Lambda function unless the cfn-response module is implemented, and so this caused it to trap. It doesn't seem like the [cfn-response](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-lambda-function-code-cfnresponsemodule.html) module was in your schema code and so no signal went back to CloudFormation to complete the stack creation.
Once I had added `cfnresponse.send()` to the sample code, it still did not work.
I found the CloudWatch Logs of the SimpleBookStoreDBSchemaLambdaFunction function which did get created and discovered that it was giving another error message in the logs:
> Unable to import module 'main': No module named 'sqlalchemy'
From my research, I found out that AWS Lambda does not natively support libraries other than common Python system libraries and boto3. I realised I needed to build the packages locally using `sam build --use-container` before deploying them.
Once I did this, I started testing the code locally with `sam local invoke` and ran into the same issues I found earlier in the CloudWatch logs.
This is where I'm less sure of my solution. I started doing more trial-and-error, deploying and testing locally using `sam build --use-container` and eventually, what worked for me was copying the `requirements.txt` file from the SimpleOnlineBookstoreDBSchemaLambdaLayer to the SimpleBookStoreDBSchemaLambdaFunction that was running as well. I think for some reason, the Lambda function needed the requirements of the layer in order to build properly.
After doing this, my last `sam deploy -g` worked perfectly and the schema appeared in the database when I accessed it through SSH.
I hope this will be helpful in improving your guide. I would love to hear your thoughts and potential explanations for some of the gotchas I encountered.
Thanks again,
Jacob
コントリビューションガイド
評価
この issue はまだ評価されていません。