Skip to content

Lambda with AutoPublishAlias and AutoPublishAliasAllProperties does not create a new version when the referenced Parameter value changes #3820

@daniel-afana

Description

@daniel-afana

Description

In my AWS::Serverless::Function Environment section, I have the Parameter referenced.
When the parameter value changes and I run sam deploy, a new Lambda version is not created.

Steps to reproduce

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31

Parameters:
  TestParameter:
    Type: String

Resources:
  HelloWorldFunction:
    Type: AWS::Serverless::Function
    Properties:
      CodeUri: hello_world/
      Handler: app.lambda_handler
      Environment:
        Variables:
          TEST_PARAMETER: !Ref TestParameter
      AutoPublishAlias: live
      AutoPublishAliasAllProperties: true
      Runtime: python3.12
      Architectures:
        - x86_64
sam build --template-file template.yaml --parameter-overrides TestParameter='3'
sam deploy --config-file samconfig.toml --template-file template.yaml --debug --parameter-overrides TestParameter='3'

Observed result

No new Lambda version is created

2025-09-30 19:30:57,747 | Config file location: .../LambdaVersions/samconfig.toml            
2025-09-30 19:30:57,748 | Loading configuration values from [default.['deploy'].parameters] (env.command_name.section) in config file at  '.../LambdaVersions/samconfig.toml'...                                                       
2025-09-30 19:30:57,748 | Configuration values successfully loaded.                                                                       
2025-09-30 19:30:57,749 | Configuration values are: {'stack_name': 'LambdaVersions', 'template': 'template.yaml', 'capabilities':         
'CAPABILITY_IAM', 'confirm_changeset': True, 'no_resolve_s3': True, 's3_bucket': '...', 's3-prefix':  '...'}                                                                                                         
2025-09-30 19:30:57,763 | Using config file: samconfig.toml, config environment: default                                                  
2025-09-30 19:30:57,764 | Expand command line arguments to:                                                                               
2025-09-30 19:30:57,764 | --template_file=.../LambdaVersions/template.yaml                   
--parameter_overrides={'TestParameter': '3'} --fail_on_empty_changeset --confirm_changeset --on_failure=ROLLBACK --max_wait_duration=60
--stack_name=LambdaVersions --s3_bucket=... --capabilities=['CAPABILITY_IAM']                                               
2025-09-30 19:30:57,858 | Collected default values for parameters: {}                                                                     
2025-09-30 19:30:57,866 | There is no customer defined id or cdk path defined for resource HelloWorldFunction, so we will use the resource
logical id as the resource id                                                                                                             
2025-09-30 19:30:57,866 | There is no customer defined id or cdk path defined for resource ServerlessRestApi, so we will use the resource 
logical id as the resource id                                                                                                             
2025-09-30 19:30:57,866 | 0 stacks found in the template                                                                                  
2025-09-30 19:30:57,867 | Collected default values for parameters: {}                                                                     
2025-09-30 19:30:57,872 | There is no customer defined id or cdk path defined for resource HelloWorldFunction, so we will use the resource
logical id as the resource id                                                                                                             
2025-09-30 19:30:57,873 | There is no customer defined id or cdk path defined for resource ServerlessRestApi, so we will use the resource 
logical id as the resource id                                                                                                             
2025-09-30 19:30:57,947 | There is no customer defined id or cdk path defined for resource HelloWorldFunction, so we will use the resource
logical id as the resource id                                                                                                             
2025-09-30 19:30:57,947 | Sam customer defined id is more priority than other IDs. Customer defined id for resource HelloWorldFunction is 
HelloWorldFunction                                                                                                                        
2025-09-30 19:30:58,439 |                                                                                                                 
        File with same data already exists at ..., skipping upload                                           

	Deploying with following values
	===============================
	Stack name                   : LambdaVersions
	Region                       :...
	Confirm changeset            : True
	Disable rollback             : False
	Deployment s3 bucket         :...
	Capabilities                 : ["CAPABILITY_IAM"]
	Parameter overrides          : {"TestParameter": "3"}
	Signing Profiles             : {}

Initiating deployment
=====================

2025-09-30 19:30:58,466 | Collected default values for parameters: {}                                                                     
2025-09-30 19:30:58,476 | Sam customer defined id is more priority than other IDs. Customer defined id for resource HelloWorldFunction is 
HelloWorldFunction                                                                                                                        
2025-09-30 19:30:58,477 | There is no customer defined id or cdk path defined for resource ServerlessRestApi, so we will use the resource 
logical id as the resource id                                                                                                             
2025-09-30 19:30:58,477 | 0 stacks found in the template                                                                                  
2025-09-30 19:30:58,477 | Collected default values for parameters: {}                                                                     
2025-09-30 19:30:58,486 | Sam customer defined id is more priority than other IDs. Customer defined id for resource HelloWorldFunction is 
HelloWorldFunction                                                                                                                        
2025-09-30 19:30:58,486 | There is no customer defined id or cdk path defined for resource ServerlessRestApi, so we will use the resource 
logical id as the resource id                                                                                                             
2025-09-30 19:30:58,487 | 2 resources found in the stack                                                                                  
2025-09-30 19:30:59,741 |                                                                                                                 
        File with same data already exists at ....template, skipping upload                                  


Waiting for changeset to be created..

CloudFormation stack changeset
-------------------------------------------------------------------------------------------------------------------------------------
Operation                         LogicalResourceId                 ResourceType                      Replacement                     
-------------------------------------------------------------------------------------------------------------------------------------
* Modify                          HelloWorldFunction                AWS::Lambda::Function             False                           
-------------------------------------------------------------------------------------------------------------------------------------


Changeset created successfully. arn:aws:cloudformation:...:...:changeSet/samcli-deploy.../...


Previewing CloudFormation changeset before deployment
======================================================

Expected result

According to AutoPublishAliasAllProperties documentation, the new Lambda version should be created ("When true, a new Lambda version is created when any property in the Lambda function is modified").

Compare to changing the Lambda environment variable value in the template directly:

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31

Parameters:
  TestParameter:
    Type: String

Resources:
  HelloWorldFunction:
    Type: AWS::Serverless::Function
    Properties:
      CodeUri: hello_world/
      Handler: app.lambda_handler
      Environment:
        Variables:
          TEST_PARAMETER: 3
      AutoPublishAlias: live
      AutoPublishAliasAllProperties: true
      Runtime: python3.12
      Architectures:
        - x86_64

sam build --template-file template.yaml

