Upgrade to Pro — share decks privately, control downloads, hide ads and more …

サーバーレスアプリケーションを 効率よく開発しよう! AWS SAM とローカル開発

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.

サーバーレスアプリケーションを 効率よく開発しよう! AWS SAM とローカル開発

サーバーレスアプリケーションの開発、マネジメントコンソールだけで進めていませんか?Lambda関数が増えるにつれて管理が煩雑になり、環境の再現にも手間がかかる...そんな課題を感じている方に向けて、AWS SAMを使った効率的な開発手法をご紹介します。SAMテンプレートによるインフラのコード管理から、SAM CLIを使ったローカルでのLambda関数実行まで、デモを交えながら解説します。

Avatar for Yuya Matsumoto

Yuya Matsumoto

August 06, 2023
Tweet

More Decks by Yuya Matsumoto

Other Decks in Technology

Transcript

  1. © 2023, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. AWS Builders Online Series 松本 侑也 アマゾン ウェブ サービス ジャパン合同会社 パブリックセクター 技術統括本部 ソリューションアーキテクト サーバーレスアプリケーションを 効率よく開発しよう︕ AWS SAM とローカル開発 T 5 - 2
  2. © 2023, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. ⾃⼰紹介 松本 侑也(まつもと ゆうや) パブリックセクター 技術統括本部 ソリューションアーキテクト ⾃治体のお客様のクラウド活⽤⽀援を担当 好きなAWSサービス ・AWS SAM
  3. © 2023, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 本セッションで取り上げるAWSサービス・機能 本セッションで取り上げる AWS のサービス・機能は以下の通りです。 詳細は、 AWS クラウドサービス活⽤資料集 またはAWSドキュメント よりご確認頂けます。 • AWS SAM • Amazon API Gateway • AWS Lambda • AWS Application Composer https://aws.amazon.com/jp/events/aws-event-resource/
  4. © 2023, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 本セッションの対象になる⽅ • これからサーバーレスアプリケーションの開発を始めようとしている⽅ • サーバーレスアプリケーションの開発を始めていて、 効率のいい開発の⽅法を知りたい⽅ もっと開発を 効率化したい サーバーレスの開発って 何から始めるのか︖
  5. © 2023, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 関連セッションについて • 本セッションは、3つの関連セッションで構成しています。 • 本セッションでは、AWS Lambda/Amazon API Gatewayなどのサービス説明 は⾏いません。サーバーレスサービスの基礎について知りたい場合、 「具体的なユースケースから学ぶ、サーバーレスアプリケーションの活⽤⽅法」 をご覧ください。 サーバーレスアプリケーションを効 率よく開発しよう︕ AWS SAMとローカル開発 具体的なユースケースから学ぶ、 サーバーレスアプリケーションの 活⽤⽅法 ブラウザで開発する サーバーレスアプリケーション
  6. © 2023, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. アジェンダ • サーバーレスアプリケーションを開発する際の課題 • AWS SAMを使ったサーバーレスアプリケーションの開発 • Demo
  7. © 2023, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. サーバーレスアプリケーションを 開発する際の課題
  8. © 2023, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 代表的なサーバーレスアプリケーションの特性 Amazon API Gateway AWS Lambda Amazon DynamoDB 例) サーバーレスサービスでAPIを作成 何らかの「イベント」に応じてLambda関数を起動し処理を⾏う性質を持つ Lambda関数 その他のAWSサービス Event 処理ロジックを実⾏ データの追加 APIにアクセス など Database/AIサービス/他のAPIなど イベント発⽣ 必要に応じアクセス
  9. © 2023, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. マネジメントコンソールを使って開発する場合 いいところ • 直感的 • ⼿軽で始めやすい AWS Management Console 課題 • Lambda関数の数が増えると管理が煩雑に • 環境を再現するには、⼿順書のようなものを作 らないといけない • 開発・検証・本番環境を再現する際にミスが⽣ じる
  10. © 2023, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. マネジメントコンソールでの開発サイクル リソースの作成・ コードの記述 デプロイ テスト ログの確認 繰り返し 追記
  11. © 2023, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. マネジメントコンソールでの開発サイクル リソースの作成・ コードの記述 デプロイ テスト ログの確認 繰り返し デプロイ
  12. © 2023, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. マネジメントコンソールでの開発サイクル リソースの作成・ コードの記述 デプロイ テスト ログの確認 繰り返し Lambda関数の実⾏
  13. © 2023, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. マネジメントコンソールでの開発サイクル リソースの作成・ コードの記述 デプロイ テスト ログの確認 繰り返し 変更結果確認
  14. © 2023, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. マネジメントコンソールを使って開発する場合 いいところ • 直感的 • ⼿軽で始めやすい 課題 • Lambda関数の数が増えると管理が煩雑に • 環境を再現するには、⼿順書のようなものを作 らないといけない • 開発・検証・本番環境を再現する際にミスが⽣ じる AWS Management Console 再 掲
  15. © 2023, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. AWS SAMを使った サーバーレスアプリケーション の開発
  16. © 2023, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. AWS SAMとは AWS上でサーバーレスアプリケーションを構築することに特化したツール SAMテンプレート SAM CLI ⼤きくSAMテンプレートとSAM CLIで構成される • JSON/YAMLで記述 • AWS LambdaなどのAWSリソースを定義 • ターミナルから実⾏できるSAM関連のコマンド • SAMテンプレートで定義されたAWSリソースの デプロイなど
  17. © 2023, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. SAMテンプレート AWSTemplateFormatVersion: '2010-09-09' Transform: 'AWS::Serverless-2016-10-31' Description: HelloWorld Resources: HelloWorld: Type: 'AWS::Serverless::Function' Properties: Handler: index.handler Runtime: python3.8 CodeUri: src/handlers/func1 Description: HelloWorld MemorySize: 128 Timeout: 3 Events: HelloApi Type: Api Properties: Path: /hello Method: get GET /hello AWSリソース Permissions Role (yamlの例) Amazon API Gateway AWS Lambda
  18. © 2023, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. SAM CLI ターミナルから実⾏できるSAM関連のコマンド SAM template AWS CloudFormation AWSリソース package (zip fileなど) $ sam init $ sam build $ sam deploy AWS Cloud プロジェクトの⽣成 Amazon API Gateway AWS Lambda 作成/変更/削除 $ sam local invoke ローカルでのLambda関数の実⾏
  19. © 2023, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. Demoで作成するサンプルAPI SAMテンプレート AWS Cloud Amazon API Gateway Amazon DynamoDB AWS Lambda Amazon Translate AWSTemplateFormatVersion: '2010-09-09' Transform: 'AWS::Serverless-2016-10-31' Description: HelloWorld Resources: HelloWorld: Type: 'AWS::Serverless::Function' Properties: Handler: index.handler Runtime: python3.8 CodeUri: src/handlers/func1 Description: HelloWorld MemorySize: 128 Timeout: 3 Events: HelloApi Type: Api Properties: Path: /hello Method: get http://xxxx/hello?input_text=こんにちは︕ →Hello!
  20. © 2023, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. AWS SAMを使った開発の流れ ターミナル sam logs (ログの閲覧) 好みの開発環境 (VS Code等) SAMテンプレート Lambda関数 Lambda関数のログ sam init (プロジェクトの⽣成) AWS Cloud Amazon API Gateway Amazon DynamoDB AWS Lambda Amazon Translate 開発 コマンドの実⾏ AWS SAM CLI ク ラ ウ ド ロ | カ ル テスト実⾏ 実⾏ログ sam deploy (プロジェクトのデプロイ) 編集 sam local invoke (ローカルでのLambda関数の実⾏)
  21. © 2023, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. AWS SAMを使った開発の流れ ターミナル sam logs (ログの閲覧) 好みの開発環境 (VS Code等) SAMテンプレート Lambda関数 Lambda関数のログ sam init (プロジェクトの⽣成) AWS Cloud Amazon API Gateway Amazon DynamoDB AWS Lambda Amazon Translate 開発 コマンドの実⾏ AWS SAM CLI ク ラ ウ ド ロ | カ ル テスト実⾏ 実⾏ログ sam deploy (プロジェクトのデプロイ) 編集 sam local invoke (ローカルでのLambda関数の実⾏) 再 掲
  22. © 2023, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. まとめ • AWS SAM はサーバーレスアプリケーションの管理・開発を効率的にするツール • SAM テンプレートを使うとサーバーレスアプリケーションの管理が容易に • SAM CLI を駆使すると、サーバーレスアプリケーション開発が ローカルから効率的に⾏える
  23. © 2023, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 今後に向けて 本セッションでご紹介した内容と類似したものを 具体的な画⾯とデモを⾒ながら進めることができるハンズオンです https://pages.awscloud.com/JAPAN-event-OE-Hands-on-for-Beginners-Serverless-2-2022-reg-event.html
  24. © 2023, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. サーバーレス⾃⼰学習ガイド https://aws.amazon.com/jp/serverless/patterns/redirect-serverless-steps n ハンズオンから始まる 6つのステップ - Hands-on for Beginners も包含 n ご⾃分のペースで 主要ポイントを学べます n 開発作業の諸処で役⽴つ サーバーレス技術情報 サイトもご紹介
  25. © 2023, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 600+ ある AWS Skill Builder の無料デジタルコースで学ぼう 30 以上の AWS ソリューションの中から、⾃分にもっとも関係 のあるクラウドスキルとサービスにフォーカスし、⾃習⽤のデ ジタル学習プランとランプアップガイドで学ぶことができます。 AWS TRAINING & CERTIFICATION ⾃ 分 に 合 っ た ス キ ル ア ッ プ ⽅ 法 で 学 ぼ う E X P L O R E . S K I L L B U I L D E R . A W S » あなたのクラウドスキルを AWS 認定で証明しよう 業界で認められた資格を取得して、スキルアップの⼀歩を 踏み出しましょう。AWS Certified Cloud Practitioner の 取得⽅法と、準備に役⽴つ AWS のリソースをご覧くださ い。 受 験 準 備 の た め の リ ソ ー ス に ア ク セ ス し よ う »
  26. © 2023, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. AWS Builders Online Series に ご参加いただきありがとうございます 楽しんでいただけましたか? ぜひアンケートにご協⼒ください。 本⽇のイベントに関するご意⾒/ご感想や今後のイベントについての ご希望や改善のご提案などがございましたら、ぜひお聞かせください。 [email protected] twitter.com/awscloud_jp facebook.com/600986860012140 https://www.youtube.com/user/AmazonWebServicesJP https://www.linkedin.com/showcase/aws-careers/ twitch.tv/aws