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

使用Terraform部署AWS CodePipeline时遇区域不支持错误求助

CodePipeline部署错误排查与修复

错误原因

触发InvalidActionDeclarationException的核心原因是:你当前使用的GitHub源动作类型(Category: 'Source', Provider: 'Github', Owner: 'ThirdParty', Version: '1')在us-east-1区域已被AWS弃用,旧的第三方GitHub集成方案不再被支持。

修复步骤

1. 替换Source阶段的动作配置

将CodePipeline中Source阶段的action块参数替换为AWS官方维护的GitHub源类型:

  • owner改为AWS
  • provider改为GitHub(注意首字母大写)
  • version改为2
  • 配置项改用ConnectionArn(需提前在AWS控制台创建GitHub连接,这是官方推荐的安全集成方式)

2. 修正CodeBuild项目名称引用

你的CodePipeline Build阶段中ProjectName硬编码为xxxx,但实际CodeBuild项目名称是xxxx-project,需修正为引用CodeBuild资源的name属性,避免后续构建失败。

修改后的完整代码块

resource "aws_codebuild_project" "xxxx_build" {
  name          = "xxxx-project"
  service_role  = aws_iam_role.iam_for_codebuild.arn

  source {
    type     = "GITHUB"
    location = "https://github.com/oihuegbu/terraformproject.git"
  }

  environment {
    compute_type = "BUILD_GENERAL1_SMALL"
    image        = "aws/codebuild/amazonlinux-x86_64-standard:5.0"
    type         = "LINUX_CONTAINER"
  }

  artifacts {
    type = "NO_ARTIFACTS"
  }
}

resource "aws_codepipeline" "codepipeline" {
  name     = "xxxx-pipeline"
  role_arn = aws_iam_role.iam_for_codepipeline.arn

  artifact_store {
    location = aws_s3_bucket.codepipeline_bucket.bucket
    type     = "S3"
  }

  stage {
    name = "Source"
    action {
      name             = "GitHubSource"
      category         = "Source"
      owner            = "AWS"
      provider         = "GitHub"
      output_artifacts = ["SourceOutput"]
      version          = "2"

      configuration = {
        Owner          = "oihuegbu"
        Repo           = "terraformproject"
        Branch         = "main"
        ConnectionArn  = aws_codestarconnections_connection.github_connection.arn # 需提前创建GitHub连接
      }
    }
  }

  stage {
    name = "Build"
    action {
      name             = "Build"
      category         = "Build"
      owner            = "AWS"
      provider         = "CodeBuild"
      input_artifacts  = ["SourceOutput"]
      output_artifacts = ["build_output"]
      version          = "1"

      configuration = {
        ProjectName = aws_codebuild_project.xxxx_build.name # 引用CodeBuild项目名称,避免硬编码
      }
    }
  }
}

补充说明

如果暂时无法创建AWS CodeStar Connections连接,也可以继续使用OAuth方式,但需注意:

  • 对于Version 2的GitHub源,OAuthToken仍可放在configuration中,但需确保CodePipeline的IAM角色拥有对应的权限,不过官方强烈推荐使用连接方式以提升安全性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 15:03:21