いいかげんローカルでの開発にも飽きてきたのでしばらく放置していたAWSを活用しようとおもって公式チュートリアルをやってみた。
環境
- Macbook Air (M1 2020)
- Docker 20.10.16 (limaにて、参考)
- SAM 1.52.0
ローカルでテスト
ローカルにデプロイするにはsam deploy --guided
ではなく、sam local start-app
でdockerコンテナが起動する。
公式に従って、curl http://127.0.0.1:3000/hello
とすると、
{"message":"Internal server error"}
あれ、、、うまくいってない。簡単なチュートリアルなのにっ!!
解決
いろいろ調べたり、template.yamlをみているうちに、アーキテクチャの違いに気づいて以下の対応
Resources:
HelloWorldFunction:
Type: AWS::Serverless::Function # More info about Function Resource: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction
Properties:
CodeUri: hello_world/
Handler: app.lambda_handler
Runtime: python3.9
Architectures:
# - x86_64 削除
- arm64 #追加
Events:
HelloWorld:
Type: Api # More info about API Event Source: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#api
Properties:
Path: /hello
Method: get
無事、{"message": "hello world"}%
が帰ってきました。
そりゃそうだよねって感じかもしれませんが、参考まで。 AWSにデプロイするときにはx86_64なのかな。