AWS CloudFormationでLambdaをデプロイする方法

AWS CloudFormationでLambdaをデプロイする方法

CloudFormationでLambdaをデプロイする方法です。

CloudFormationは単なるyamlなので、VSCodeのプラグイン「Yaml」をインストールして設定しておくと少し捗ります。

設定方法は「OpenAPI3.0やCloudFormationのYamlをVSCodeで作成する方法 」を参照ください。

ZipFile

Lambdaを作成するにあたってZipFileでYamlにインラインでLambdaのコードを書いてデプロイすることができますが、普通そんなことしないと思われます。

S3Bucket,S3Key

LambdaをCloudFormationでデプロイする場合はS3からアップロードするケースが多いと思います。

S3にYamlをアップロードして、Lambda Function自体はzipファイルにしてS3に配置してデプロイすることができます。S3を使用する場合は以下のように指定します。

runtime

Lambdaのランタイムは現時点で指定できるのは以下の通りです。

ランタイム
java8
java11
nodejs10.x
nodejs12.x
python2.7
python3.6
python3.7
python3.8
dotnetcore2.1
go1.x
ruby2.5

Lambda+IAMロールを作成するCloudFormation

長いと読む気になれないですが、簡単なYamlです。

CloudFormationのスタックを作成する

CloudFormationのスタックを作成します。

AWS CloudFormationでLambdaをデプロイする方法

「新しいリソースを使用(標準)」を選択します。

AWS CloudFormationでLambdaをデプロイする方法

yamlファイルを選択すると自動でS3にアップロードされるので「次へ」をクリックします。

AWS CloudFormationでLambdaをデプロイする方法

スタック名を入力して「次へ」をクリックします。

AWS CloudFormationでLambdaをデプロイする方法

いくつか進んでいって最後に「AWS CloudFormation によって IAM リソースが作成される場合があることを承認します。」にチェックを入れて「スタックの作成」をクリックします。

AWS CloudFormationでLambdaをデプロイする方法

スタックのイベントに「CREATE_COMPLETE」と出ればLambdaがデプロイされています。

Lambdaの環境変数を設定する

CloudFormationのEnvironmentを使用して環境変数を設定することができます。

こういう事が出来るのでCloudFormationはすごく便利です。

以下のようにPropertiesにEnvironmentを追加してあげます。複数環境変数を指定したい場合はVariablesに複数指定してあげたら良いです。

X-Rayのアクティブトレースにチェックを入れる

X-Rayをアクティブにしたかったので、CloudFormationで試しました。

インラインポリシーを作って権限を与えます。

インラインポリシー一つ作成するのにこのステップは正直長すぎますが、これでインラインポリシーが作成されます。

逆アセンブルしてYamlを吐いてくれる機能などが一部あるようですが詳細な方法は知りません。

Lambda側ではPropertiesに以下2行追加するだけです。

これでスタック作成すればX-Rayがアクティブになります。

Fn::GetAtt

取りうる値は配列で、属性の値を返します。

属性 戻り値
必要な属性を含むリソースの論理名 リソースの論理名
ARN 関数のARN

2通りの記述方法があります。

短い書き方です。

https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html

CloudFormationをCLIで実行する

CLIでスタックを作成することも可能です。

上記のlambda.cf.yamlをダウンロードして、テンプレートファイルとします。

aws cloudformation deployコマンドを使用します。

これでhogeというスタックが作成されて、–template-fileで指定したLambdaも作成されます。

–parameter-overrides

aws cloudformation deployの–parameter-overridesオプションを使うことによって、–template-fileで指定したyaml内の値を動的に指定することが可能になります。

template-fileでパラメータを指定しておく必要があります。

ここではlambda.cf.yamlファイル内に「DeployBucket」というパラメータを指定してみます。

これで定義が完了です。

パラメータを使うには!Ref DeployBucketというように書きます。

aws cloudformation deployコマンドで–parameter-overridesオプションを追加します。

バケット名はMyBucketとしています。

スポンサーリンク
  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存
スポンサーリンク

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA