As your serverless application evolves, you’ll often need to toggle resources, features, or settings
based on the environment (e.g., dev, staging, production).
With AWS SAM
, you can do this using CloudFormation-style conditionals
, allowing you to dynamically include or exclude resources at deploy time.
In this post, we’ll cover:
- Defining parameters and conditions
- Using Conditions in your SAM template
- Real-world examples like enabling the Powertools logger only in production
🧱 Step 1: Define Parameters
Start by adding environment-based parameters in your template.yml
:
Parameters: Environment: Type: String Default: dev AllowedValues: - dev - staging - prod
⚙️ Step 2: Define Conditions
Now use those parameters to define conditional logic:
Conditions: IsProd: !Equals [ !Ref Environment, prod ] IsLowEnv: !Or - !Equals [ !Ref Environment, dev ] - !Equals [ !Ref Environment, qa ]
You can now use these conditions to control resources, properties, or behaviors in your SAM app.
🔧 Step 3: Use Conditions in Resources
Here’s an example of conditionally including a Powertools Logger layer only in production:
Resources: HelloWorldFunction: Type: AWS::Serverless::Function Properties: Handler: index.handler Runtime: nodejs22.x Environment: Variables: ENV: !Ref Environment Layers: - !If - IsProd - arn:aws:lambda:${AWS::Region}:094274105915:layer:AWSLambdaPowertoolsTypeScriptV2:24 - !Ref "AWS::NoValue"
💡 AWS::NoValue
tells CloudFormation to omit the property entirely when the condition is false.
✅ Optional: Enable/Disable Features
You can also toggle entire resources or outputs:
Resources: TestFunction: Type: AWS::Serverless::Function Properties: Handler: index.handler Runtime: nodejs22.x Condition: IsLowEnv
Conclusion
With AWS SAM Conditionals, you can:
- Make templates more reusable across environments
- Toggle resources, settings, and layers cleanly
- Keep infrastructure lean and purposeful
Whether you're turning on debug logs in dev or enabling global tracing in prod, conditionals help you build smart, environment-aware serverless apps.
Top comments (0)