2021/05/24

「AWS CloudFormation package」コマンドで簡単アップロード!

 
  

「AWS CloudFormation package」コマンドとは?


「AWS CloudFormation package」とは、「AWS SAM(※後述します)」テンプレートを利用して、ローカルPC上にある様々なファイルを「Amazon S3」にアップロードしてくれるコマンドです。

このコマンドにより、「Amazon S3」のリソース配置場所(一般的には「バケット名」や「ファイル名」) のURL情報を必要とする「リソースプロパティ」に対して、ローカルのパス(参照先)を指定できるようになります。

それでは、具体的な利用方法や関連用語について解説していきます。

「AWS Serverless Application Model(AWS SAM)」とは?

「AWS Serverless Application Model(AWS SAM)」とは、AWS上で「サーバーレスアプリケーション」構築に用いられるオープンソースのフレームワークです。

この「サーバーレスアプリケーション」は、「AWS Lambda」関数を中心として、イベントソース等のリソース類で構成されたものです。そして、各リソース間が協調して動作しながら、各種タスクを実行するという形態を取ります。

こちらの具体的な内容について、詳細に解説していきます。

「AWS Serverless Application Model(AWS SAM)」の特徴

「AWS Serverless Application Model(AWS SAM)」の特徴として、「AWS SAM」を利用することで「サーバーレスアプリケーション」を定義することが可能である点です。

そして定義する対象の「サーバーレスアプリケーション」は、「AWS Lambda」関数だけでなく、データベース(DB)、各種API、イベントソースのマッピング等の追加リソースまでも含めることができます。

これらの定義にはシンプルな記載が可能な「SAM構文」を用い、Lambda関数、DB、API、イベントソースマッピングを記述することができます。

またデプロイ中に、「SAM構文」を「AWS CloudFormation構文」に変換や拡張することにより、「サーバーレスアプリケーション」構築を高速化することも可能です。

「AWS Serverless Application Model(AWS SAM)」コンポーネント

「AWS Serverless Application Model(AWS SAM)」のコンポーネントは、「AWS SAM テンプレート仕様」、「AWS SAM コマンドラインインターフェイス(AWS SAM CLI)」の2つで構成されています。

「AWS SAM テンプレート仕様」に沿って、「サーバーレスアプリケーション」を定義しますが、アプリを構成するLambda関数、アクセス権限、API、各種設定、イベントを記述するためのシンプルで簡潔なSAM構文を用います。

そして「AWS SAM テンプレートファイル」によって、デプロイ可能でバージョン管理された「サーバーレスアプリケーション」を操作します。

一方、「AWS SAM コマンドラインインターフェイス(AWS SAM CLI)」を利用して、「AWS SAM テンプレート」で定義された「サーバーレスアプリケーション」を構築していきます。

「AWS CLI」によるコマンド使用方法について


「AWS CloudFormation package」コマンド利用方法を説明する前に、「AWS Command Line Interface(CLI)」によるAWS上でのコマンド使用方法を解説します。

「AWS CLI」を使用することで、AWS上のシステムリソースを対象として、作成、更新、削除等を実施することが可能です。

「AWS CLI」の概要

「AWS Command Line Interface(CLI)」は、コマンドラインシェルのコマンドを利用することで、AWS上の各種サービスと通信するためのオープンソース・ツールです。

「AWS CLI」を利用することで、「AWS マネジメントコンソール」画面上で提供される機能と同等の機能を実装するコマンドを実行できます。

「AWS CloudFormation package」コマンドの利用方法


「AWS CloudFormation package」コマンドの利用方法の例として、「AWS SAMテンプレート」を利用し、ローカルPC上に配置されている「zipファイル」を「Amazon S3」にアップロードするまでを解説していきます。

手動で「zipファイル」を「Amazon S3」のバケットにアップロードしてから、テンプレートにそのアップロード先の場所を追記するのではなく、「ローカルアーティファクト」と呼ばれるローカル上の配置場所を「AWS SAMテンプレート」内で指定します。

「ローカルアーティファクト」とは、ここでは「AWS CloudFormation package」コマンドが「Amazon S3」にアップロードしたファイルやフォルダへのパス(場所)を指しています。

「AWS CloudFormation package」コマンドのアップロード方法の種類

「AWS CloudFormation package」コマンドのアップロード方法の種類には、「ファイル指定」と「フォルダ指定」があります。

「ファイル」指定の場合は、コマンド実行により「Amazon S3」バケットにファイルを直接アップロードします。

アーティファクトのアップロード後に、コマンドはテンプレートのコピーを返却します。そのローカルの「アーティファクト」への参照は、「AWS CloudFormation package」コマンドによってアーティファクトをアップロード先の「Amazon S3」の場所に置換されます。

そして、返却されたテンプレートを利用して、「AWS CloudFormation」のスタックを作成や更新が可能となります。

「フォルダ」を指定した場合には、「AWS CloudFormation package」コマンドはフォルダの「zip ファイル」を作成してアップロードします。

「AWS SAMテンプレート」のヘッダ

AWS SAMテンプレートの「ヘッダ」は、「AWSTemplateFormatVersion」、「Transform」、「Description」で構成されます。

例えば、以下のような記載になります。

AWSTemplateFormatVersion: 2021-05-05
Transform: AWS::Serverless-2021-05-01
Description: AWS Cloudformation Package Command Test 

「AWS SAMテンプレート」のリソースの種類

「AWS SAMテンプレート」のリソースの種類(タイプ)には、「AWS::Serverless::Function」、「AWS::Serverless::Api」、「AWS::Serverless::SimpleTable」、「AWS::Serverless::LayerVersion」、「AWS::Serverless::Application」があります。

それぞれのデプロイ内容は、「AWS Lambdaをデプロイ」、「API Gatewayをデプロイ」、「Amazon DynamoDBのテーブルをデプロイ」、「Lambda Layerをデプロイ」、「Serverless Application Repositoryに存在するアプリケーションをデプロイ」となっています。

これらのリソースは、ローカルPC上のファイルを「Amazon S3」にアップロードが可能となります。

「AWS SAMテンプレート」例

「AWS SAMテンプレート」例としては、以下のような記述になります。

AWSTemplateFormatVersion: 2021-05-05
Transform: AWS::Serverless-2021-05-01
Description: Test


Resources:
  TestFunc:
    Type: AWS::Serverless::Function
    Properties:
      Handler: index.handler
      Runtime: nodejs8.10
      CodeUri: /home/user/src/test.zip

そして、実行する「aws cloudformation package」コマンドは以下の通りです。

aws cloudformation package --template /path_to_template/template.json --s3-bucket mybucket --output json > packaged-template.json

「aws cloudformation package」コマンドで簡単デプロイを実現しよう!


こちらの記事でご紹介してきた通り、「aws cloudformation package」コマンドを利用することで、ローカルPC上のファイルやフォルダを簡単に自動でデプロイできるようになります。

つまりこのコマンドを利用することで、「AWS SAM」を「継続的デリバリ(CD)」が簡単に構築できるようになります。

「aws cloudformation package」コマンドを活用して、「Amazon S3」へのCDに挑戦してみてはいかがでしょうか?

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

この記事の監修者・著者

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

おすすめの動画

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

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

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