20211014のGoに関する記事は5件です。

GoとGORMを使った勉強(4)

概要 ・GoとGORMを使った勉強(3)の続き ※さらに続きあります(作成中) ・前回まで:ローカル環境でDBに接続してテーブルの情報を画面に表示  今回  :レンタルサーバーでDBに接続してテーブルの情報を画面に表示 準備 ・レンタルサーバーを借りる ・レンタルサーバーにSSH接続しておく よければこちらの記事を参考にしてください  さくらのレンタルサーバーに接続する方法(超初心者向け) レンタルサーバーでDBを用意する 最終的にサーバーでファイルを送ってもDBがなければ動かないので、DBを用意します。 さくらインターネット公式のサポート情報に写真付きでわかりやすく手順が書いてあるのでこの通りにデータベースを作ってください。 データベースの作成・追加・削除・パスワード再設定 表示させる予定のテーブルを用意する  GoとGORMを使った勉強(1) で用意したようなテーブルを作ります。 なお、今回は 「サーバコントロールパネル」から「phpMyAdmin」へログインして、SQLを使って作ることにしました。 作成したいテーブルを確認 目標 #usersテーブルの状態 desc users; +------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | MUL | NULL | auto_increment | | name | varchar(255) | YES | | NULL | | | created_at | datetime | YES | | NULL | | | updated_at | datetime | YES | | NULL | | | deleted_at | datetime | YES | | NULL | | +------------+--------------+------+-----+---------+----------------+ select * from users; +----+-------------+------------+------------+------------+ | id | name | created_at | updated_at | deleted_at | +----+-------------+------------+------------+------------+ | 1 | sample_user | NULL | NULL | NULL | +----+-------------+------------+------------+------------+ phpMyAdminへのログイン 1.さくらのレンタルサーバーのサーバコントロールパネルにログインします。 2.Webサイト/データから『データベース』を選択し、そこから『phpMyAdminログイン』をクリックします。 3.phpMyAdminのログイン画面が表示されるので「ユーザー名」、「パスワード」を入力して 『実行』をクリックし、ログインしてください。 ユーザ名 初期ドメインのサブドメイン部分 (例:初期ドメインが example.sakura.ne.jpの場合、exampleと入力) パスワード データベース作成時に設定したパスワード テーブルを作る 1.phpMyAdminへログインできたら上のメニューバーから「データベース」をクリックします 2.先ほど作成したデータベース名をクリックして移動します。 3.移動したら上のメニューバーから「SQL」をクリックします。 4.入力スペースにSQLを入力して「実行」をクリックすることでテーブルを作ることができます。 phpMyAdmin_SQL入力スペース #usersテーブルを作成 create table users(id int auto_increment,name varchar(255),index(id),created_at datetime,updated_at datetime,deleted_at datetime); #データを追加:phpMyAdmin_SQL入力スペース insert into users values(null,"sample_user",now(),now(),null); これでテーブルの用意はできました。 サーバーに「index.cgi」を送る 前回の記事でmain.goをbuildしてできた「index.cgi」をサーバーに送ります。 今回はscpコマンドを使って送ります。 scpコマンド リモートマシンとローカルマシン、あるいはリモートマシン同士でファイルをコピーする際に使用するLinuxのコマンド。 通信にはsshを使用する。sshコマンドと同じ認証でデータ転送の通信を暗号化する。sshを使用するため、ssh接続をできるようにしておく必要があります。 使い方:scp [オプション] コピー元パス 保存先パス ローカルマシン #scpでファイルを送ります scp index.cgi piyo:/home/hoge/www サーバーに「.env」ファイルを用意する サーバーに接続する ローカルマシン ssh hoge #Welcome to FreeBSD!と表示されたらログイン成功です。 「index.cgi」を送った場所に移動する 今回の場合は/home/hoge/wwwへ移動します。 .envファイルを作る レンタルサーバー/home/hoge/www #Vimを開く % vim .env 「.envファイル」に接続情報を書く 接続情報はレンタルサーバのコントロールパネルホームから確認してください。 レンタルサーバー/home/hoge/www/.env GIN_MODE=release DB_USER=hoge DB_PASS=hogehoge DB_HOST=mysql57.hoge.sakura.ne.jp DB_NAME=hoge_fuga 確認  http://初期ドメイン/users レンタルしているホームページを確認してuser情報を画面に表示できたら成功
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

GoとGORMを使った勉強(3)

概要 ・GoとGORMを使った勉強(2)の続き ※さらに続きあります ・前回まで:ローカル環境でDBに接続してテーブルの情報を画面に表示  今回  :レンタルサーバーで画面表示するための準備 今回すること ・「.envファイル」に接続情報を書き込む ・「controller.go」を書き換える ・main.goをbuildする .envファイルを作成し接続情報を書き込む main.go root/.env DB_USER=fuga DB_PASS=fugapass DB_HOST=127.0.0.1 DB_NAME=hoge controller.goのDBとの接続する処理の部分を書き換える 「.envファイル」から接続情報を読み込むように「controller.go」を書き換える。 最終的にはサーバー上にサーバー用の「.envファイル」を置いておくことで、コードを書き換えることなく、サーバーとローカル両方で動作するようになる。 controller/controller.go package controller import ( "gorm.io/driver/mysql" "gorm.io/gorm" ) func DB() *gorm.DB { ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー 変更前 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー dsn := "fuga:fugapass@tcp(127.0.0.1:3306)/hoge?charset=utf8mb4&parseTime=True&loc=Local" ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー 変更後 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー dbUser := os.Getenv("DB_USER") dbPass := os.Getenv("DB_PASS") dbHost := os.Getenv("DB_HOST") dbName := os.Getenv("DB_NAME") dsn := fmt.Sprintf("%s:%s@tcp(%s:3306)/%s?charset=utf8mb4&parseTime=True&loc=Local", dbUser, dbPass, dbHost, dbName) ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{}) if err != nil { panic("failed to connect database") } return db } controller/controller.go package controller import ( "fmt" "os" "gorm.io/driver/mysql" "gorm.io/gorm" ) func DB() *gorm.DB { dbUser := os.Getenv("DB_USER") dbPass := os.Getenv("DB_PASS") dbHost := os.Getenv("DB_HOST") dbName := os.Getenv("DB_NAME") dsn := fmt.Sprintf("%s:%s@tcp(%s:3306)/%s?charset=utf8mb4&parseTime=True&loc=Local", dbUser, dbPass, dbHost, dbName) db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{}) if err != nil { panic("failed to connect database") } return db } main.go ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー 省略 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー func main() { file, _ := os.OpenFile("app.log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666) defer file.Close() gin.DefaultWriter = io.MultiWriter(file) r := gin.Default() r.GET("/users", controller.ListUsers) ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー 変更前 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー r.Run(":80") ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー 変更後 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー if os.Getenv("GIN_MODE") == "release" { cgi.Serve(r) } else { r.Run(":80") } ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー } main.goをbuildする maingoをbuildすることでバイナリファイルが作られます。このファイルを使いたい環境によってオプションを変更する必要があるため環境を調べます。 ファイルを使いたい環境でgo envを実行することで情報が取得できます。 私の場合は、さくらのレンタルサーバーを使っているのでサーバーに接続してgo envして 「GOOS=freebsd」,「GOARCH=amd64」を確認しました GOOS=freebsd GOARCH=amd64 go build -a -tags netgo -installsuffix netgo --ldflags '-extldflags "-static"' -o index.cgi main.go go buildオプション -aすでに最新であるパッケージを全て更新します。 -tags netgo -installsuffix netgoデフォルトのインストールパッケージと区別するため、このサフィックスを利用して依存するパッケージをインストールします。 -o index.cgi main.go 出力するファイル名を指定します。今回はindex.cgiに設定しています。 ※そのほかのオプションについてはよくわからず使っているので後日追記します <参考記事> https://qiita.com/Utr/items/9469c1611abe8a0a3486 https://astaxie.gitbooks.io/build-web-application-with-golang/content/ja/01.3.html 次回、レンタルサーバーにファイルを送ります
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

GoとGORMを使った勉強(2) 

概要 ・GoとGORMを使った勉強(1)の続き ※さらに続きあります ・機能を追加:logを記録 ・改善:機能ごとにファイル分け 機能追加(1):logを記録する func main()のカッコ{}の中に下記を追記。 app.logファイルが自動で作成されこれにlogが記録される。 file, _ := os.OpenFile("app.log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666) defer file.Close() gin.DefaultWriter = io.MultiWriter(file) main.go package main import ( "io" "os" "github.com/gin-gonic/gin" _ "github.com/joho/godotenv/autoload" "gorm.io/driver/mysql" "gorm.io/gorm" ) func main() { file, _ := os.OpenFile("app.log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666) defer file.Close() gin.DefaultWriter = io.MultiWriter(file) r := gin.Default() r.GET("/users", ListUsers) r.Run(":80") } func DB() *gorm.DB { dsn := "fuga:fugapass@tcp(127.0.0.1:3306)/hoge?charset=utf8mb4&parseTime=True&loc=Local" db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{}) if err != nil { panic("failed to connect database") } return db } func ListUsers(c *gin.Context) { var users []User db := DB() db.Find(&users) // find product with integer primary key c.JSON(200, gin.H{ "user": users, }) } type User struct { gorm.Model Name string } 改善:機能ごとにファイル分け 機能ごとにファイルを分ける。 ・メインの処理⇨コントローラー ・データベースの設定とかを書いた処理⇨モデル 実践 controllerディレクトリを作成 controller/contlloer.go package controller import ( "gorm.io/driver/mysql" "gorm.io/gorm" ) func DB() *gorm.DB { dsn := "fuga:fugapass@tcp(127.0.0.1:3306)/hoge?charset=utf8mb4&parseTime=True&loc=Local" db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{}) if err != nil { panic("failed to connect database") } return db } controller/user.go package controller import ( "example.com/m/model" "github.com/gin-gonic/gin" ) func ListUsers(c *gin.Context) { var users []model.User db := DB() db.Find(&users) // find product with integer primary key c.JSON(200, gin.H{ "user": users, }) } ・modelディレクトリ作成 model/users.go package model import "gorm.io/gorm" type User struct { gorm.Model Name string } main.goがスッキリした main.go package main import ( "io" "os" "example.com/m/controller" "github.com/gin-gonic/gin" _ "github.com/joho/godotenv/autoload" ) func main() { file, _ := os.OpenFile("app.log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666) defer file.Close() gin.DefaultWriter = io.MultiWriter(file) r := gin.Default() r.GET("/users", controller.ListUsers) r.Run(":80") }
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

AWS SAM+Lambda+Goではじめるサーバーレスアプリケーション開発

目的 AWS SAM を使って Go 言語でサーバーレスアプリケーションを開発するための、環境構築の手順をまとめます。個人的な備忘録を兼ねているため、必須ではない細かな設定なども記載しています。Lambda でサーバーレスアプリケーションの開発をはじめようと思っている方の参考になれば幸いです。 当記事に含まれる内容 当記事に含まれる内容は下記の通りです。ソフトウェアのインストールなどは既にわかりやすい記事があるので、そのリンクを貼っています。 Hello World アプリケーションについて WSL2 の設定 Docker の設定 AWS CLI の設定 Session Manager プラグインの設定 SAM と Go のインストール Ubuntu の環境変数設定の自動化 VSCode の設定 SAM プロジェクトの新規作成 SAM プロジェクトのデプロイ AWS コンソールから各サービスを確認 Hello World アプリケーションについて Hello World アプリケーションは、SAM プロジェクトを新規作成するときに便利なサンプルプロジェクトです。クライアントが API Gateway のエンドポイントにリクエストすると、「Hello, xxx.xxx.xxx.xxx(Lambda の IP アドレス)」とレスポンスを返す、シンプルなアプリです。はじめは、このアプリに変更を加えながらオリジナルのサーバーレスアプリケーションを開発していくと、楽だと思います。 Hello World アプリケーションの AWS 構成 構成図上のサービスの概要をひと言でまとめました。詳細が知りたい方はサービス名のリンクを参照してください。 Amazon API Gateway:API の開発や公開などが簡単に行えるサービスです。 AWS Lambda:サーバーレスで小さなプログラムを実行できるサービスです。 Amazon CloudWatch Logs:AWS リソースのログをモニタリングできるサービスです。 WSL2 の設定 WSL2 (Windows Subsystem for Linux 2) は、Windows 10 上で Linux を動作させるための仕組みです。サーバーレスアプリケーションをローカル環境でテストする際に、SAM は Lambda ファンクションを実行するための Docker コンテナを立ち上げます。Windows 上で Docker を利用するとエラーにハマることが多いので、WSL2 上に環境構築しています。WSL1 だと裏で動いているのは Windows なので、Docker をはじめとする一部のソフトウェアでは不具合が生じます。そのため WSL2 を利用しています。 WSL2 のインストール インストールがまだの方は、下記のサイトなどを参考にインストールをお願いします。 WSL のインストール インストールが終わったら PowerShell を開き、 wsl --list --verbose コマンドで WSL のバージョンを確認してください。下記のように VERSION が 2 と表示されていれば大丈夫です。 [win] wsl --list --verbose NAME STATE VERSION * Ubuntu Running 2 docker-desktop Running 2 docker-desktop-data Running 2 WSL に Windows の PATH を引き継がないように設定する WSL はそのまま利用すると Windows の環境変数の PATH を引き継ぎます。WSL 上の /etc/wsl.conf ファイルを編集すると、Windows の PATH を引き継がないように設定できます。 # WSL 上の /etc/wsl.conf ファイルを編集 $ sudo vim /etc/wsl.conf # wsl.conf がない場合は新規作成 $ sudo touch /etc/wsl.conf wsl.conf に下記の文言を追記してください。 [interop] appendWindowsPath = false 以上で WSL の設定は完了です。 参考サイト:WSLでWindowsのPATHを引き継がないようにする方法 Docker の設定 1. WSL に Docker と docker-compose をインストール Docker の公式サイトなどを参考に、WSL に Docker や docker-compose をインストールします。 Docker のインストール docker-compose のインストール Windows に Docker Desktop をインストール Windows に Docker Desktop をインストールして、Docker Desktop を WSL バックエンドで使えるように設定します。下記のサイトなどを参考に、Docker Desktop のインストールをお願いします。 Windows に Docker Desktop をインストール インストールが完了したら、Dokcer Desktop を開いて以下の設定を行います。 Settigs > General を開き、Expose daemon on tcp://localhost:2375 without TLS にチェックをつける Apply & Restart を実行する PC を再起動する ※一度再起動しないと VSCode から WSL に接続した際に Dokcer を起動できないようです。 以上で Docker の設定は完了です。 AWS CLI の設定 AWS CLI は AWS をコマンドラインで操作・管理するためのツールです。インストールがまだの方は、下記のサイトなどを参考にインストールをお願います。 AWS CLI をインストール (LINUX) インストールが完了したら aws configure コマンドを実行して、AWS Access Key ID、AWS Secret Access Key、Default region name、Default output format を入力します。 $ aws configure AWS Access Key ID [None]: XXXXXXXXXX AWS Secret Access Key [None]: XXXXXXXXXX Default region name [None]: ap-northeast-1 Default output format [None]: json 設定が完了したら、aws sts get-caller-identity コマンドで IAM ユーザーアクセス権があることを確認してみます。 $ aws sts get-caller-identity { "UserId": "XXXXXXXXXX", "Account": "XXXXXXXXXX", "Arn": "arn:aws:iam::XXXXXXXXXX:user/XXXXXXXXXX" } 以上で AWS CLI の設定は完了です。 Session Manager プラグインの設定 Session Manager プラグインをインストールしておくと、プライベートサブネットの EC2 に SSH で接続したり、SCP で EC2 - ローカル間でファイル転送ができるようになり便利です。興味のある方は、下記のサイトなどを参考にインストールしてみてください。 Session Manager plugin をインストール (LINUX) インストールにあたり WSL の CPU 情報が不明な場合は、sudo lshw -class processor コマンドで確認できます。 $ sudo lshw -class processor [sudo] password for funaki: *-cpu product: Intel(R) Core(TM) i7-9700 CPU @ 3.00GHz vendor: Intel Corp. physical id: 1 bus info: cpu@0 width: 64 bits capabilities: ... インストールが完了したら、~.ssh\config にある SSH 設定ファイルに下記の文言を追記して、Session Manager を通した SSH 接続を有効にします。 # SSH over Session Manager host i-* mi-* ProxyCommand sh -c "aws ssm start-session --target %h --document-name AWS-StartSSHSession --parameters 'portNumber=%p'" 以上で Session Manager プラグイン の設定は完了です。 プライベートサブネットにある EC2 に SSH や SCP でアクセスする方法について、下記の記事にまとめています。興味のある方はぜひご覧ください。 AWS CLIを使用してEC2にSSHやSCPでアクセスする SAM と Go のインストール 続いて、SAM と Go のインストールです。SAM をインストールする前に Python のパッケージマネージャをインストールする必要があります。以下の順番でコマンドを実行してください。 ※Delve という Go のデバッグツールもインストールしていますが、インストールしなくても問題ありません。 1. sudo apt update # Ubuntu のローカルキャッシュ済みパッケージ一覧を更新 2. sudo apt install python3-pip # SAM をインストールするため、Python のパッケージマネージャをインストール 3. sudo pip3 install aws-sam-cli # SAM をインストール 4. sudo apt install golang-go # Go をインストール 5. go install github.com/go-delve/delve/cmd/dlv@latest # Go のリモートデバッグ用に Delve をインストール ※2021年7月の SAM CLI の重要なアップグレードにより、バージョン 1.25 以上へのアップデートが必要になりました。もし古いバージョンをお使いでしたら、下記のコマンドで SAM CLI をアップデートしてください。 sudo pip3 install -U aws-sam-cli # SAM CLI をアップデート 下記のコマンドで Python、SAM、Go がインストールされていることを確認できます。 $ pip3 --version pip 20.0.2 from /usr/lib/python3/dist-packages/pip (python 3.8) $ sam --version SAM CLI, version 1.21.1 $ go version go version go1.13.8 linux/amd64 $ dlv version Delve Debugger Version: 1.6.0 Build: $Id: 8cc9751909843dd55a46e8ea2a561544f70db34d 以上で SAM と Go のインストールは完了です。 Ubuntu の環境変数設定の自動化 export コマンドで GOPATH や PATH などの環境変数を設定しても、Ubuntu ターミナルを閉じると初期化されてしまいます。Ubuntu ターミナルを起動する度に環境変数を設定するのは面倒なので、起動時に環境変数が自動で設定されるよう、下記のコマンドで ~.profile に export コマンドを追記しておきます。 $ cd # HOME ディレクトリに移動 $ sudo echo export GOPATH=$HOME/go >> .profile # GOPATH の設定 $ sudo echo export PATH=$PATH:$GOPATH/bin >> .profile # PATH の設定 ~.profile ファイルに下記の 2 行が追記されていれば設定完了です。 export GOPATH="Path to Go" export PATH="Path to Go"/bin 参考サイト:【Linux】環境変数の確認・設定・削除・永続化について VSCode の設定 Go で開発するときの IDE は VSCode を利用しています。VSCode の設定内容について、備忘録として残しておきます。 1. 拡張機能と依存パッケージをインストール 下記の記事の以下 2 項目を実行します。 VSCodeでGo言語の開発環境を構築する Go言語の拡張機能をインストール 拡張機能の依存パッケージをインストール 以上です。 2. VSCode のフォーマットツールを gofmt に設定 VSCode のフォーマットツールを (1) でインストールした gofmt に設定します。 メニューから File > Preferences > Settings > Extensions > Go > Format Tool の順に開き、gofmt を選択します。 以上です。 gofmt がインストールされているかどうかは、下記のコマンドで確認できます。 $ which gofmt /usr/bin/gofmt 3. VSCode のリントツールを golangci-lint に設定 VSCode のリントツールを (1) でインストールした golangci-lint に設定します。 メニューから file > Preferences > Settings > Extensions > Go > Lint Tool の順に開き、 golangci-lint を選択します。 以上です。 golangci-lint がインストールされているかどうかは、下記のコマンドで確認できます。 $ golangci-lint --version golangci-lint has version 1.33.0 built from b90551c on 2020-11-23T05:15:36Z 4. VSCode から WSL に接続 VSCode から WSL に接続する方法は、下記の記事を参考にしました。 VSCode から WSL に接続する 上記サイトの以下 2 項目を実行します。 Visual Studio Code を WSL へ接続する Ubuntu から Visual Studio Code を起動する 以上です。 SAM プロジェクトの新規作成 ここからは SAM プロジェクトの新規作成に入ります。冒頭で説明した通り、ここでは Hello World アプリケーションを作成していきます。 まず、WSL2 を起動して、サンプルプロジェクトをクローンするディレクトリに移動します。 $ cd /path/to/dir サンプルプロジェクトを作成するにはsam init [OPTION] コマンドを使用します。オプションをつけて sam init --runtime go1.x --name プロジェクト名 として、ランタイムとプロジェクト名を指定します。すると、コマンド入力後にテンプレートについて聞かれるので、(1) の「クイックスタートテンプレート」を選択します。 $ sam init --runtime go1.x --name SamTest Which template source would you like to use? 1 - AWS Quick Start Templates 2 - Custom Template Location Choice: 1 # 1 を選択 使用しているコマンドのオプションの解説です。 オプション 説明 --runtime アプリケーションのランタイムを指定します。言語設定のようなものです。 --name プロジェクトディレクトリに任意の名前をつけることができます。 その他のオプションが知りたい方は、AWS デベロッパーガイド をご参照ください。 次に、パッケージタイプを聞かれるので、(1) の「Zip」を選択します。 What package type would you like to use? 1 - Zip (artifact is a zip uploaded to S3) 2 - Image (artifact is an image uploaded to an ECR image repository) Package type: 1 # 1 を選択 Cloning from https://github.com/aws/aws-sam-cli-app-templates 最後に、クイックスタートテンプレートの種類を決めます。ここでは、(1) の「Hello World Example」を選択します。 AWS quick start application templates: 1 - Hello World Example 2 - Step Functions Sample App (Stock Trader) Template selection: 1 # 1 を選択 ----------------------- Generating application: ----------------------- Name: SamTest Runtime: go1.x Dependency Manager: mod Application Template: hello-world Output Directory: . Next steps can be found in the README file at ./SamTest/README.md 以上でサンプルプロジェクトが作成されます。 プロジェクトの内容は下記の通りです。 . ├── Makefile <-- 自動ビルドや自動デプロイなどの設定を記載 ├── README.md <-- プロジェクトの説明ファイル ├── hello-world <-- Lambda ファンクションのコードを格納するディレクトリ │ ├── main.go <-- Lambda ファンクションのコード │ └── main_test.go <-- ユニットテスト └── template.yaml <-- SAM テンプレート template.yaml ファイルは SAM テンプレートと呼ばれるもので、CloudFormation を拡張したものになっています。SAM テンプレートのリソースには Lambda ファンクション(AWS::Serverless::Function)しか記載されていませんが、暗黙的に以下のリソースが作成されます。各サービスの当アプリでの役割も簡単に記載しておきます。 Amazon API Gateway:API Gateway が提供するエンドポイントへのリクエストをトリガーに Lambda が起動します。 IAM ロール:Lambda にアタッチされる IAM ロールです。Lambda に各 AWS サービスへのアクセス権を与えます。 Amazon CloudWatch ロググループ:Lambda のログをモニタリングするためのロググループです。 SAM プロジェクトのデプロイ では、サンプルプロジェクトの Hello World アプリケーションを、このまま AWS にデプロイしていきたいと思います。 1. プロファイルの設定 デプロイする前に、デプロイ先の AWS アカウント を確認しておきましょう。僕の場合は、名前付きプロファイル を設定して、プロファイルを切り替えることでデプロイ先を指定しています。 プロファイルを設定済みの方は、aws configure list コマンドで現在使用中のプロファイルを表示できます。 $ aws configure list Name Value Type Location ---- ----- ---- -------- profile Name manual --profile access_key ****************XXXX shared-credentials-file secret_key ****************XXXX shared-credentials-file region ap-northeast-1 config-file ~/.aws/config まだ IAM ユーザーのアクセスキーとシークレットアクセスキーを作成していない方は、下記の記事を参考に作成してください。 AWS ユーザーガイド アクセスキー ID とシークレットアクセスキー プロファイルの設定がまだの方は、aws configure --profile プロファイル名 で設定できます。 $ aws configure # デフォルトのプロファイルを設定 $ aws configure --profile Name # 名前付きプロファイルを設定 2. ビルド デプロイ先の AWS アカウントのプロファイルの設定が完了したら、sam build コマンドでビルドします。 $ sam build Building codeuri: /path/to/project/dir/SamTest/hello-world runtime: go1.x metadata: {} functions: ['HelloWorldFunction'] Running GoModulesBuilder:Build Build Succeeded Built Artifacts : .aws-sam/build Built Template : .aws-sam/build/template.yaml Commands you can use next ========================= [*] Invoke Function: sam local invoke [*] Deploy: sam deploy --guided 以上でビルド完了です。 3. デプロイ はじめてデプロイする場合は、sam deploy --guided コマンドを利用し、スタック名やリージョンなどを指定します。 $ sam deploy --guided Configuring SAM deploy ====================== Looking for config file [samconfig.toml] : Not found Setting default arguments for 'sam deploy' ========================================= Stack Name [sam-app]: SamTest AWS Region [ap-northeast-1]: #Shows you resources changes to be deployed and require a 'Y' to initiate deploy Confirm changes before deploy [y/N]: y # Yes を選択 #SAM needs permission to be able to create roles to connect to the resources in your template Allow SAM CLI IAM role creation [Y/n]: Y # Yes を選択 HelloWorldFunction may not have authorization defined, Is this okay? [y/N]: y Save arguments to configuration file [Y/n]: # Yes を選択 SAM configuration file [samconfig.toml]: # デフォルトの samconfig.toml で作成 SAM configuration environment [default]: # デフォルトの default で設定 ~省略~ Successfully created/updated stack - SamTest in ap-northeast-1 下記に、質問される内容を記載しておきます。 スタック名:CloudFormation にデプロイするスタックの名前。これはアカウントと地域に固有である必要があります。プロジェクト名から始めるとわかりやすいです。 AWSリージョン:アプリをデプロイする AWS リージョンを指定します。 展開前に変更を確認する:Yes に設定すると、デプロイするときにリソースの変更内容を確認できます。No に設定すると、リソースの変更内容が表示されないまま自動的にデプロイされます。 SAM CLI IAMロールの作成を許可する:AWS SAM テンプレートは、作成された Lambda ファンクションが他の AWS サービスにアクセスするために必要な IAM ロールを作成します。デフォルトでは、最低限必要な権限を持つIAMロールが作成されます。Lambda にアタッチする IAM ロールを自分で作成する場合には、オプションで --capabilities CAPABILITY_NAMED_IAM を指定する必要があります。 引数をsamconfig.tomlに保存:Yes に設定すると、選択した内容がプロジェクト内の samconfig.toml ファイルに保存されます。samconfig.toml を作成しておくと、次回以降のデプロイは sam deploy コマンドだけで実行することが可能です。 質問にひと通り回答したら、ビルドしたプログラムが S3 にアップロードされ、template.taml で定義した AWS リソースが作成されていきます。 "Successfully created/updated stack" というメッセージが表示されたら、デプロイ完了です。 ターミナルに表示されている Outputs に、デプロイされた Lambda ファンクションのエンドポイント(Value)が記載されています。 Key HelloWorldAPI Description API Gateway endpoint URL for Prod environment for First Function Value https://xxxxxxxx ブラウザからエンドポイントにアクセスしてみます。 以上のように表示されれば、デプロイ成功です。 ここから少しずつコードに変更を加えたり、SAM テンプレートに変更を加えたりしていくと、オリジナルのサーバーレスアプリケーションを開発することができます。 AWS コンソールから各サービスを確認 最後に、AWS のコンソールから作成したアプリの各サービスを見てみます。なお、各サービスには自動で名前がつけられていますが、SAM テンプレートを使って任意の名前をつけることができます。 CloudFormation CloudFormation > スタック の順に開くと、sam deploy --guided で指定したスタック名でスタックが作成されていることがわかります。スタック名をクリックすると詳細を確認できます。SAM CLI を使ってデプロイした場合、SAM テンプレートの内容をもとに CloudFormation で各リソースが作成されることがわかると思います。2 回目以降のデプロイでは、このスタックを更新して各リソースに変更を加えていくことができます。 AWS Lambda Lambda > 関数 の順に開くと、新たに Lambda ファンクションが作成されていることがわかります。関数名から詳細を確認できます。 API Gateway API Gateway を開くと、新たに API が作成されていることがわかります。API 名から詳細を確認できます。 CloudWatch ロググループ CloudWatch > ロググループ の順に開くと、新たにロググループが作成されていることがわかります。ロググループ名から Lambda のログファイルを見ることができます。 以上で当記事の内容は終了です。お疲れさまでした! おわりに 説明が簡単になってしまったところや、今回書ききれなかった内容などは、時間を見つけて修正したり続編の記事などを書いていけたらと思っています。 下記のような内容に興味がある方がいたら、LGTM いただけるとありがたいです。今後の参考にさせていただきます。 SAM テンプレートのおすすめの設定 Makefile のおすすめの設定 SAM を使った開発でのリモートデバッグの方法 Lambda から安全に RDS や Aurora に接続する方法 SQS をトリガーにした Lambda ファンクションの開発 最後までお読みいただき、ありがとうございました!
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

AWS SAM+Lambda+Go+WSLではじめるサーバーレスアプリケーション開発

目的 AWS SAM を使って Go 言語でサーバーレスアプリケーションを開発するための、環境構築の手順をまとめます。個人的な備忘録を兼ねているため、必須ではない細かな設定なども記載しています。Lambda でサーバーレスアプリケーションの開発をはじめようと思っている方の参考になれば幸いです。 当記事に含まれる内容 当記事に含まれる内容は下記の通りです。ソフトウェアのインストールなどは既にわかりやすい記事があるので、そのリンクを貼っています。 Hello World アプリケーションについて WSL2 の設定 Docker の設定 AWS CLI の設定 Session Manager プラグインの設定 SAM と Go のインストール Ubuntu の環境変数設定の自動化 VSCode の設定 SAM プロジェクトの新規作成 SAM プロジェクトのデプロイ AWS コンソールから各サービスを確認 Hello World アプリケーションについて Hello World アプリケーションは、SAM プロジェクトを新規作成するときに便利なサンプルプロジェクトです。クライアントが API Gateway のエンドポイントにリクエストすると、「Hello, xxx.xxx.xxx.xxx(Lambda の IP アドレス)」とレスポンスを返す、シンプルなアプリです。はじめは、このアプリに変更を加えながらオリジナルのサーバーレスアプリケーションを開発していくと、楽だと思います。 Hello World アプリケーションの AWS 構成 構成図上のサービスの概要をひと言でまとめました。詳細が知りたい方はサービス名のリンクを参照してください。 Amazon API Gateway:API の開発や公開などが簡単に行えるサービスです。 AWS Lambda:サーバーレスで小さなプログラムを実行できるサービスです。 Amazon CloudWatch Logs:AWS リソースのログをモニタリングできるサービスです。 WSL2 の設定 WSL2 (Windows Subsystem for Linux 2) は、Windows 10 上で Linux を動作させるための仕組みです。サーバーレスアプリケーションをローカル環境でテストする際に、SAM は Lambda ファンクションを実行するための Docker コンテナを立ち上げます。Windows 上で Docker を利用するとエラーにハマることが多いので、WSL2 上に環境構築しています。WSL1 だと裏で動いているのは Windows なので、Docker をはじめとする一部のソフトウェアでは不具合が生じます。そのため WSL2 を利用しています。 WSL2 のインストール インストールがまだの方は、下記のサイトなどを参考にインストールをお願いします。 WSL のインストール インストールが終わったら PowerShell を開き、 wsl --list --verbose コマンドで WSL のバージョンを確認してください。下記のように VERSION が 2 と表示されていれば大丈夫です。 [win] wsl --list --verbose NAME STATE VERSION * Ubuntu Running 2 docker-desktop Running 2 docker-desktop-data Running 2 WSL に Windows の PATH を引き継がないように設定する WSL はそのまま利用すると Windows の環境変数の PATH を引き継ぎます。WSL 上の /etc/wsl.conf ファイルを編集すると、Windows の PATH を引き継がないように設定できます。 # WSL 上の /etc/wsl.conf ファイルを編集 $ sudo vim /etc/wsl.conf # wsl.conf がない場合は新規作成 $ sudo touch /etc/wsl.conf wsl.conf に下記の文言を追記してください。 [interop] appendWindowsPath = false 以上で WSL の設定は完了です。 参考サイト:WSLでWindowsのPATHを引き継がないようにする方法 Docker の設定 1. WSL に Docker と docker-compose をインストール Docker の公式サイトなどを参考に、WSL に Docker や docker-compose をインストールします。 Docker のインストール docker-compose のインストール Windows に Docker Desktop をインストール Windows に Docker Desktop をインストールして、Docker Desktop を WSL バックエンドで使えるように設定します。下記のサイトなどを参考に、Docker Desktop のインストールをお願いします。 Windows に Docker Desktop をインストール インストールが完了したら、Dokcer Desktop を開いて以下の設定を行います。 Settigs > General を開き、Expose daemon on tcp://localhost:2375 without TLS にチェックをつける Apply & Restart を実行する PC を再起動する ※一度再起動しないと VSCode から WSL に接続した際に Dokcer を起動できないようです。 以上で Docker の設定は完了です。 AWS CLI の設定 AWS CLI は AWS をコマンドラインで操作・管理するためのツールです。インストールがまだの方は、下記のサイトなどを参考にインストールをお願います。 AWS CLI をインストール (LINUX) インストールが完了したら aws configure コマンドを実行して、AWS Access Key ID、AWS Secret Access Key、Default region name、Default output format を入力します。 $ aws configure AWS Access Key ID [None]: XXXXXXXXXX AWS Secret Access Key [None]: XXXXXXXXXX Default region name [None]: ap-northeast-1 Default output format [None]: json 設定が完了したら、aws sts get-caller-identity コマンドで IAM ユーザーアクセス権があることを確認してみます。 $ aws sts get-caller-identity { "UserId": "XXXXXXXXXX", "Account": "XXXXXXXXXX", "Arn": "arn:aws:iam::XXXXXXXXXX:user/XXXXXXXXXX" } 以上で AWS CLI の設定は完了です。 Session Manager プラグインの設定 Session Manager プラグインをインストールしておくと、プライベートサブネットの EC2 に SSH で接続したり、SCP で EC2 - ローカル間でファイル転送ができるようになり便利です。興味のある方は、下記のサイトなどを参考にインストールしてみてください。 Session Manager plugin をインストール (LINUX) インストールにあたり WSL の CPU 情報が不明な場合は、sudo lshw -class processor コマンドで確認できます。 $ sudo lshw -class processor [sudo] password for funaki: *-cpu product: Intel(R) Core(TM) i7-9700 CPU @ 3.00GHz vendor: Intel Corp. physical id: 1 bus info: cpu@0 width: 64 bits capabilities: ... インストールが完了したら、~.ssh\config にある SSH 設定ファイルに下記の文言を追記して、Session Manager を通した SSH 接続を有効にします。 # SSH over Session Manager host i-* mi-* ProxyCommand sh -c "aws ssm start-session --target %h --document-name AWS-StartSSHSession --parameters 'portNumber=%p'" 以上で Session Manager プラグイン の設定は完了です。 プライベートサブネットにある EC2 に SSH や SCP でアクセスする方法について、下記の記事にまとめています。興味のある方はぜひご覧ください。 AWS CLIを使用してEC2にSSHやSCPでアクセスする SAM と Go のインストール 続いて、SAM と Go のインストールです。SAM をインストールする前に Python のパッケージマネージャをインストールする必要があります。以下の順番でコマンドを実行してください。 ※Delve という Go のデバッグツールもインストールしていますが、インストールしなくても問題ありません。 1. sudo apt update # Ubuntu のローカルキャッシュ済みパッケージ一覧を更新 2. sudo apt install python3-pip # SAM をインストールするため、Python のパッケージマネージャをインストール 3. sudo pip3 install aws-sam-cli # SAM をインストール 4. sudo apt install golang-go # Go をインストール 5. go install github.com/go-delve/delve/cmd/dlv@latest # Go のリモートデバッグ用に Delve をインストール ※2021年7月の SAM CLI の重要なアップグレードにより、バージョン 1.25 以上へのアップデートが必要になりました。もし古いバージョンをお使いでしたら、下記のコマンドで SAM CLI をアップデートしてください。 sudo pip3 install -U aws-sam-cli # SAM CLI をアップデート 下記のコマンドで Python、SAM、Go がインストールされていることを確認できます。 $ pip3 --version pip 20.0.2 from /usr/lib/python3/dist-packages/pip (python 3.8) $ sam --version SAM CLI, version 1.21.1 $ go version go version go1.13.8 linux/amd64 $ dlv version Delve Debugger Version: 1.6.0 Build: $Id: 8cc9751909843dd55a46e8ea2a561544f70db34d 以上で SAM と Go のインストールは完了です。 Ubuntu の環境変数設定の自動化 export コマンドで GOPATH や PATH などの環境変数を設定しても、Ubuntu ターミナルを閉じると初期化されてしまいます。Ubuntu ターミナルを起動する度に環境変数を設定するのは面倒なので、起動時に環境変数が自動で設定されるよう、下記のコマンドで ~.profile に export コマンドを追記しておきます。 $ cd # HOME ディレクトリに移動 $ sudo echo export GOPATH=$HOME/go >> .profile # GOPATH の設定 $ sudo echo export PATH=$PATH:$GOPATH/bin >> .profile # PATH の設定 ~.profile ファイルに下記の 2 行が追記されていれば設定完了です。 export GOPATH="Path to Go" export PATH="Path to Go"/bin 参考サイト:【Linux】環境変数の確認・設定・削除・永続化について VSCode の設定 Go で開発するときの IDE は VSCode を利用しています。VSCode の設定内容について、備忘録として残しておきます。 1. 拡張機能と依存パッケージをインストール 下記の記事の以下 2 項目を実行します。 VSCodeでGo言語の開発環境を構築する Go言語の拡張機能をインストール 拡張機能の依存パッケージをインストール 以上です。 2. VSCode のフォーマットツールを gofmt に設定 VSCode のフォーマットツールを (1) でインストールした gofmt に設定します。 メニューから File > Preferences > Settings > Extensions > Go > Format Tool の順に開き、gofmt を選択します。 以上です。 gofmt がインストールされているかどうかは、下記のコマンドで確認できます。 $ which gofmt /usr/bin/gofmt 3. VSCode のリントツールを golangci-lint に設定 VSCode のリントツールを (1) でインストールした golangci-lint に設定します。 メニューから file > Preferences > Settings > Extensions > Go > Lint Tool の順に開き、 golangci-lint を選択します。 以上です。 golangci-lint がインストールされているかどうかは、下記のコマンドで確認できます。 $ golangci-lint --version golangci-lint has version 1.33.0 built from b90551c on 2020-11-23T05:15:36Z 4. VSCode から WSL に接続 VSCode から WSL に接続する方法は、下記の記事を参考にしました。 VSCode から WSL に接続する 上記サイトの以下 2 項目を実行します。 Visual Studio Code を WSL へ接続する Ubuntu から Visual Studio Code を起動する 以上です。 SAM プロジェクトの新規作成 ここからは SAM プロジェクトの新規作成に入ります。冒頭で説明した通り、ここでは Hello World アプリケーションを作成していきます。 まず、WSL2 を起動して、サンプルプロジェクトをクローンするディレクトリに移動します。 $ cd /path/to/dir サンプルプロジェクトを作成するにはsam init [OPTION] コマンドを使用します。オプションをつけて sam init --runtime go1.x --name プロジェクト名 として、ランタイムとプロジェクト名を指定します。すると、コマンド入力後にテンプレートについて聞かれるので、(1) の「クイックスタートテンプレート」を選択します。 $ sam init --runtime go1.x --name SamTest Which template source would you like to use? 1 - AWS Quick Start Templates 2 - Custom Template Location Choice: 1 # 1 を選択 使用しているコマンドのオプションの解説です。 オプション 説明 --runtime アプリケーションのランタイムを指定します。言語設定のようなものです。 --name プロジェクトディレクトリに任意の名前をつけることができます。 その他のオプションが知りたい方は、AWS デベロッパーガイド をご参照ください。 次に、パッケージタイプを聞かれるので、(1) の「Zip」を選択します。 What package type would you like to use? 1 - Zip (artifact is a zip uploaded to S3) 2 - Image (artifact is an image uploaded to an ECR image repository) Package type: 1 # 1 を選択 Cloning from https://github.com/aws/aws-sam-cli-app-templates 最後に、クイックスタートテンプレートの種類を決めます。ここでは、(1) の「Hello World Example」を選択します。 AWS quick start application templates: 1 - Hello World Example 2 - Step Functions Sample App (Stock Trader) Template selection: 1 # 1 を選択 ----------------------- Generating application: ----------------------- Name: SamTest Runtime: go1.x Dependency Manager: mod Application Template: hello-world Output Directory: . Next steps can be found in the README file at ./SamTest/README.md 以上でサンプルプロジェクトが作成されます。 プロジェクトの内容は下記の通りです。 . ├── Makefile <-- 自動ビルドや自動デプロイなどの設定を記載 ├── README.md <-- プロジェクトの説明ファイル ├── hello-world <-- Lambda ファンクションのコードを格納するディレクトリ │ ├── main.go <-- Lambda ファンクションのコード │ └── main_test.go <-- ユニットテスト └── template.yaml <-- SAM テンプレート template.yaml ファイルは SAM テンプレートと呼ばれるもので、CloudFormation を拡張したものになっています。SAM テンプレートのリソースには Lambda ファンクション(AWS::Serverless::Function)しか記載されていませんが、暗黙的に以下のリソースが作成されます。各サービスの当アプリでの役割も簡単に記載しておきます。 Amazon API Gateway:API Gateway が提供するエンドポイントへのリクエストをトリガーに Lambda が起動します。 IAM ロール:Lambda にアタッチされる IAM ロールです。Lambda に各 AWS サービスへのアクセス権を与えます。 Amazon CloudWatch ロググループ:Lambda のログをモニタリングするためのロググループです。 SAM プロジェクトのデプロイ では、サンプルプロジェクトの Hello World アプリケーションを、このまま AWS にデプロイしていきたいと思います。 1. プロファイルの設定 デプロイする前に、デプロイ先の AWS アカウント を確認しておきましょう。僕の場合は、名前付きプロファイル を設定して、プロファイルを切り替えることでデプロイ先を指定しています。 プロファイルを設定済みの方は、aws configure list コマンドで現在使用中のプロファイルを表示できます。 $ aws configure list Name Value Type Location ---- ----- ---- -------- profile Name manual --profile access_key ****************XXXX shared-credentials-file secret_key ****************XXXX shared-credentials-file region ap-northeast-1 config-file ~/.aws/config まだ IAM ユーザーのアクセスキーとシークレットアクセスキーを作成していない方は、下記の記事を参考に作成してください。 AWS ユーザーガイド アクセスキー ID とシークレットアクセスキー プロファイルの設定がまだの方は、aws configure --profile プロファイル名 で設定できます。 $ aws configure # デフォルトのプロファイルを設定 $ aws configure --profile Name # 名前付きプロファイルを設定 2. ビルド デプロイ先の AWS アカウントのプロファイルの設定が完了したら、sam build コマンドでビルドします。 $ sam build Building codeuri: /path/to/project/dir/SamTest/hello-world runtime: go1.x metadata: {} functions: ['HelloWorldFunction'] Running GoModulesBuilder:Build Build Succeeded Built Artifacts : .aws-sam/build Built Template : .aws-sam/build/template.yaml Commands you can use next ========================= [*] Invoke Function: sam local invoke [*] Deploy: sam deploy --guided 以上でビルド完了です。 3. デプロイ はじめてデプロイする場合は、sam deploy --guided コマンドを利用し、スタック名やリージョンなどを指定します。 $ sam deploy --guided Configuring SAM deploy ====================== Looking for config file [samconfig.toml] : Not found Setting default arguments for 'sam deploy' ========================================= Stack Name [sam-app]: SamTest AWS Region [ap-northeast-1]: #Shows you resources changes to be deployed and require a 'Y' to initiate deploy Confirm changes before deploy [y/N]: y # Yes を選択 #SAM needs permission to be able to create roles to connect to the resources in your template Allow SAM CLI IAM role creation [Y/n]: Y # Yes を選択 HelloWorldFunction may not have authorization defined, Is this okay? [y/N]: y Save arguments to configuration file [Y/n]: # Yes を選択 SAM configuration file [samconfig.toml]: # デフォルトの samconfig.toml で作成 SAM configuration environment [default]: # デフォルトの default で設定 ~省略~ Successfully created/updated stack - SamTest in ap-northeast-1 下記に、質問される内容を記載しておきます。 スタック名:CloudFormation にデプロイするスタックの名前。これはアカウントと地域に固有である必要があります。プロジェクト名から始めるとわかりやすいです。 AWSリージョン:アプリをデプロイする AWS リージョンを指定します。 展開前に変更を確認する:Yes に設定すると、デプロイするときにリソースの変更内容を確認できます。No に設定すると、リソースの変更内容が表示されないまま自動的にデプロイされます。 SAM CLI IAMロールの作成を許可する:AWS SAM テンプレートは、作成された Lambda ファンクションが他の AWS サービスにアクセスするために必要な IAM ロールを作成します。デフォルトでは、最低限必要な権限を持つIAMロールが作成されます。Lambda にアタッチする IAM ロールを自分で作成する場合には、オプションで --capabilities CAPABILITY_NAMED_IAM を指定する必要があります。 引数をsamconfig.tomlに保存:Yes に設定すると、選択した内容がプロジェクト内の samconfig.toml ファイルに保存されます。samconfig.toml を作成しておくと、次回以降のデプロイは sam deploy コマンドだけで実行することが可能です。 質問にひと通り回答したら、ビルドしたプログラムが S3 にアップロードされ、template.taml で定義した AWS リソースが作成されていきます。 "Successfully created/updated stack" というメッセージが表示されたら、デプロイ完了です。 ターミナルに表示されている Outputs に、デプロイされた Lambda ファンクションのエンドポイント(Value)が記載されています。 Key HelloWorldAPI Description API Gateway endpoint URL for Prod environment for First Function Value https://xxxxxxxx ブラウザからエンドポイントにアクセスしてみます。 以上のように表示されれば、デプロイ成功です。 ここから少しずつコードに変更を加えたり、SAM テンプレートに変更を加えたりしていくと、オリジナルのサーバーレスアプリケーションを開発することができます。 AWS コンソールから各サービスを確認 最後に、AWS のコンソールから作成したアプリの各サービスを見てみます。なお、各サービスには自動で名前がつけられていますが、SAM テンプレートを使って任意の名前をつけることができます。 CloudFormation CloudFormation > スタック の順に開くと、sam deploy --guided で指定したスタック名でスタックが作成されていることがわかります。スタック名をクリックすると詳細を確認できます。SAM CLI を使ってデプロイした場合、SAM テンプレートの内容をもとに CloudFormation で各リソースが作成されることがわかると思います。2 回目以降のデプロイでは、このスタックを更新して各リソースに変更を加えていくことができます。 AWS Lambda Lambda > 関数 の順に開くと、新たに Lambda ファンクションが作成されていることがわかります。関数名から詳細を確認できます。 API Gateway API Gateway を開くと、新たに API が作成されていることがわかります。API 名から詳細を確認できます。 CloudWatch ロググループ CloudWatch > ロググループ の順に開くと、新たにロググループが作成されていることがわかります。ロググループ名から Lambda のログファイルを見ることができます。 以上で当記事の内容は終了です。お疲れさまでした! おわりに 説明が簡単になってしまったところや、今回書ききれなかった内容などは、時間を見つけて修正したり続編の記事などを書いていけたらと思っています。 下記のような内容に興味がある方がいたら、LGTM いただけるとありがたいです。今後の参考にさせていただきます。 SAM テンプレートのおすすめの設定 Makefile のおすすめの設定 SAM を使った開発でのリモートデバッグの方法 Lambda から安全に RDS や Aurora に接続する方法 SQS をトリガーにした Lambda ファンクションの開発 最後までお読みいただき、ありがとうございました!
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む