55469


ローカルでテンプレートファイルを管理しているLambdaのスタックを、 `aws cloudformation package` `aws
cloudformation deloy` で更新しようとしました。  
実際にデプロイは成功し、スタックのテンプレートも更新されております。しかし、パラメータの値が変更されていないので不思議に思っています。

以下のような変更を加えました。

main.yml(変更前):

[code]

    Parameters:
      MyKey:
        Type: String
        Default: ABC
    
[/code]

main.yml(変更後):

[code]

    Parameters:
      MyKey:
        Type: String
        Default: DEF
    
[/code]

デプロイ後、コンソール画面から `Template` を確認すると、Defaultには更新後の `DEF` という値が表示されています。  
しかし、スタックの `Parameter` を参照すると、更新前の `ABC` という値が表示されています。

スタックが更新されていること、ステータスが直近時刻の `UPDATE_COMPLETE`
であることから、スタックの更新自体は行われたものと推測しています。であれば、スタックのパラメータが更新されない理由がわかりません。

どなたかお知恵をお貸しいただければ幸いです。

[環境]  
aws cli: aws-cli/1.15.83 Python/3.6.5 Darwin/18.0.0 botocore/1.10.82  
REGION: ap-northeast-1


CC BY-SA 4.0
2018-11-26T03:26:29.730
50628
2019-06-03T03:26:32.857
2018-11-26T05:07:51.720
26110
26110
question
aws aws-lambda aws-cloudformation
CloudFormationのStackのParameterが、テンプレート内のデフォルト値を書き換えたにも関わらず更新されない


yml内に記述するparameter値はstackには反映されません。  
stackをdeployするときにコマンドラインやコンソールから入力すれば、それが画面上では反映されます。


CC BY-SA 4.0
2019-06-01T09:21:18.500
55431
2019-06-01T09:21:18.500
34547
50628
answer


チラホラと述べられていますが、CloudFormation のテンプレートのデフォルトパラメータは、 Stack
作成時に、明示的に指定がない場合、その値でもって引数パラメータとして環境の初期化を行うための仕組みの様子です。

一度初期化した後には、デフォルトからコピーされた値が CloudFormation
上で管理されることになり、その値がデフォルト利用なのかユーザーが明示的に指定したものなのかの管理は、 CloudFormation では行われない様子です。

ですので、デフォルトパラメータを更新した際に、それを既存の Stack に適用するためには明示的に Stack のパラメータ更新を行う必要がある様子です。

参考: @maya2250 さんのリンク
<https://stackoverflow.com/questions/51249700/cloudformation-wont-deploy-
changes-when-default-param-is-changed>


CC BY-SA 4.0
2019-06-03T03:26:32.857
55469
2019-06-03T03:26:32.857
754
50628
answer