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

第113回 雲勉【オンライン】AWS SAMを使ってLINE WORKS Botを作ってみた

iret.kumoben
September 07, 2023

第113回 雲勉【オンライン】AWS SAMを使ってLINE WORKS Botを作ってみた

iret.kumoben

September 07, 2023
Tweet

More Decks by iret.kumoben

Other Decks in Technology

Transcript

  1. 0.講師⾃⼰紹介 2 n 天野 典昭(あまの のりあき) • クラウドインテグレーション事業部 開発第⼆セクション •

    Webアプリケーション中⼼に開発エンジニアとして活動 • 2019年7⽉⼊社 • 趣味︓⾳楽全般(聴いたり観たり演奏したり…)
  2. 1.今回の勉強会の概要 5 AWS SAMにてサーバーレス構成を構築し、その上でLINE WORKS Botを動かしてみる。 ・AWS SAMでサーバーレスを構築する。(今回のメイン) ・その上で、サーバーレス構成に相性のいいLINE WORKS

    Botを動かしてみる。 ・今回はAWS SAMに触れたことがないような⼈向けの⼊⾨レベルの内容であり、 こんな流れでできるというところを確認する。 ・Bot部分については、こういう感じで動かすことができるというレベルに留め、 詳細な作成⽅法は省略する。
  3. 2.AWS SAMとは 7 AWS SAMとは・・・ <AWS公式サイトより> AWS サーバーレスアプリケーションモデル (AWS SAM)

    は、サーバーレスアプリケーション構築⽤のオープンソースフレーム ワークです。迅速に記述可能な構⽂で関数、API、データベース、イベントソースマッピングを表現できます。リソースごとに わずか数⾏で、任意のアプリケーションを定義して YAML を使⽤してモデリングできます。 簡単にいうと、 Lambda、API Gateway、DynamoDB等を使ったサーバーレス構成を⼿軽に構築できるフレームワーク 厳密には、サーバーレスに特化したCloud Formationの機能を拡張したもの SAM⽤に⽤意されたテンプレートを簡単に記述できる
  4. 2.AWS SAMとは 8 Cloud Formationのテンプレート記述例 AWS SAMのテンプレート記述例 AWS Black Beltより

    https://www.slideshare.net/AmazonWebServicesJapan/20190814-aws-black-belt-online-seminar-aws-serverless-application-model-165314501 (例)Hello world出⼒のLambda関数を構築するスクリプト AWS SAMの⽅が簡単に記載できる
  5. 3-2.アプリケーションテンプレートの作成 15 項⽬ 内容 Which template source would you like

    to use? 1 - AWS Quick Start Templates 2 - Custom Template Location AWSで⽤意されたテンプレートを使⽤するか⾃⾝で⽤意したカスタムテンプ レートを使⽤するか。 今回は前者を選択。 Choose an AWS Quick Start application template 1 - Hello World Example 2 - Data processing 3 - Hello World Example with Powertools for AWS Lambda 4 - Multi-step workflow 5 - Scheduled task 6 - Standalone function 7 - Serverless API 8 - Infrastructure event management 9 - Lambda Response Streaming 10 - Serverless Connector Hello World Example 11 - Multi-step workflow with Connectors 12 - Full Stack 13 - Lambda EFS example 14 - Hello World Example With Powertools 15 - DynamoDB Example 16 - Machine Learning どのテンプレートを使⽤するか。 今回は1を選択。 Use the most popular runtime and package type? (Python and zip) [y/N]: Pythonとzipでのアップロード構成にするか。 今回はNoを選択。 sam init コマンドの対話式で設定する内容 (1/3)
  6. 3-2.アプリケーションテンプレートの作成 16 項⽬ 内容 Which runtime would you like to

    use? 1 - aot.dotnet7 (provided.al2) 2 - dotnet6 3 - go1.x 4 - go (provided.al2) 5 - graalvm.java11 (provided.al2) 6 - graalvm.java17 (provided.al2) 7 - java17 8 - java11 9 - java8.al2 10 - java8 11 - nodejs18.x 12 - nodejs16.x 13 - nodejs14.x 14 - python3.9 15 - python3.8 16 - python3.7 17 - python3.11 18 - python3.10 19 - ruby3.2 20 - ruby2.7 21 - rust (provided.al2) どの⾔語を使⽤するか。 今回はpython3.8を選択。 sam init コマンドの対話式で設定する内容 (2/3)
  7. 3-2.アプリケーションテンプレートの作成 17 項⽬ 内容 What package type would you like

    to use? 1 - Zip 2 - Image LambdaのデプロイをZipにするかImageにするか。 今回はZipを選択。 Would you like to enable X-Ray tracing on the function(s) in your application? [y/N]: X-Rayトレースを有効にするか。 今回はNoを選択。 Would you like to enable monitoring using CloudWatch Application Insights? For more info, please view https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/clo udwatch-application-insights.html [y/N]: CloudWatch Application Insightsによるモニタリングを有効にするか。 今回はNoを選択。 Project name [sam-app]: プロジェクト名を何にするか。 今回はデフォルトの sam-app を設定。 sam init コマンドの対話式で設定する内容 (3/3)
  8. 3-2.アプリケーションテンプレートの作成 18 sam init コマンドにより⾃動作成されるファイル⼀式 今回は template.yaml、hello_world/app.py の内容を確認する。 フォルダ/ファイル 内容

    eventsフォルダ Lambdaに送られるイベント情報(テスト⽤) testsフォルダ テスト⽤コード hello_worldフォルダ メイン処理となるLambda関数 samconfig.toml プロジェクトの設定を構成 template.yaml SAMテンプレート
  9. 3-2.アプリケーションテンプレートの作成 23 Type 内容 AWS::Serverless::Function AWS Lambda 関数、AWS Identity and

    Access Management (IAM) 実⾏ロール、およびこの関数をトリガーする イベントソースマッピングを作成 AWS::Serverless::Api HTTPS エンドポイント経由で呼び出すことができる Amazon API Gateway リソースとメソッドのコレクションを 作成 AWS::Serverless::SimpleTable 単⼀属性のプライマリキーで DynamoDB テーブルを作成 AWS::Serverless::LayerVersion Lambda 関数に必要なライブラリまたはランタイムコードが含まれる Lambda LayerVersion を作成 AWS::Serverless::Application Serverless Application Repositoryに存在するアプリケーションを作成 Resourcesに指定できる主なType
  10. 4.Botの作成 32 Botの作成 LINEWORKS Developer Console (*1) に⼊り、Botメニューか らBotを作成する。 このとき、Callback

    URLには先程作成したアプリケーションの URLを指定する。これにより、ユーザーがメッセージを送信した ときに、ここで指定したAPIが呼ばれるようになる。 (*1) https://developers.worksmobile.com/jp/ アカウントは事前に作成しておく。