sam deploy --config-file samconfig.toml --template-file template.yaml --debug
2025-09-30 19:45:50,908 | Config file location: .../LambdaVersions/samconfig.toml            
2025-09-30 19:45:50,910 | Loading configuration values from [default.['deploy'].parameters] (env.command_name.section) in config file at '.../LambdaVersions/samconfig.toml'...                                                       
2025-09-30 19:45:50,910 | Configuration values successfully loaded.                                                                       
2025-09-30 19:45:50,910 | Configuration values are: {'stack_name': 'LambdaVersions', 'template': 'template.yaml', 'capabilities':         
'CAPABILITY_IAM', 'confirm_changeset': True, 'no_resolve_s3': True, 's3_bucket': '...', 's3-prefix': '.../'}                                                                                                         
2025-09-30 19:45:50,924 | Using config file: samconfig.toml, config environment: default                                                  
2025-09-30 19:45:50,924 | Expand command line arguments to:                                                                               
2025-09-30 19:45:50,925 | --template_file=.../LambdaVersions/template.yaml                   
--fail_on_empty_changeset --confirm_changeset --on_failure=ROLLBACK --max_wait_duration=60 --stack_name=LambdaVersions                    
--s3_bucket=... --capabilities=['CAPABILITY_IAM']                                                                           
2025-09-30 19:45:51,016 | Collected default values for parameters: {}                                                                     
2025-09-30 19:45:51,024 | There is no customer defined id or cdk path defined for resource HelloWorldFunction, so we will use the resource
logical id as the resource id                                                                                                             
2025-09-30 19:45:51,025 | There is no customer defined id or cdk path defined for resource ServerlessRestApi, so we will use the resource 
logical id as the resource id                                                                                                             
2025-09-30 19:45:51,025 | 0 stacks found in the template                                                                                  
2025-09-30 19:45:51,026 | Collected default values for parameters: {}                                                                     
2025-09-30 19:45:51,031 | There is no customer defined id or cdk path defined for resource HelloWorldFunction, so we will use the resource
logical id as the resource id                                                                                                             
2025-09-30 19:45:51,031 | There is no customer defined id or cdk path defined for resource ServerlessRestApi, so we will use the resource 
logical id as the resource id                                                                                                             
2025-09-30 19:45:51,104 | There is no customer defined id or cdk path defined for resource HelloWorldFunction, so we will use the resource
logical id as the resource id                                                                                                             
2025-09-30 19:45:51,104 | Sam customer defined id is more priority than other IDs. Customer defined id for resource HelloWorldFunction is 
HelloWorldFunction                                                                                                                        
2025-09-30 19:45:51,669 |                                                                                                                 
        File with same data already exists at ..., skipping upload                                           

	Deploying with following values
	===============================
	Stack name                   : LambdaVersions
	Region                       : ...
	Confirm changeset            : True
	Disable rollback             : False
	Deployment s3 bucket         :...
	Capabilities                 : ["CAPABILITY_IAM"]
	Parameter overrides          : {}
	Signing Profiles             : {}

Initiating deployment
=====================

2025-09-30 19:45:51,694 | Collected default values for parameters: {}                                                                     
2025-09-30 19:45:51,703 | Sam customer defined id is more priority than other IDs. Customer defined id for resource HelloWorldFunction is 
HelloWorldFunction                                                                                                                        
2025-09-30 19:45:51,704 | There is no customer defined id or cdk path defined for resource ServerlessRestApi, so we will use the resource 
logical id as the resource id                                                                                                             
2025-09-30 19:45:51,704 | 0 stacks found in the template                                                                                  
2025-09-30 19:45:51,705 | Collected default values for parameters: {}                                                                     
2025-09-30 19:45:51,713 | Sam customer defined id is more priority than other IDs. Customer defined id for resource HelloWorldFunction is 
HelloWorldFunction                                                                                                                        
2025-09-30 19:45:51,713 | There is no customer defined id or cdk path defined for resource ServerlessRestApi, so we will use the resource 
logical id as the resource id                                                                                                             
2025-09-30 19:45:51,714 | 2 resources found in the stack                                                                                  
	Uploading to ...template  1349 / 1349  (100.00%)


Waiting for changeset to be created..

CloudFormation stack changeset
-------------------------------------------------------------------------------------------------------------------------------------
Operation                         LogicalResourceId                 ResourceType                      Replacement                     
-------------------------------------------------------------------------------------------------------------------------------------
+ Add                             HelloWorldFunctionVersionfd...   AWS::Lambda::Version              N/A                             
* Modify                          HelloWorldFunctionAliaslive       AWS::Lambda::Alias                  False                           
* Modify                          HelloWorldFunction                   AWS::Lambda::Function             False                           
- Delete                          HelloWorldFunctionVersion...      AWS::Lambda::Version              N/A                                                                                                                   
-------------------------------------------------------------------------------------------------------------------------------------


Changeset created successfully. arn:aws:cloudformation...:...:changeSet/samcli-deploy.../...


Previewing CloudFormation changeset before deployment
======================================================

Additional environment details

  1. OS: macOS 15.6.1
  2. If using the SAM CLI, sam --version: SAM CLI, version 1.144.0
  3. AWS region: eu-central-1

Metadata

Metadata

Assignees

No one assigned

    Labels

    stage/needs-triageAutomatically applied to new issues and PRs, indicating they haven't been looked at.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions