2021/05/26

AWS SAM CLIを使用したアプリケーション開発とインストール方法を解説!

 
  

AWS SAM CLIを用いたサーバーレスアプリケーション開発


こちらの記事はAWS SAM CLIの概要と使い方を学ぶ記事になります。 まずはAWS SAM CLI及びそれを構成する要素に関して理解を深め、その後、簡単なアプリケーションをAWS SAM CLIを使って作成していきます。

AWS SAM CLIとは?

AWS SAM CLIとはAWS SAMの作成と管理をコマンド操作で実行するための便利ツールです。ご自身が所有しているパソコンにインストールすることで、AWS SAMの操作をターミナル(Windowsであればコマンドプロント)から行うことができるようになります。

AWS Lambdaを用いたアプリケーション開発に非常に役に立ちます。

AWS Lambdaとは?

AWS Lambdaとはサーバーの構築や管理を必要とせずにプログラムを実行させることができるコンピューティングサービスです。通常、アプリケーションを動作させるにはサーバーを構築し、その上でアプリケーションを実行させる必要がありますが、そのような手間が省けます。

また、Lambdaではアプリケーションの実行が必要な時にだけ動作をさせることができ、実際に利用したコンピューティング時間に対してのみ課金されるのが特徴です。必要なタイミングに呼び出すことができ、呼びした回数・時間に対してのみ課金される点が優れています。

AWS SAMとは?

AWS SAMとはAWSが提供するサーバーレスアプリケーションを開発するためのオープンソースのフレームワークのことです。AWS SAMの正式名称はAWSサーバーレスアプリケーションモデルです。

AWSが提供するサーバーレスのマネージドサービスとしてはAWS Lambdaが有名ですが、このLambdaなどの、サーバーレスのアプリケーションの構築を便利にするのが、AWS SAMの役割となっています。

Lambdaに代表されるサーバーレスのアプリケーションは、複数のリソースと協調して動作をします。AWS SAMを利用することで、Lambda関数がどのようなリソースと連携するのかなどといったイベントのマッピングを定義することができます。

Lambdaが他のリソースと協調する例

LambdaはAWSの様々イベントをトリガーにして起動させることができます。このセクションでは、その例を提示します。

【AWS Lambdaのトリガーとなるイベント例】
・ストレージサービスであるS3のバケットにファイルが変更(アップロード・削除等)された時
・Amazon Dynamo DBにおいて特定のレコードが追加された時
・Amazon API Gatewayを使ってHTTPリクエストが送られた時
・Event Bridgeにてスケジュール式によって指定されたタイミング

AWS SAM及びAWS SAM CLIを使って開発するメリット

コマンドを使ってテンプレートを作成できることと、ローカル環境でのエミュレートができることが大きなメリットです。 要するにLambdaを用いたサーバーレスアプリケーション開発の効率化を図ることができます。

AWS SAMを用いるとローカル環境でLambda関数を実行させることができますので、AWSにデプロイすることなく開発ができます。また、AWS SAM CLIを用いることで、コマンドを使ってテンプレートの作成・ビルド・クラウド上へのデプロイを行うことができます。

AWS SAM CLIを使ったアプリケーション開発

ここからはAWS SAM CLIを使ったサンプルアプリケーションの開発を行っていきます。関連ツールのインストールから始め、テンプレートの作成とデプロイまで行っていきます。

こちらの記事で紹介する操作は全てmac OSでの操作となっておりますので注意ください。

事前準備

AWS SAM CLIをインストールする前に、以下の準備を事前に行っていただくようにお願いします。

・AWSアカウントを作成します。
・AWSのコンソールのセキュリティ認証情報にてAWS Access Key IDとAWS Secret Access Keyを取得します。
・Homebrewを使えるようにしておきます。
・Golangをインストールしておきます(今回の記事ではSAMのテンプレートとしてGolangを選択するため)。

Dockerのインストール

アプリケーションをローカルでテストするためにDockerが必要となります。 そのため、事前にDockerをインストールしておく必要があります。

AWS SAMにて開発する上では、Dockerに対しての理解は不要です。また、Dockerのコマンドを入力することも不要です。そのため、今回はDockerの解説に関しては割愛させていただきます。

ターミナルで以下を実行してください。

$ brew install docker
$ brew cask install docker

その後、以下のコマンドを実行して、バージョンが表示されれば問題なくインストールできたことが確認できます。

