こんにちはますのです。
先日より勉強がてら、こちらで公開されているAWS環境のサーバレスアーキテクチャをいじっておりました。
【VueSlsApp】開発・運用ノウハウを詰め込んだサーバーレスアプリのサンプルを作りました
サンプルのアプリが公開されていましたが、どんなWebアプリなのかが概要を掴めずとりあえずやってみるべと構築した状況になります。
各AWSの機能を利用してのサーバレスで構築するアプリとなるため、どのサービスと設定として繋げるか概要を把握するには良かったです。わたしには難易度ちょい高めでしたが、各種AWSサービス触れたので良い機会になりました。
結論
- Lambdaで利用されるPythonやNode.jsはインフラ屋でも分かるようかじりたい
- 自動構成ツール(terraform、Ansible、CloudFormation)も使っておきたい
- サーバレス開発が増えるようであれば一般的なWebフレームワークについて確認する
参考:AWS サーバーレス向け開発者用ツール
Webフレームワーク以外の2点はインフラエンジニアで必要になりそうなので、もう少し確認したいと思います。
構築で扱うAWSのサービス
わたしが構築して主に確認で触った箇所は9か所です。
処理については所感混じり、感じたままに記載しましたが概ねあっているかと思っています。
サービス名 | 備考 |
IAM | Lambda実行用のロール作成、シークレットアクセスキーの扱い等で利用 |
Route53 | 独自ドメイン設定、CloudFront・S3への静的サイトアクセス設定で利用 |
Certificate Manager | SSL通信設定、API Gateway構築で利用 |
Cognito | ユーザ認証のWebアプリやユーザ管理で利用 |
S3 | 静的サイトのWebデータ格納 |
CloudFront | S3の静的サイトへのアクセスをSSL通信化で利用 |
APIGateway | ユーザログイン後の動作の肝、REST APIで利用 |
Lambda | APIGatawayで登録された処理を実行(動的処理を全て担う) |
DynamoDB | Lambdaで実行された処理のデータを格納する |
※APIGateway以降の処理はちょっと自信なしです。
構築後のWebアプリで何が出来るようになるのか
デモページは作者様のサイト内にあるのでそちらを確認くださいませませ。
https://note.com/thiroyoshi/n/n2560c21cd6b9?magazine_key=m500477771e76
- ユーザ認証周り(アカウント作成、ログイン、ログアウト、アカウント削除)の動作確認
- ユーザ登録情報の変更
- AWSとServerlessFrameworkを利用したサーバレスアプリの構築
- S3に置いてある「index.html」へ独自ドメインでアクセスする
- AWS Cognito経由でユーザ認証周りを実行
- ユーザ認証後、ユーザ情報の変更をLambda経由でDynamoDBへ登録
構成図(筆者オリジナル)
作者様の構成図とはちょっと違いますが、いじってみて感じたわたしの理解となります。
※Cognitoまでの動作はうまくいきましたが、どうやってもDynamoDBへの登録が出来ずいったん断念しております。
Lambdaに登録するコード部分は作者様が既に用意してくれているため、ServerlessFrameworkで自動デプロイしただけなのです。Lambdaに登録されている内容見たけど、わたしにはまだ早い領域でありました。
構築にかかった費用
合計150円くらいでしょうか。AWSの無料利用枠内に収まっているみたいです。
- ドメイン代:\50(.work:更新しない予定)
- AWS料金:$0.55
今のところ「Route53のホストゾーンの作成」のみで課金されています。
テストと切り分けで2回くらいデプロイしなおしてました。その時にS3のデータ削除&再登録をしてたので、何回かやり直す場合は無料枠超えないように注意ですね。
万が一超えても「$0.005/1000リクエスト」なので、爆死することは稀かなとは思います。
環境を構築していて詰まった点
Python:pip-toolsインストール
SSL Authenticationのエラーが出てしまい、あれこれ対処法を確認するが解決に至らず。
別の勉強でインストールした時に、Python実行環境でPycharmを導入・設定していたのでPycharmで実行したらうまくいったのです。環境変数とかも登録したので謎です。
デプロイ後にアクセスしてもAccessDenyになる
S3のアクセス設定を手動でやったらアクセス出来るようにはなりました。
別記事で紹介されていたので、CloudFrontを構築・設定してRoute53の設定を変更したところ解消しました。
Chromeのディベロッパーツールでエラーを見たところCORSの部分で行けていない様子。
参考:Lambda + API GatewayでCORSを有効にしているのにCORSでエラーになる
実施してみての感想
エラーが出たりうまくいかなかったりとで調べながら実施しました。調査含めて所要時間は20時間くらいでしょうか…。
ただ、あれこれエラーが出てくれたおかげでRoute53やCloudFrontの設定については深堀出来た気がします。
ServerlessFrameworkを使っての自動デプロイとなっているので、気付いたらAWSのサービスがあちこちで立ち上がっております。Lambda周りに関してが特にサービス間の繋がりが見えづらくてDynamoDBのエラー解決に至らずでした。
アプリケーション部分のコードについてはインフラ屋さんが触ることは無いとは思っていますが、今後サーバレス構成の管理を任される可能性もあるためPythonやNode.jsについては知っておいて損は無いかなと感じた次第です。
開発関係に行くか、社内SE関係に行くかで主軸は変わってきますが、今後の糧にしていければと思います。