AWS SAM - Severless Application Model


Serverless Application


イベントが発生したときにのみ電源が入り、サーバなしと呼ばれます.
EC 2ですべての機能が実装されている場合は、イベントがなくても開くのでコストがかかります
また,トラフィックが大きい場合には,インスタンスをより良くする必要があるなど,考慮すべき事項が多い.
このために無条件にSeverlessを選択したわけではありません
イベントが来た時だけ開くので、最初から冷たい時間がかかります
このような状況を回避するために、イベントを継続的に送信するコードを作成することもできます.
Cold Timeを考えると、コードを書くことができれば、いい条件になるはずです.

SAM


サーバレスアプリケーションの構築と導入に使用
Docker Buildについて
次の記事では、AWS SAM CLIのインストール方法について説明します.
オペレーティングシステムに従って行えばいいです
アンインストール方法のインストール
https://docs.aws.amazon.com/ko_kr/serverless-application-model/latest/developerguide/serverless-sam-cli-install.html

AWS Lambdaの導入


ソース:https://docs.aws.amazon.com/ko_kr/serverless-application-model/latest/developerguide/serverless-getting-started-hello-world.html

HelloWorldアプリケーションを配備し、AWS LambdaをAPI Gatewayに接続し、環境を提供
次のサイトを参考にしてみてください.
https://docs.aws.amazon.com/ko_kr/serverless-application-model/latest/developerguide/serverless-getting-started-hello-world.html
#Step 1 - Download a sample application
sam init

#Step 2 - Build your application
cd sam-app
sam build

#Step 3 - Deploy your application
sam deploy --guided

その他の説明


ディレクトリ構造は次のとおりです.
 sam-app/
   ├── README.md
   ├── events/        # 여기에 event 변수에 보낼 jSON 내용을 저장
   │   └── event.json
   ├── hello_world/   # 실제로 build 되는 폴더
   │   ├── __init__.py
   │   ├── app.py            #Lambda handler 코드를 작성하는 곳
   │   └── requirements.txt  #Python 패키지 내용 저장
   ├── template.yaml         #AWS SAM template 정의
   └── tests/
       └── unit/
           ├── __init__.py
           └── test_handler.py
        
sam buildの際に参考になるファイルの一つとしてtemplate.yaml(template.yml)があります
たとえばramdaの場合、ここでramdaの最大メモリや実行時間などのオプションを設定できます.
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: >
  python3.9

  Sample SAM Template for lambda-python3.9

# More info about Globals: https://github.com/awslabs/serverless-application-model/blob/master/docs/globals.rst
Globals:
  Function:
    Timeout: 900 ### 최대 가동 시간

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:
      MemorySize: 3008  ## 최대 메모리
      PackageType: Image
イメージ形式で生成された場合、hello worldでDockerfileが生成されます
Lambda Dockerfile
言語そのものをFROMでデバッグするのは難しいかもしれません.
実はAmazon Linux 2
このファイルを使用してdocker buildを実行しdocker runを実行すると、Pythonの実行のみが表示されます.
docker execに接続するとLinux画面が表示されます.
そこで直すのが便利だ
一部のPythonモジュールではLinux自体に何かをインストールする必要がある場合があります.
この場合、Dockerfileにyum installキーワードを書き込むことができます
FROM public.ecr.aws/lambda/python:3.9

RUN yum update -y && yum install -y git

COPY requirements.txt ./
RUN python3.9 -m pip install -r requirements.txt 

COPY app.py ./
CMD ["app.lambda_handler"]

機械学習用の簡単な作成