スキップしてコンテンツを表示

SAMを利用したLambdaのデプロイで環境変数の変更が反映されない

0

samconfig.tomlに以下に要にparmeter_overfidesを指定しています。

	[dev.deploy.parameters]
	parameter_overrides = [
	"SysMailAddr=foo_no_reply@foo.bar.com",
	]

templateでは上記パラメータを受け取るように記述をしています。

Parameters:
  SysMailAddr:
    Type: String
    Default: no_reply@foo.bar.com

上記設定をしたうえで、以下のようにデプロイコマンドでデプロイをしているのですが Lambdaの環境変数に上記パラメータが反映されません。

sam deploy --config-file samconfig.toml --config-env dev --no-fail-on-empty-changeset 

管理コンソールにてcloudforomationを確認すると、該当のスタックのパラメータの欄には templateで指定しているdefaultが表示されており、templateのパラメータに渡っていないように見える状況です。

samconfig.tomlで設定した値を反映させるには何が足りないか教えていただけますでしょうか?

2回答
0
承認された回答

パラメータを変更した後に「sam build」でビルドは行いましたか?
実行していない場合は実行してみてください。
また、正しいsamconfig.tomlを開いて編集 (例えば違うディレクトリにあるファイルを編集していないかなど) しているかなども確認してみてください。

エキスパート

回答済み 2年前

  • ありがとうございます。 LambdaのBuildはNodeJsのServerless Frameworkの方で実施していたのでsam buildは実施していませんでした。 都合、時間が必要ですが試してみます。 また報告させていただきます。

  • 原因がわかりました。buildではなかったのですが、ヒントになりました。ありがとうございます。

    samconfig.tomlにparameter_overridesを記載しているのに、 codepiplineのbuildspec.ymlに記載されているsam deployにもパラメータでparameter_overridesを渡していました。(以下のように) そのため、コマンドパラメータ側が優先されてしまっていました。

      build:
        commands:
          - cd ${CODEBUILD_SRC_DIR}/server
          - npx sls package --stage ${BUILD_ENV}
          - sam deploy --config-file samconfig.toml --config-env ${BUILD_ENV} --no-fail-on-empty-changeset --parameter-overrides JwtPrivateKey=${JWT_PRIVATE_KEY}
    
0

この問題を解決するには、いくつかの点を確認し、修正する必要があります。

  1. samconfig.tomlファイルの形式: 現在の設定では、parameter_overridesの形式が正しくありません。正しい形式は以下のようになります:
[dev.deploy.parameters]
parameter_overrides = "SysMailAddr=foo_no_reply@foo.bar.com"

パラメータオーバーライドは、キーと値のペアを含む単一の文字列として指定する必要があります。

  1. デプロイコマンド: 現在のデプロイコマンドは正しいですが、パラメータが正しく渡されているか確認するために、--parameter-overridesオプションを明示的に使用することもできます:
sam deploy --config-file samconfig.toml --config-env dev --no-fail-on-empty-changeset --parameter-overrides SysMailAddr=foo_no_reply@foo.bar.com
  1. テンプレートでのパラメータの使用: テンプレート内で、パラメータを環境変数として設定していることを確認してください。例えば:
Resources:
  MyFunction:
    Type: AWS::Serverless::Function
    Properties:
      Environment:
        Variables:
          SYSTEM_MAIL_ADDRESS: !Ref SysMailAddr
  1. 変更の確認: デプロイ時に変更セットを確認するオプションを使用することで、パラメータが正しく適用されているか確認できます:
sam deploy --config-file samconfig.toml --config-env dev --no-fail-on-empty-changeset --confirm-changeset

これらの修正を行った後、再度デプロイを実行してください。パラメータが正しく反映され、Lambdaの環境変数が更新されるはずです。変更が反映されない場合は、CloudFormationのスタックイベントを確認し、エラーメッセージがないか確認してください。
Sources
AWS SAM CLI configuration file - AWS Serverless Application Model
sam deploy - AWS Serverless Application Model
The AWS SAM CLI - AWS Serverless Application Model

回答済み 2年前

ログインしていません。 ログイン 回答を投稿する。

優れた回答とは、質問に明確に答え、建設的なフィードバックを提供し、質問者の専門分野におけるスキルの向上を促すものです。

関連するコンテンツ