1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWS SAM(Serverless Application Model)とは

Posted at

AWS SAM(Serverless Application Model)とは

AWS SAM (Serverless Application Model) は、AWS上でサーバーレスアプリケーションを構築・管理するためのオープンソースのフレームワークである。CloudFormationの拡張として機能し、より簡潔な構文でLambda関数、API Gateway、DynamoDBなどのサーバーレスリソースを定義できる。また、ローカルでのテストやデプロイを支援するCLIツールも提供しており、サーバーレス開発の効率を大幅に向上させる。

なぜAWS SAMが必要なのか

従来のCloudFormationでもサーバーレスリソースの構築は可能であったが、各リソースの設定が詳細にわたるため、記述が冗長になりがちであった。例えば、Lambda関数を定義する場合、関数本体のコードだけでなく、実行ロール、ロググループ、イベントソースなどを個別に定義する必要があった。

AWS SAMは、このような複雑さを抽象化し、サーバーレスアプリケーションの構成要素をより直感的に記述できるようにする。これにより、開発者はインフラストラクチャの詳細に煩わされることなく、アプリケーションのビジネスロジックに集中できるようになる。

AWS SAMの主要な要素

  1. SAMテンプレート:

    • CloudFormationテンプレートの拡張であり、YAMLまたはJSON形式で記述される。
    • AWS::Serverless::FunctionAWS::Serverless::ApiAWS::Serverless::SimpleTable など、サーバーレスアプリケーションに特化した簡潔なリソースタイプを提供する。
    • Transform: AWS::Serverless-2016-10-31 をテンプレートの Transform セクションに記述することで、SAMの構文が有効になる。
    Transform: AWS::Serverless-2016-10-31
    Description: A simple Lambda function
    
    Resources:
      HelloWorldFunction:
        Type: AWS::Serverless::Function
        Properties:
          Handler: app.lambda_handler
          Runtime: python3.9
          CodeUri: s3://your-bucket/your-code.zip
          MemorySize: 128
          Timeout: 3
          Events:
            MyApi:
              Type: Api
              Properties:
                Path: /hello
                Method: get
    

    上記の例では、AWS::Serverless::Function リソースタイプを使用して、Lambda関数とそのトリガーとなるAPI Gatewayのエンドポイントを簡潔に定義している。

  2. SAM CLI (Command Line Interface):

    • SAMアプリケーションの開発、テスト、デプロイを支援するコマンドラインツールである。
    • sam build: テンプレートに基づいて、Lambda関数の依存関係を解決し、デプロイ可能なパッケージを作成する。
    • sam local invoke: ローカル環境でLambda関数をテスト実行できる。
    • sam local start-api: ローカル環境でAPI Gatewayのエンドポイントを起動し、テストできる。
    • sam package: デプロイに必要なテンプレートとアーティファクトをS3バケットにアップロードするための準備を行う。
    • sam deploy: パッケージ化されたテンプレートを使用して、AWS上にサーバーレスアプリケーションをデプロイする。

AWS SAMのメリット

  • 開発の簡素化: サーバーレスリソースの定義が簡潔になり、開発者はより少ないコードでインフラストラクチャを構築できる。
  • 迅速なデプロイ: SAM CLIを活用することで、アプリケーションのパッケージングからデプロイまでのプロセスを効率化できる。
  • ローカルテストの容易さ: SAM CLIのローカルテスト機能により、クラウドにデプロイする前にアプリケーションの動作を確認できる。
  • ベストプラクティスの適用: SAMは、サーバーレスアプリケーションの構築における一般的なパターンやベストプラクティスを組み込んでいる。
  • CloudFormationとの統合: SAMはCloudFormationの拡張であるため、CloudFormationの持つ柔軟性や信頼性をそのまま活用できる。

まとめ

AWS SAMは、サーバーレスアプリケーション開発をより効率的かつ快適にするための強力なツールである。簡潔なテンプレート構文と便利なCLIツールにより、開発者はインフラストラクチャの管理に時間を費やすことなく、アプリケーションの価値創造に集中できる。こ

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?