AWS Hands-on for Beginners #2 でサーバーレス環境自動構築チャレンジ
オンデマンドハンズオン「AWS SAM を使ってテンプレートからサーバーレスな環境を構築する」に参加しました。
前回に当たる「サーバーレスアーキテクチャで翻訳 Web API を構築する」のレポートについては以下の記事をどうぞ。
AWS「さぁ!サーバーレスを始めよう!サーバーレスハンズオンもくもく会」レポート
注意:前回同様に知識がなくても参加できますが、今回のハンズオンはCloudFormation・Linuxの仕様とコマンドを学んでいないと難しい部分があります。
前提知識① - AWS Serverless Application Model(SAM)とは?
「AWS Serverless Application Model(SAM)」は「AWS CloudFormation」の拡張機能です。
そもそもの「AWS CloudFormation」は、AWSのインフラサービスをコードで作成できる機能です。提携リソースを一度構築すれば使い回しができ、作成時にミスや不足が起きずに済む……と非常に便利です。
しかし、LambdaやAPI Gatewayなどのリソースを作成しようとすると、どうしてもテンプレートが長文化するのが難点でした。
AWS SAMはそういったリソースのテンプレートを、簡潔に記述可能にしたものです。
(処理としては、デプロイされたSAMテンプレートはAWS側でCloudFormation形式に変換されています)
前提知識② - AWS Cloud9 とは?
サーバーレスと直接関係はないのですが、Infrastructure as Codeに役立つ環境として「AWS Cloud 9」を利用します。
Cloud 9とは、ブラウザ上でコードの記述(コードエディタ)・実行(ターミナル)・デバッグ(デバッガー)が可能な、クラウドベースの統合開発環境です。
複数人でリアルタイムの共同コーディングを行え、チャット機能が付随しているのでペアプログラミングも行えます。
今回利用するうえで嬉しいのは、AWS Lambdaとの連携です。簡単なサーバーレスアプリケーション(Lambda関数)を、Cloud 9上で構築したり実行したりデプロイしたりできます。
また、AWS CLI(ただし2020年4月現在はv1)やDockerが最初からインストールされており、便利に利用することができます。
ハンズオン
はじめの小目標は「Cloud 9に慣れる」ことです。せっかくなので仕様をいろいろと確認してみます。
今回のスペックは以下の通りです。
- Environment type:Create a new instance for environment (※選択したリージョンでEC2インスタンスを立て、Cloud 9環境を実行)
- Instance type:t2.micro (1 GiB RAM + 1 vCPU)
- Platform:Amazon Linux
- VPC,subnet:default
Pythonのバージョンを確認します。(2020年4月現在)3.6.10です。
$ python --version
Python 3.6.10
デフォルトでAWS CLIも入っています。
$ aws --version
aws-cli/1.18.40 Python/3.6.10 Linux/4.14.171-105.231.amzn1.x86_64 botocore/1.15.40
アップグレードも可能です。
$ sudo pip install --upgrade pip
Cache entry deserialization failed, entry ignored
...
Successfully installed pip-20.1
一通り使用方法に慣れたら、SAMファイル(YAML形式)を作成します。
公式ドキュメントを参考にすれば、記述方法についてそれほど困ることはありません(といってもCloudFormationの知識がないと少し難しいです)。
前回のハンズオン同様、API GatewayやDynamoDBとの連携も行います。この辺りは目新しいこともないので省略します。
オプションとして、SAM CLIも使用してみました。
sam init
→ sam build
→ sam deploy --guided
のたった3コマンドでデプロイができます(要Docker環境/Cloud 9なら最初からインストールされているので気にしなくて大丈夫です)。詳細は公式ドキュメント中のチュートリアルを参考にしてください。
XXXXXXXX:~/environment $ sam deploy --guided
Configuring SAM deploy
======================
Looking for samconfig.toml : Not found
Setting default arguments for 'sam deploy'
=========================================
Stack Name [sam-app]: AWSserverlesshandson
AWS Region [us-east-1]: ap-northeast-1
#Shows you resources changes to be deployed and require a 'Y' to initiate deploy
Confirm changes before deploy [y/N]: y
#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
Save arguments to samconfig.toml [Y/n]: Y
...
加えてSAM テンプレートを事前検証するならsam validate
、sam local start-lambda
でモック環境でのテストも可能です。
さらに大元がCloudFormationなので、CloudFormationコンソールからまとめて削除できます。
上から順にSAMテンプレートで作ったリソース、S3 bucket(内にアップロードしたsam-appフォルダ)、Lambda関数、Cloud 9です。
Cloud 9もCloudFormationスタックなんだという新たな気づきも得ました。
便利ですね。
短所があるとすれば、まだβ版なので本番運用はできない点でしょうか。
おわりに
- サーバーレス環境もコード化できる!
- サーバーレス環境をコード化してコマンド形式で実装できる!
- サーバーレス環境をデプロイしなくてもローカルでテスト実行ができる!
- SAM CLIもある!(まだβ版だけど……)
AWS SAMは、サーバーレスって結局コンソールをぽちぽちやる必要があるからめんどくさい!……という意見に応えられる画期的なサービスだと思います。
ハンズオンをはじめて、今日からIaCの世界へと飛び込みましょう。
弊社WebサイトではAWSを含むさまざまな技術記事を公開しています。ぜひご覧ください。
Author And Source
この問題について(AWS Hands-on for Beginners #2 でサーバーレス環境自動構築チャレンジ), 我々は、より多くの情報をここで見つけました https://qiita.com/priseday/items/7848384484fedf8ce288著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .