0
0

More than 1 year has passed since last update.

AWS Hands-on for Beginners 〜Serverless 編〜 #2

Posted at

はじめに

勉強していて気になった部分をなんとなくメモっていきます。

行うこと
https://aws.amazon.com/jp/aws-jp-introduction/aws-jp-webinar-hands-on/
AWSSAMを定義テンプレートからワンレスな環境をする

本人情報
IT現場雑用員(一生Excel触ってる人)
社会人2年目、脳死資格取得男、最近SAPに受かった。


AWS SAM

AWS Serverless Application Modelの略称です。AWS CloudFormationの拡張機能で、スタック内にコードを記載するよりも簡潔にテンプレートを記載することができます。
リソースタイプを指定するTypeと、その詳細を記載するPropertiesによって記述され、公式のデベロッパーズガイドから確認することができます。


記述されたsamはpackageコマンドによって.zipファイルとしてS3に保存され、deployコマンドでLambdaとしてデプロイされます。

Cloud9

ハンズオン内でCloud9からLambda関数をデプロイする方法が紹介されていましたが、現在は同じ方法で実施できなくなくなっていました。
こちらの方の記事を参考にすると同じ操作ができます。

スクリーンショット 2022-07-16 22.45.22.png
デプロイした結果Cloud9上で修正したコードがLambdaに反映されているのを確認することができました。
S3バケット、CloudFormationのスタックも合わせて確認すると、SAMは拡張機能なのだということが実感できます。


実際にSAMを使ってみる

Lambdaを作ってみる

スクリーンショット 2022-07-16 23.23.37.png
このようにディレクトリを作って

スクリーンショット 2022-07-16 23.24.32.png
それぞれこのように記述します。

CodeUri: ./translate-function

この部分について、ローカルの階層を指定しているのはこの後パッケージコマンドを実行した時に実際にCloudFormationのスタックとして保存されるS3のバケットに変換されます。


sam package \
>      --template-file template.yaml \
>      --s3-bucket 'S3バケット名' \
>      --output-template-file packaged-template.yaml

テンプレートファイルに記載したtemplate.yamlを指定します。保存先のS3バケットと、パッケージした後のファイルの名前も合わせて指定しています。必須項目は--s3-bucket 'S3バケット名'です。

スクリーンショット 2022-07-17 0.03.56.png
packaged-template.yamlが作成されました。

aws cloudformation deploy \
>      --template-file ./packaged-template.yaml \
>      --stack-name hands-on-serverless-2 \
>      --capabilities CAPABILITY_IAM

先ほど作成したテンプレートファイルを指定します。作成されるCloudFormationのスタック名と、IAMの操作を許可するCAPABILITY_IAMを追加しています。

スクリーンショット 2022-07-17 0.08.14.png

デプロイされたLambda関数を確認することができました。


API Gateway、DynamoDBを作成する

サンプルコードは公式ページに載っているので、そちらを参考にしてください。Lambda関数を作成するときに使ったyamlファイルと、Lambda関数の中身を記述しているPythonのファイルに追記することでデプロイすることができます。
細かく見たい人はペーストせずに1つ1つのプロパティを、デべロッパーガイドで確認しながら自分で打つといいと思います。

スクリーンショット 2022-07-17 20.41.56.png
input_textに対して入力した英語が、翻訳された日本語で返ってくることまで確認できました。



SAM CLIを使ってみる

インストール方法についてハンズオン内で紹介されているものから、変更されていました。Cloud9上で実施している場合は、「ステップ4: AWS SAM CLIをインストールする」のみでインストールできそうです。


ランタイムの指定で何も考えずにPython 3.9.10を指定したのですが、ビルドに失敗してしましました。CLoud9上にインストールされたPythonを3.9.10に変更する必要があるようです。この記事に詳しいやり方が記載されています。

スクリーンショット 2022-07-17 21.41.06.png

無事にビルドすることができました。
そのほかの手順はハンズオンに従って操作すればうまく行きました。

おまけ

使い慣れている人にとっては当然なのかもしれませんが、Developer Guideで必須項目のみを確認するときはページ内検索で「Required: yes」と打つとそれだけ拾ってくれます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0