awslabs / awslabs/serverless-rules
Plugin is not compatible with newer versions of TFLint
- Dominant language
- Go
- Stars
- 420
- Forks
- 29
- PR merge metrics
- No merged PRs in 30d
Description
**What were you trying to accomplish?**
Running tflint with the serverless-rules installed
## Expected Behavior
TFLint works with this plugin
## Current Behavior
`Failed to initialize plugins; Incompatible API version with plugin "aws-serverless". Plugin version: 9, TFLint versions: [10]`
## Possible Solution
## Steps to Reproduce (for bugs)
1. Install newest version of tflint 0.35.0
2. Add `plugin "aws-serverless"` to your .tflint.hcl file.
3. Run `tflint` in a Terraform repo
## Environment
MacOS
* **Infrastructure as code technology used**:
TFLint version 0.35.0
### .tflint.hcl file
```terraform
config {
module = true
}
plugin "aws" {
enabled = true
version = "0.13.2"
source = "github.com/terraform-linters/tflint-ruleset-aws"
}
plugin "aws-serverless" {
enabled = true
version = "0.3.2"
source = "github.com/awslabs/serverless-rules"
}
```
* **Debugging logs**
```
❯ tflint --loglevel=debug
17:17:02 config.go:110: [INFO] Load config: .tflint.hcl
17:17:02 config.go:365: [DEBUG] Config loaded
17:17:02 config.go:366: [DEBUG] Module: true
17:17:02 config.go:367: [DEBUG] Force: false
17:17:02 config.go:368: [DEBUG] IgnoreModules: map[string]bool{}
17:17:02 config.go:369: [DEBUG] Varfiles: []string{}
17:17:02 config.go:370: [DEBUG] Variables: []string{}
17:17:02 config.go:371: [DEBUG] DisabledByDefault: false
17:17:02 config.go:372: [DEBUG] PluginDir:
17:17:02 config.go:373: [DEBUG] Rules: map[string]*tflint.RuleConfig{}
17:17:02 config.go:374: [DEBUG] Plugins: map[string]*tflint.PluginConfig{"aws":(*tflint.PluginConfig)(0xc000181500), "aws-serverless":(*tflint.PluginConfig)(0xc000181580)}
17:17:02 option.go:49: [DEBUG] CLI Options
17:17:02 option.go:50: [DEBUG] Module: false
17:17:02 option.go:51: [DEBUG] Force: false
17:17:02 option.go:52: [DEBUG] IgnoreModules: map[string]bool{}
17:17:02 option.go:53: [DEBUG] EnableRules: []string(nil)
17:17:02 option.go:54: [DEBUG] DisableRules: []string(nil)
17:17:02 option.go:55: [DEBUG] Only: []string(nil)
17:17:02 option.go:56: [DEBUG] EnablePlugins: []string(nil)
17:17:02 option.go:57: [DEBUG] Varfiles: []string{}
17:17:02 option.go:58: [DEBUG] Variables: []string{}
17:17:02 loader.go:57: [INFO] Initialize new loader
17:17:02 loader.go:68: [INFO] Module manifest file found. Initializing...
17:17:02 loader.go:291: [DEBUG] Parsing the module manifest file: {"Modules":[{"Key":"","Source":"","Dir":"."},{"Key":"vpn_instance","Source":"registry.terraform.io/terraform-aws-modules/ec2-instance/aws","Version":"3.5.0","Dir":".terraform/modules/vpn_instance"}]}
17:17:02 loader.go:82: [INFO] Load configurations under .
17:17:02 loader.go:97: [INFO] Module inspection is enabled. Building a root module with children...
17:17:02 loader.go:273: [DEBUG] Trying to load the module: key=module.vpn_instance, version=3.5.0, dir=.terraform/modules/vpn_instance
17:17:02 loader.go:170: [INFO] Load values files
17:17:02 runner.go:58: [INFO] Initialize new runner for root
17:17:02 terraform.go:79: [INFO] environment file found: network-infrastructure-staging
17:17:02 runner.go:223: [DEBUG] `vpc_security_group_ids` has been marked as unknown
17:17:02 runner.go:223: [DEBUG] `ami` has been marked as unknown
17:17:02 runner.go:223: [DEBUG] `subnet_id` has been marked as unknown
17:17:02 runner.go:223: [DEBUG] `iam_instance_profile` has been marked as unknown
17:17:02 runner.go:223: [DEBUG] `user_data` has been marked as unknown
17:17:02 runner.go:223: [DEBUG] `volume_tags` has been marked as unknown
17:17:02 runner.go:58: [INFO] Initialize new runner for module.vpn_instance
17:17:02 terraform.go:79: [INFO] environment file found: network-infrastructure-staging
17:17:02 runner_eval.go:40: [INFO] unevaluable expression found in .terraform/modules/vpn_instance/main.tf:8. TFLint ignores unevaluable expressions.
17:17:02 runner_eval.go:40: [INFO] unevaluable expression found in .terraform/modules/vpn_instance/main.tf:141. TFLint ignores unevaluable expressions.
17:17:02 discovery.go:79: [DEBUG] Find plugin path: /Users/doug/.tflint.d/plugins/github.com/terraform-linters/tflint-ruleset-aws/0.13.2/tflint-ruleset-aws
17:17:02 discovery.go:43: [INFO] Plugin `aws` found
17:17:02 discovery.go:79: [DEBUG] Find plugin path: /Users/doug/.tflint.d/plugins/github.com/awslabs/serverless-rules/0.3.2/tflint-ruleset-aws-serverless
17:17:02 discovery.go:43: [INFO] Plugin `aws-serverless` found
Failed to initialize plugins; Incompatible API version with plugin "aws-serverless". Plugin version: 9, TFLint versions: [10]
```
Contributor guide
Research direction
Start by reviewing the serverless-rules plugin entry point and its TFLint integration, then compare the plugin API expected by TFLint 0.35.0 with the API version reported in the failure. Reproduce the issue using the shown .tflint.hcl configuration and confirm that TFLint initializes the aws-serverless plugin without the incompatibility error.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go, terraform
- Domain
- infrastructure, tooling
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100