본문 바로가기

개발하자

다른 지역에 Terraform 코드 파이프라인 배포

반응형

다른 지역에 Terraform 코드 파이프라인 배포

저는 새로 출시된 지역(자카르타)에 서비스를 배치하려고 합니다. 하지만 Codepipeline을 사용할 수 없는 것 같아 가까운 지역(싱가포르)에 Codepipeline을 만들어 자카르타 지역에 배치해야 합니다. 또한 테라폼에 코드파이프라인을 설치하는 것도 처음이라 제대로 하는지 잘 모르겠어요.

추신. 이 모든 인프라의 기본 지역은 "자카르타" 지역입니다. 배포 부품이 없는 상태에서 문제가 발생하므로 배포 부품은 제외합니다.

resource "aws_codepipeline" "pipeline" {
  name     = local.service_name
  role_arn = var.codepipeline_role_arn

  artifact_store {
    type     = "S3"
    region   = var.codepipeline_region
    location = var.codepipeline_artifact_bucket_name
  }

  stage {
    name = "Source"

    action {
      name             = "Source"
      category         = "Source"
      owner            = "AWS"
      provider         = "CodeStarSourceConnection"
      version          = "1"
      output_artifacts = ["SourceArtifact"]
      region           = var.codepipeline_region

      configuration = {
        ConnectionArn        = var.codestar_connection
        FullRepositoryId     = "${var.team_name}/${local.repo_name}"
        BranchName           = local.repo_branch
        OutputArtifactFormat = "CODEBUILD_CLONE_REF" // NOTE: Full clone
      }
    }
  }

  stage {
    name = "Build"

    action {
      name             = "Build"
      category         = "Build"
      owner            = "AWS"
      provider         = "CodeBuild"
      version          = "1"
      input_artifacts  = ["SourceArtifact"]
      output_artifacts = ["BuildArtifact"]
      run_order        = 1
      region           = var.codepipeline_region

      configuration = {
        "ProjectName" = local.service_name
      }
    }
  }

  tags = {
    Name        = "${local.service_name}-pipeline"
    Environment = local.env
  }
}

위는 제가 만든 Terraform 구성인데 다음과 같은 오류가 나타납니다:

│ Error: region cannot be set for a single-region CodePipeline

루트 블록에서 영역을 제거하려고 하면 테라폼이 기본 영역인 자카르타 영역에 액세스하려고 합니다(그리고 자카르타에서 코드 파이프라인을 사용할 수 없기 때문에 실패합니다).

│ Error: Error creating CodePipeline: RequestError: send request failed
│ caused by: Post "https://codepipeline.ap-southeast-3.amazonaws.com/": dial tcp: lookup codepipeline.ap-southeast-3.amazonaws.com on 103.86.96.100:53: no such host



다른 지역의 공급자를 설정해야 합니다. 예를 들어:

provider "aws" {  
    alias  = "singapore"  
    region = "ap-southeast-1"
}

그런 다음 별칭을 사용하여 해당 지역에 파이프라인을 배포합니다:

resource "aws_codepipeline" "pipeline" {
 
  provider = aws.singapore

  name     = local.service_name
  role_arn = var.codepipeline_role_arn

  # ...
}



이 오류가 발생합니다. 오류: 단일 지역 코드 파이프라인에 대해 지역을 설정할 수 없습니다

단일 영역 파이프라인을 생성하려는 경우 이 오류 상태를 제공할 수 없습니다. 따라서 코드 파이프라인 리소스 블록의 articipal_store 인수에서 영역을 제거하십시오. 이렇게 하면 문제가 해결됩니다.


반응형