$ docker --version
Docker version 20.10.1, build 831ebeae96

AWS CLIのインストール

AWSの認証情報を設定するためにAWS CLIのインストールも行います。

ターミナルで以下を実行してください。

$ brew install awscli

その後、以下のコマンドを実行して、バージョンが表示されれば問題なくインストールできたことが確認できます。

$ aws --version
aws-cli/2.1.28 Python/3.9.2 Darwin/20.2.0 source/arm64 prompt/off

認証情報の設定

事前準備で取得したAWS Access Key IDとAWS Secret Access KeyをAWS CLIを使って設定します。

ターミナルにて

$ aws configure

と実行し、その後の質問に次の通り回答していきます。

AWS Access Key ID :(取得したAccess Key ID)
AWS Secret Access Key : (取得したAWS Secret Access Key)
Default region name : ap-northeast-1
Default output format :(未入力) 

また、再度aws configureを実行すると入力済みの値が確認できます。

AWS SAM CLIのインストール

本題のAWS SAM CLIをインストールしていきます。

ターミナルで以下を実行してください。

$ brew tap aws/tap
brew install aws-sam-cli

その後、以下のコマンドを実行して、バージョンが表示されれば問題なくインストールできたことが確認できます。

$ sam --version
SAM CLI, version 1.18.2

SAMを使ったアプリケーションの雛形作成

AWS SAM CLIを使って、アプリケーションの雛形を作成していきます。

ターミナルで以下を実行してください。

$ sam init --runtime go1.x --name aws-sam-sample

その後、対話形式で値を選択する必要がありますので、次の通り選択します。

Which template source would you like to use?
        1 - AWS Quick Start Templates
        2 - Custom Template Location
Choice: 1
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

Cloning app templates from https://github.com/aws/aws-sam-cli-app-templates

AWS quick start application templates:
        1 - Hello World Example
        2 - Step Functions Sample App (Stock Trader)
Template selection: 1

    -----------------------
    Generating application:
    -----------------------
    Name: aws-sam-sample
    Runtime: go1.x
    Dependency Manager: mod
    Application Template: hello-world
    Output Directory: .
    
    Next steps can be found in the README file at ./aws-sam-sample/README.md

カレントディレクトリにaws-sam-sampleというフォルダが作成されていたら、無事に雛形が作成されている証拠です。

ビルドとローカルでの実行

前項で作成した雛形を使って、ビルドとローカルでの実行方法を学んでいきます。

ターミナルで以下を実行してください。

$ cd aws-sam-sample/hello-world
$ go get
$ cd ../
$ make build

Build Succeededと表示されればビルドが完了した証拠です。

次に、こちらを動作させます。ターミナルで以下を実行してください。

$ sam local invoke

以下の通り表示されれば、問題なく実行できたことが確認できます。

{"statusCode":200,"headers":null,"multiValueHeaders":null,"body":"Hello, 106.168.93.30\n"}

Lambda関数のデプロイ

最後に、作成したアプリケーションをAWS上にデプロイします。

ターミナルで以下を実行してください。表示される質問に対しては、全てデフォルト値(未入力でEnter)で構いません。

$ sam deploy --guided

これでHelloWorldFunctionというLambda関数がデプロイされました。デプロイ後はAWSにログインして、コンソールにてデプロイされた関数が確認できます。

AWS SAM CLIを使ってLambdaの開発をしましょう

こちらの記事ではAWS SAM CLIとそれに関連する技術の解説を行った上で、AWS SAM CLIを使ったアプリケーション作成のハンズオンを行いました。雛形作成・ローカルでのエミュレート実行・デプロイをコマンドで行うことができるので非常に便利です。

AWS Lambdaの開発を行う機会があれば、是非AWS SAM CLIを活用していきましょう。

ITエンジニアへのキャリアチェンジならキャリアチェンジアカデミー

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニア
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞

おすすめの動画

  • 【未経験からIT業界へ転職するなら】相談窓口とスキルの獲得はここで解決!IT転職が一気に有利に!【キャリアチェンジアカデミー】

  • 【費用一切不要】未経験からIT業界へ転職するならまずはここへ相談!【キャリアチェンジアカデミー】

  • 【何のエンジニアになれるのか?】未経験からITエンジニアを目指すとこんな道がある【キャリアチェンジアカデミー】