豆豆友情提示:这是一个非官方 GitHub 代理镜像,主要用于网络测试或访问加速。请勿在此进行登录、注册或处理任何敏感信息。进行这些操作请务必访问官方网站 github.com。 Raw 内容也通过此代理提供。
Skip to content

Crash with terraform modules with host:port sources #12782

@jeffreytolar

Description

@jeffreytolar

Is there an existing issue for this?

  • I have searched the existing issues

Package ecosystem

terraform

Package manager version

No response

Language version

No response

Manifest location and content before the Dependabot update

terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 5.0"
    }
  }
}

provider "aws" {
  region = "us-west-2"
}

module "vpc" {
  # specifying a port here fails
  source  = "registry.terraform.io:443/terraform-aws-modules/vpc/aws"
  version = "5.5.1"

  name = "my-vpc"
  cidr = "10.0.0.0/16"

  azs             = ["us-west-2a", "us-west-2b", "us-west-2c"]
  private_subnets = ["10.0.1.0/24", "10.0.2.0/24", "10.0.3.0/24"]
  public_subnets  = ["10.0.101.0/24", "10.0.102.0/24", "10.0.103.0/24"]

  enable_nat_gateway = true
  enable_vpn_gateway = true

  tags = {
    Terraform   = "true"
    Environment = "dev"
  }
}

For the public registry, a viable workaround is "don't specify a port". However, our internal registry uses a non-443 port

dependabot.yml content

This is on GHES:

version: 2
updates:
  - package-ecosystem: terraform
    directories:
      - "**/*"
    schedule:
      interval: weekly
      time: "07:00"
      day: thursday
    allow:
      - dependency-type: all

Updated dependency

No response

What you expected to see, versus what you actually saw

Dependabot logs an exception:

updater | 2025/08/05 17:19:26 ERROR <job_317046> Error processing terraform-aws-modules/vpc/aws (URI::InvalidComponentError)
2025/08/05 17:19:26 ERROR <job_317046> bad component(expected host component): registry.terraform.io:443
updater | 2025/08/05 17:19:26 ERROR <job_317046> /usr/local/lib/ruby/3.4.0/uri/generic.rb:601:in 'URI::Generic#check_host'
2025/08/05 17:19:26 ERROR <job_317046> /usr/local/lib/ruby/3.4.0/uri/generic.rb:640:in 'URI::Generic#host='
2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/terraform/lib/dependabot/terraform/registry_client.rb:218:in 'Dependabot::Terraform::RegistryClient#url_for'
2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/dependabot-updater/vendor/ruby/3.4.0/gems/sorbet-runtime-0.5.11952/lib/types/private/methods/call_validation.rb:282:in 'UnboundMethod#bind_call'
2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/dependabot-updater/vendor/ruby/3.4.0/gems/sorbet-runtime-0.5.11952/lib/types/private/methods/call_validation.rb:282:in 'T::Private::Methods::CallValidation.validate_call'
2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/dependabot-updater/vendor/ruby/3.4.0/gems/sorbet-runtime-0.5.11952/lib/types/private/methods/_methods.rb:277:in 'block in Dependabot::Terraform::RegistryClient#_on_method_added'
2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/terraform/lib/dependabot/terraform/registry_client.rb:173:in 'Dependabot::Terraform::RegistryClient#services'
updater | 2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/dependabot-updater/vendor/ruby/3.4.0/gems/sorbet-runtime-0.5.11952/lib/types/private/methods/call_validation.rb:282:in 'UnboundMethod#bind_call'
2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/dependabot-updater/vendor/ruby/3.4.0/gems/sorbet-runtime-0.5.11952/lib/types/private/methods/call_validation.rb:282:in 'T::Private::Methods::CallValidation.validate_call'
updater | 2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/dependabot-updater/vendor/ruby/3.4.0/gems/sorbet-runtime-0.5.11952/lib/types/private/methods/_methods.rb:277:in 'block in Dependabot::Terraform::RegistryClient#_on_method_added'
2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/terraform/lib/dependabot/terraform/registry_client.rb:145:in 'Dependabot::Terraform::RegistryClient#service_url_for'
2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/dependabot-updater/vendor/ruby/3.4.0/gems/sorbet-runtime-0.5.11952/lib/types/private/methods/call_validation.rb:282:in 'UnboundMethod#bind_call'
updater | 2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/dependabot-updater/vendor/ruby/3.4.0/gems/sorbet-runtime-0.5.11952/lib/types/private/methods/call_validation.rb:282:in 'T::Private::Methods::CallValidation.validate_call'
2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/dependabot-updater/vendor/ruby/3.4.0/gems/sorbet-runtime-0.5.11952/lib/types/private/methods/_methods.rb:277:in 'block in Dependabot::Terraform::RegistryClient#_on_method_added'
2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/terraform/lib/dependabot/terraform/registry_client.rb:93:in 'Dependabot::Terraform::RegistryClient#all_module_versions'
2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/dependabot-updater/vendor/ruby/3.4.0/gems/sorbet-runtime-0.5.11952/lib/types/private/methods/call_validation.rb:282:in 'UnboundMethod#bind_call'
updater | 2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/dependabot-updater/vendor/ruby/3.4.0/gems/sorbet-runtime-0.5.11952/lib/types/private/methods/call_validation.rb:282:in 'T::Private::Methods::CallValidation.validate_call'
2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/dependabot-updater/vendor/ruby/3.4.0/gems/sorbet-runtime-0.5.11952/lib/types/private/methods/_methods.rb:277:in 'block in Dependabot::Terraform::RegistryClient#_on_method_added'
updater | 2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/terraform/lib/dependabot/terraform/update_checker.rb:94:in 'Dependabot::Terraform::UpdateChecker#all_module_versions'
2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/dependabot-updater/vendor/ruby/3.4.0/gems/sorbet-runtime-0.5.11952/lib/types/private/methods/call_validation.rb:282:in 'UnboundMethod#bind_call'
updater | 2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/dependabot-updater/vendor/ruby/3.4.0/gems/sorbet-runtime-0.5.11952/lib/types/private/methods/call_validation.rb:282:in 'T::Private::Methods::CallValidation.validate_call'
2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/dependabot-updater/vendor/ruby/3.4.0/gems/sorbet-runtime-0.5.11952/lib/types/private/methods/_methods.rb:277:in 'block in Dependabot::Terraform::UpdateChecker#_on_method_added'
updater | 2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/terraform/lib/dependabot/terraform/update_checker.rb:81:in 'Dependabot::Terraform::UpdateChecker#latest_version_for_registry_dependency'
2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/dependabot-updater/vendor/ruby/3.4.0/gems/sorbet-runtime-0.5.11952/lib/types/private/methods/call_validation.rb:282:in 'UnboundMethod#bind_call'
2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/dependabot-updater/vendor/ruby/3.4.0/gems/sorbet-runtime-0.5.11952/lib/types/private/methods/call_validation.rb:282:in 'T::Private::Methods::CallValidation.validate_call'
2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/dependabot-updater/vendor/ruby/3.4.0/gems/sorbet-runtime-0.5.11952/lib/types/private/methods/_methods.rb:277:in 'block in Dependabot::Terraform::UpdateChecker#_on_method_added'
2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/terraform/lib/dependabot/terraform/update_checker.rb:27:in 'Dependabot::Terraform::UpdateChecker#latest_version'
updater | 2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/dependabot-updater/vendor/ruby/3.4.0/gems/sorbet-runtime-0.5.11952/lib/types/private/methods/call_validation.rb:282:in 'UnboundMethod#bind_call'
2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/dependabot-updater/vendor/ruby/3.4.0/gems/sorbet-runtime-0.5.11952/lib/types/private/methods/call_validation.rb:282:in 'T::Private::Methods::CallValidation.validate_call'
2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/dependabot-updater/vendor/ruby/3.4.0/gems/sorbet-runtime-0.5.11952/lib/types/private/methods/_methods.rb:277:in 'block in Dependabot::Terraform::UpdateChecker#_on_method_added'
updater | 2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/dependabot-updater/lib/dependabot/updater/operations/update_all_versions.rb:248:in 'Dependabot::Updater::Operations::UpdateAllVersions#all_versions_ignored?'
2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/dependabot-updater/vendor/ruby/3.4.0/gems/sorbet-runtime-0.5.11952/lib/types/private/methods/call_validation.rb:282:in 'UnboundMethod#bind_call'
2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/dependabot-updater/vendor/ruby/3.4.0/gems/sorbet-runtime-0.5.11952/lib/types/private/methods/call_validation.rb:282:in 'T::Private::Methods::CallValidation.validate_call'
updater | 2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/dependabot-updater/vendor/ruby/3.4.0/gems/sorbet-runtime-0.5.11952/lib/types/private/methods/_methods.rb:277:in 'block in Dependabot::Updater::Operations::UpdateAllVersions#_on_method_added'
2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/dependabot-updater/lib/dependabot/updater/operations/update_all_versions.rb:123:in 'Dependabot::Updater::Operations::UpdateAllVersions#check_and_create_pull_request'
updater | 2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/dependabot-updater/vendor/ruby/3.4.0/gems/sorbet-runtime-0.5.11952/lib/types/private/methods/call_validation.rb:282:in 'UnboundMethod#bind_call'
2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/dependabot-updater/vendor/ruby/3.4.0/gems/sorbet-runtime-0.5.11952/lib/types/private/methods/call_validation.rb:282:in 'T::Private::Methods::CallValidation.validate_call'
updater | 2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/dependabot-updater/vendor/ruby/3.4.0/gems/sorbet-runtime-0.5.11952/lib/types/private/methods/_methods.rb:277:in 'block in Dependabot::Updater::Operations::UpdateAllVersions#_on_method_added'
2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/dependabot-updater/lib/dependabot/updater/operations/update_all_versions.rb:94:in 'Dependabot::Updater::Operations::UpdateAllVersions#check_and_create_pr_with_error_handling'
updater | 2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/dependabot-updater/vendor/ruby/3.4.0/gems/sorbet-runtime-0.5.11952/lib/types/private/methods/call_validation.rb:282:in 'UnboundMethod#bind_call'
2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/dependabot-updater/vendor/ruby/3.4.0/gems/sorbet-runtime-0.5.11952/lib/types/private/methods/call_validation.rb:282:in 'T::Private::Methods::CallValidation.validate_call'
2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/dependabot-updater/vendor/ruby/3.4.0/gems/sorbet-runtime-0.5.11952/lib/types/private/methods/_methods.rb:277:in 'block in Dependabot::Updater::Operations::UpdateAllVersions#_on_method_added'
2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/dependabot-updater/lib/dependabot/updater/operations/update_all_versions.rb:59:in 'block in Dependabot::Updater::Operations::UpdateAllVersions#perform'
updater | 2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/dependabot-updater/lib/dependabot/updater/operations/update_all_versions.rb:59:in 'Array#each'
2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/dependabot-updater/lib/dependabot/updater/operations/update_all_versions.rb:59:in 'Dependabot::Updater::Operations::UpdateAllVersions#perform'
2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/dependabot-updater/vendor/ruby/3.4.0/gems/sorbet-runtime-0.5.11952/lib/types/private/methods/call_validation.rb:282:in 'UnboundMethod#bind_call'
updater | 2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/dependabot-updater/vendor/ruby/3.4.0/gems/sorbet-runtime-0.5.11952/lib/types/private/methods/call_validation.rb:282:in 'T::Private::Methods::CallValidation.validate_call'
2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/dependabot-updater/vendor/ruby/3.4.0/gems/sorbet-runtime-0.5.11952/lib/types/private/methods/_methods.rb:277:in 'block in Dependabot::Updater::Operations::UpdateAllVersions#_on_method_added'
updater | 2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/dependabot-updater/lib/dependabot/updater/operations/group_update_all_versions.rb:137:in 'block in Dependabot::Updater::Operations::GroupUpdateAllVersions#run_ungrouped_dependency_updates'
2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/dependabot-updater/lib/dependabot/updater/operations/group_update_all_versions.rb:122:in 'Array#each'
updater | 2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/dependabot-updater/lib/dependabot/updater/operations/group_update_all_versions.rb:122:in 'Dependabot::Updater::Operations::GroupUpdateAllVersions#run_ungrouped_dependency_updates'
2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/dependabot-updater/vendor/ruby/3.4.0/gems/sorbet-runtime-0.5.11952/lib/types/private/methods/call_validation.rb:282:in 'UnboundMethod#bind_call'
2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/dependabot-updater/vendor/ruby/3.4.0/gems/sorbet-runtime-0.5.11952/lib/types/private/methods/call_validation.rb:282:in 'T::Private::Methods::CallValidation.validate_call'
updater | 2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/dependabot-updater/vendor/ruby/3.4.0/gems/sorbet-runtime-0.5.11952/lib/types/private/methods/_methods.rb:277:in 'block in Dependabot::Updater::Operations::GroupUpdateAllVersions#_on_method_added'
2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/dependabot-updater/lib/dependabot/updater/operations/group_update_all_versions.rb:65:in 'Dependabot::Updater::Operations::GroupUpdateAllVersions#perform'
updater | 2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/dependabot-updater/vendor/ruby/3.4.0/gems/sorbet-runtime-0.5.11952/lib/types/private/methods/call_validation.rb:282:in 'UnboundMethod#bind_call'
2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/dependabot-updater/vendor/ruby/3.4.0/gems/sorbet-runtime-0.5.11952/lib/types/private/methods/call_validation.rb:282:in 'T::Private::Methods::CallValidation.validate_call'
2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/dependabot-updater/vendor/ruby/3.4.0/gems/sorbet-runtime-0.5.11952/lib/types/private/methods/_methods.rb:277:in 'block in Dependabot::Updater::Operations::GroupUpdateAllVersions#_on_method_added'
updater | 2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/dependabot-updater/lib/dependabot/updater.rb:45:in 'Dependabot::Updater#run'
2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/dependabot-updater/lib/dependabot/update_files_command.rb:45:in 'block in Dependabot::UpdateFilesCommand#perform_job'
2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/dependabot-updater/vendor/ruby/3.4.0/gems/opentelemetry-api-1.5.0/lib/opentelemetry/trace/tracer.rb:37:in 'block in OpenTelemetry::Trace::Tracer#in_span'
updater | 2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/dependabot-updater/vendor/ruby/3.4.0/gems/opentelemetry-api-1.5.0/lib/opentelemetry/trace.rb:70:in 'block in OpenTelemetry::Trace#with_span'
2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/dependabot-updater/vendor/ruby/3.4.0/gems/opentelemetry-api-1.5.0/lib/opentelemetry/context.rb:88:in 'OpenTelemetry::Context.with_value'
updater | 2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/dependabot-updater/vendor/ruby/3.4.0/gems/opentelemetry-api-1.5.0/lib/opentelemetry/trace.rb:70:in 'OpenTelemetry::Trace#with_span'
2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/dependabot-updater/vendor/ruby/3.4.0/gems/opentelemetry-api-1.5.0/lib/opentelemetry/trace/tracer.rb:37:in 'OpenTelemetry::Trace::Tracer#in_span'
updater | 2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/dependabot-updater/lib/dependabot/update_files_command.rb:18:in 'Dependabot::UpdateFilesCommand#perform_job'
2025/08/05 17:19:26 ERROR <job_317046> /home/dependabot/dependabot-updater/lib/dependabot/base_command.rb:37:in 'Dependabot::BaseCommand#run'
updater | 2025/08/05 17:19:26 ERROR <job_317046> bin/update_files.rb:44:in '<main>'

Native package manager behavior

terraform init is fine with this syntax:

$ terraform init
Initializing the backend...
Initializing modules...
Downloading registry.terraform.io/terraform-aws-modules/vpc/aws 5.5.1 for vpc...
- vpc in .terraform/modules/vpc
Initializing provider plugins...
- Finding hashicorp/aws versions matching "~> 5.0, >= 5.20.0"...
- Installing hashicorp/aws v5.100.0...
- Installed hashicorp/aws v5.100.0 (signed by HashiCorp)
Terraform has created a lock file .terraform.lock.hcl to record the provider
selections it made above. Include this file in your version control repository
so that Terraform can guarantee to make the same selections by default when
you run "terraform init" in the future.

Terraform has been successfully initialized!

You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.

If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.

Images of the diff or a link to the PR, issue, or logs

No response

Smallest manifest that reproduces the issue

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    Status

    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions