BT

Ready for InfoQ 3.0? Try the new design and let us know what you think!

AWSがServerless Application Model (SAM)の実装をオープンソース化し、機能を拡張

| 作者: Steffen Opel フォローする 4 人のフォロワー , 翻訳者 編集部T _ フォローする 0 人のフォロワー 投稿日 2018年5月7日. 推定読書時間: 6 分 |

原文(投稿日:2018/04/30)へのリンク

読者の皆様へ:ノイズを減らすための一連の機能を開発しました。関心のあるトピックについて電子メールとWeb通知を受け取ることができます新機能の詳細をご覧ください。

Amazon Web Services(AWS)は最近、Serverless Application Model(SAM)の実装をオープンソース化した。そして、CloudWatch Logsサブスクリプションフィルタ用の新しいイベントソースを追加した。これまでのリリースでは、Amazon API Gatewayを介してREST APIを設定およびデプロイするためのオプションの総合的な拡張が特徴であった。オプションとして、CORSヘッダー、リージョンエンドポイント、バイナリメディアタイプがサポートされている。

Serverless Application Model(SAM)は、AWSのインフラストラクチャを、特別なリソースタイプを持つコードサービスであるCloudFormationとして拡張するオープンソース仕様である。これは「シンプルでクリーンな構文でサーバーレスアプリケーションを定義する」ことを目的としている。SAMは、現在利用可能な2つのCloudFormationトランスフォームの1つとして実装されている。これは、「コードとしてのAWSインフラストラクチャの表現を圧縮することでテンプレートオーサリングを簡素化する」ことを目的としている。テンプレートAWS::Serverlessトランスフォームが指定されている場合、CloudFormationは、処理されたテンプレートを使用してスタックを作成/更新する前に、より簡潔なSAM構文を通常のCloudFormationリソースタイプに展開する。

SAMアプリケーションのオーサリングはSAM Local CLIによってサポートされている。SAM Local CLIによって「ローカルで機能をテストしたり、SAMテンプレートからローカルAPIゲートウェイを開始したり、SAMテンプレートを検証したり、さまざまなイベントソースのサンプルペイロードを生成する」ことが可能となる(以前の記事)。開発者はAWS CodePipelineAWS CodeBuild、CloudFormation、AWS CodeDeployを使用して、さまざまなカナリアやリニアトラフィックシフト構成を介して、SAMアプリケーションを継続的にビルドし、徐々にデプロイすることができる。互換性のあるソリューションは、Serverless Application Repository、AWSのパッケージング、SAMアプリケーション用のディスカバリおよびプロビジョニングプラットフォームを介して共有することもできる(以前の記事)。

SAMの仕様はオープンソースであるが、AWSチームは、承認された各機能要求をクローズな環境で実装しなければならなかった。AWSは、SAMテンプレートを通常のCloudFormationテンプレートに変換するコードをオープンソース化することで、コミュニティ参加の障壁を低くした。それにより、誰でも新しい機能を実装し、受け入れを加速するためにプルリクエストを使ってAWSチームと共同作業をすることができる。Apache 2.0ライセンスのsamtranslatorのソースコードと、すぐに利用できるaws-sam-translator PyPIパッケージを使うと、サーバレスコミュニティが簡単に他のフレームワークやデプロイプロバイダをSAMにインテグレーションできるようになる。

SAMリリース1.5では、SAMの実装がオープンソース化されただけでなく、ログの記述が指定されたフィルタパターンと一致するときにLambda関数をトリガできるAmazon CloudWatch Logsのイベントソースも追加された。

# [...]

Resources:
  LogsProcessor:
    Type: AWS::Serverless::Function
    Properties:
      CodeUri: .
      Handler: lambda_function.lambda_handler
      Runtime: python3.6
      Events:
        HelloInfoQSubscription:
          Type: CloudWatchLogs
          Properties:
            LogGroupName: !Ref CloudWatchLambdaLogsGroup
            FilterPattern: Hello InfoQ

 

以前のSAMリリース1.4では、Amazon API Gateway向けにCross-Origin Resource Sharing (CORS)のサポートが提供された。これは、ドメインを指定するだけで有効にできる(よりきめ細かく指定できるCors Configurationも利用できる)。また、新しいAPI Gatewayのリージョンエンドポイント、バイナリメディアタイプ、ロギング、メトリック、キャッシュTTL設定、AWSラムダ関数の並列処理、さまざまな小規模な改善、バグ修正が行われた。以下のテンプレートの抜粋は、GlobalsセクションによるSAMのAPI Gatewayサポートの簡潔さを示している。

---
Transform: AWS::Serverless-2016-10-31

Globals:
  Api:
    # Allows www.infoq.com to call this API - SAM will also automatically 
    # add AllowMethods with a list of HTTP methods used within this API
    Cors: "'https://www.infoq.com'"

    EndpointConfiguration: REGIONAL

    BinaryMediaTypes:
      # These are equivalent to image/gif and image/png when deployed
      - image~1gif
      - image~1png

# [...]

 

Serverless Application Modelのソースコードには、開発ガイド、簡単な設計の概要貢献のガイドラインが含まれている。生成されたCloudFormationリソースおよび関連するCloudFormation互換性に関するドキュメントも入手できる。SAM向けのエンドユーザーサポートは、これまでAWS Lambdaフォーラムを通じて提供されており、今後は新たにAWS Serverless Application Repositoryフォーラムに移行する予定である。SAMコミュニティおよびチームとの共同作業に関心のある開発者は、AWS SAM Developersチャネル(#samdev)に参加することを勧める。

 
 

Rate this Article

Adoption Stage
Style
 
 

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション
BT