こんにちは、アプリケーションサービス部ディベロップメントサービス 1 課の滝澤です。
本記事をご覧いただきありがとうございます。
本記事は AWS Serverless Application Model(以下、SAM) でパラメータを扱う方法について説明します。
SAM の概要についてはこちらの記事をご覧ください。
前提(SAM プロジェクトの初期化)
SAM CLI は執筆時点で最新のversion 1.108.0
を使用しています。
今回は AWS が用意しているテンプレートのHello World Example
を使用することにしました。
以下のコマンドを使用することで対話形式で新しいサーバーレスアプリケーションを初期化することができます。 本質ではないので詳しい説明は割愛します。
sam init
$ sam init Which template source would you like to use? 1 - AWS Quick Start Templates 2 - Custom Template Location Choice: 1 Choose an AWS Quick Start application template 1 - Hello World Example 2 - Data processing 3 - Hello World Example with Powertools for AWS Lambda 4 - Multi-step workflow 5 - Scheduled task 6 - Standalone function 7 - Serverless API 8 - Infrastructure event management 9 - Lambda Response Streaming 10 - Serverless Connector Hello World Example 11 - Multi-step workflow with Connectors 12 - GraphQLApi Hello World Example 13 - Full Stack 14 - Lambda EFS example 15 - Hello World Example With Powertools for AWS Lambda 16 - DynamoDB Example 17 - Machine Learning Template: 1 (以下略)
SAM でパラメータを使用する方法
template.yaml にParameters
セクションを追加する
template.yaml
に以下の Parameters セクションを追加し、そのパラメータを使用したい箇所で Ref 関数を呼び出します。
... Parameters: SampleParam01: Type: String Description: A sample parameter ... Resources: HelloWorldFunction: Type: AWS::Serverless::Function Properties: FunctionName: !Ref SampleParam01 ...
これで template.yaml ファイルでパラメータを受け取る準備が完了しました。
template.yaml にパラメータを渡す方法
デプロイ時に --parameter-overrides
を使用する
sam deploy --parameter-overrides ParameterKey=ParameterValue
deploy 時に --parameter-overrides
オプションを使用することで template.yaml ファイルにパラメータを渡すことができます。
template.yaml に Parameters セクションを追加する
で提示した例だと
sam deploy --parameter-overrides SampleParam01=hoge
といった形で渡すことができます。
お手軽ではありますが、毎回指定する手間やパラメータ数が多くなった時の管理の煩雑さがネックです。
sam deploy --guided を使用する
デプロイ時に使用できる --guided
オプションというものがあります。
詳しくはこちらの記事をご覧ください。
このオプションを使用することでプロンプトを用いたガイドを使用することが可能で、
その中でパラメータに関しても、1 つずつ指定することが可能です。
また、プロンプト内のSave arguments to configuration file
の項目に yes
と回答した場合には samconfig.toml ファイルにパラメータの設定を保存して次回からのデプロイに使用することができます。
samconfig.toml ファイルに記述する
前章で samconfig.toml ファイルにパラメータ内容を保存することができると述べましたが、
このファイルを直接変更することで template.yaml に渡すパラメータの内容を変更することももちろん可能です。
parameter_overrides = "SampleParam01=hoge",
パラメータが増えても
parameter_overrides = [ "Param01=hoge", "Param02=fuga", "Param03= piyo", ... ]
といった形で渡せるので、デプロイ時の手間も少なく済みます。
3種類の方法をご紹介しましたが、基本的には samconfig.toml ファイルに記述する方法が管理がしやすいのでおすすめです。
デプロイしてみた
samconfig.toml ファイルに記述する
の方法で実際にデプロイを実行してみます。
samconfig.toml 内
parameter_overrides = "SampleParam01=hoge",
以下のコマンドを実行します。
sam deploy
AWS マネジメントコンソールを覗くと実際にパラメータで指定した値が Lambda(HelloWorldFunction)の関数名に使用されているのが確認できました。
終わりに
最後までお読み頂きありがとうございました。
本記事では SAM でのパラメータの扱い方について説明しました。 次回、ネストされたスタックでのパラメータの受け渡しについての記事も執筆予定ですのでぜひそちらもご覧いただければと思います。
本記事が少しでもお役に立てれば幸いです。