Journey to CloudNative ~AWS Amplify編~
はじめまして!新卒3年目、開発エンジニア2年目の佐々木です!
早速ですが、クラウドネイティブなエンジニアになりたくないですか?
私はなりたいです。
そこで、所謂クラウドネイティブな開発で利用される様々なパブリッククラウドのサービスを使ってみて、折角なのでnoteで紹介するシリーズを始めようと思います!
よろしくお願いいたします。
今回は第一回として、AWS Amplify についての記事です。
Amplifyとは
AWS曰く、
スケーラブルなモバイルおよびウェブのアプリケーションを最速で構築する方法
とのことです。
何のことやらって感じですが、つまりAWSの諸々のサービスをいい感じに組み合わせて、アプリケーションを爆速で作成できるサービスのようです。
公式ドキュメントはこちら
Getting started を見ると分かる通り、Amplify には主に「Amplify CLI」と「Amplify Libraries」、「Amplify UI Component」というコンポーネントがあります。
今回は、開発アーキテクチャを考える上で理解が必要そうな、「Amplify CLI」と「Amplify Libraries」を取り上げようと思います。(UI Componentは代替手段がたくさんありそうなのでまたの機会に。)
Amplify CLI
できること
コマンド一発で、AWSの様々なサービスをプロジェクトに追加(CloudFormationのテンプレートを自動生成してくれる)したり、デプロイしたりすることができます。
Lambda function + Lambda layersで作ってデプロイしてみる
amplify init でプロジェクトを作成し、amplify add function を2回実行して、対話式のメッセージにしたがって進めていきます。
するとなんという僥倖、瞬く間に Lambda layers とそれを利用する Lambda function が生成されたではありませんか!
詳細な手順については、AWSのブログ記事をご覧ください。
Amplify Libraries
できること
わかりやすく使いやすいインターフェイスで、様々な種類の操作をクラウド上のバックエンドサーバで実行できる、クライアント用のライブラリです。
Amplify CLI と組み合わせて使うことも、単体で使うことも可能です。
さっき作ったやつにS3を組み合わせて、Amplify Library 経由でアクセスする
S3バケットとCognitoの準備
先程作成したAmplifyのプロジェクトに、amplify add storageでS3バケットを追加します。
S3に読み書きするための認証をする必要があるので、対話の途中で「Cognito設定する?」って訊かれるので、言われるままに適宜セットアップします。
Amplify CLIの公式チュートリアルに詳細が書いてあります。
Amplify LibraryからS3を利用する
その後、お手元に適当な JavaScript のクライアントアプリケーションを用意します。
何でも良いので、今回は npx create-react-app my-app --template typescript って感じでReactアプリケーションを用意しました。(TypeScript が好きなので今回はそうしましたが、この辺は本当に何でも良いです)
用意したものに、 npm install -S aws-amplify って感じで Amplify Library をインストールします。
その後、Amplify Libraryのチュートリアルを参考に、先程作成したS3バケットの情報を設定します。
認証情報直書きだけどええんかなこれ…
AWS Secrets Managerとか使ったほうが良いって小学校で習った気がしますが、今回はこれで良いってことにしました。
CORSの設定は amplify add storage がやってくれてたらしいので飛ばします。
Storage.put() を実行すると、Amplify Libraryを使ってS3にファイルを置くことができました!
振り返り
Cloud Formationを生成してくれて、自分で触らなくて良かったので、学習コストが低かった!
のですが、細かい部分(ディレクトリ構成とか)を思うようにいじれない…
というわけで、第二回はCloud Formationを完全に理解する回です!
宣伝
私の所属するBuildサービス推進チームでは、エンジニアを大募集中!!
SIerとは思えない環境で、アジャイル開発や内製化支援を通して日本の大企業のDX・新規事業を強力にお手伝いする、非常にやりがいのある仕事です。
興味を持たれた方は、ぜひ採用ページをご覧ください!!
エンジニアや採用担当とのカジュアル面談からご参加いただけます。
この記事が気に入ったらサポートをしてみませんか?