You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Terragrunt访问公开S3模块源时触发HTTPS转s3协议凭证错误

解决Terragrunt自动将HTTPS S3 URL转为s3::https协议导致的无凭证下载失败问题

我使用第三方公开S3桶中的Terraform模块,该模块可通过HTTPS直接访问,用curl或wget无需凭证就能正常下载。但使用Terragrunt时,模块的HTTPS URL被自动解析为s3::https协议,由于我通过AWS SSO操作(未导出AWS_ACCESS_KEY_ID等环境变量,也无~/.aws/credentials凭证文件),导致下载失败。

我的Terragrunt配置代码

terraform {
  source = "https://s3-us-east-2.amazonaws.com/wizio-public/deployment-v2/aws/wiz-aws-cloud-events-terraform-module.zip"
}

inputs = {
  integration_type      = <redacted_value>
  cloudtrail_bucket_arn = <redacted_value>
  cloudtrail_kms_arn    = <redacted_value>
  wiz_access_role_arn   = <redacted_value>
}

执行plan命令时的报错信息

INFO[0000] Downloading Terraform configurations from s3::https://s3-us-east-2.amazonaws.com/wizio-public/deployment-v2/aws/wiz-aws-cloud-events-terraform-module.zip into /Users/marco/.terragrunt-cache/bj1DtPSzfD2L7xtoscLsClD9TJ4/J5rSBBFtvLMrstC7CVu_4ibhzvo
ERRO[0005] downloading source url s3::https://s3-us-east-2.amazonaws.com/wizio-public/deployment-v2/aws/wiz-aws-cloud-events-terraform-module.zip
1 error occurred:
    * NoCredentialProviders: no valid providers in chain
caused by: EnvAccessKeyNotFound: AWS_ACCESS_KEY_ID or AWS_ACCESS_KEY not found in environment
SharedCredsAccessKey: shared credentials ... in /Users/marco/.aws/credentials did not contain aws_access_key_id
EC2RoleRequestError: no EC2 instance role found
caused by: RequestError: send request failed

解决方案

Terragrunt默认会识别S3域名并自动切换到s3协议处理,要强制用HTTPS下载,有两种可行方法:

方法1:给URL添加查询参数绕过S3协议识别

在HTTPS URL末尾添加任意无效查询参数(比如?force-https),让Terragrunt无法识别为S3路径,从而使用普通HTTPS协议下载:

terraform {
  source = "https://s3-us-east-2.amazonaws.com/wizio-public/deployment-v2/aws/wiz-aws-cloud-events-terraform-module.zip?force-https"
}

方法2:启用skip_aws_provider配置

在Terragrunt配置中添加skip_aws_provider = true,禁用Terragrunt的AWS相关自动处理逻辑,强制使用HTTPS下载模块:

terraform {
  source = "https://s3-us-east-2.amazonaws.com/wizio-public/deployment-v2/aws/wiz-aws-cloud-events-terraform-module.zip"
}

skip_aws_provider = true

inputs = {
  integration_type      = <redacted_value>
  cloudtrail_bucket_arn = <redacted_value>
  cloudtrail_kms_arn    = <redacted_value>
  wiz_access_role_arn   = <redacted_value>
}

当前环境信息

  • Terragrunt版本:0.58.3
  • Terraform版本:1.5.7
  • 操作系统:OSX darwin_arm64

内容的提问来源于stack exchange,提问作者Marco Caberletti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 01:36:10