CodePipeline과 CodeCommit을 크로스 계정으로 실행하는 환경을 일격으로 배포해 보았습니다.

경위



CodeCommit을 하나의 AWS 계정에 모으고, CI/CD는 각 시스템마다 AWS 계정의 CodePipeline에서 실시하고 싶다는 목소리를 여러 번 받고, 매번 수작업으로 구축하고 있었지만, 그 반복 작업에 대해 무삭제해버려 일격 에서 배포 할 수있는 Terraform 코드를 작성했습니다.

이번에는 '필요 최소 권한'에 따라 몇번이나 시행착오를 하고 생긴 성과물이 된다.
특히 크로스 계정, IAM, 리소스 정책이 다수 등장하는 것도 있어 "이번에는 시간이 없으니 권한을 느슨하게 만들어 나중에 시간이 생겼을 때 제대로 하자"는 사람을 지금까지 많이 봤다.

단언하자.
그런 미지근한 말하는 녀석에게 제대로 하는 시간 등 평생 오지 않는 것이다!

그리고 지금은 아니기 때문에 미래에도 시간이 없습니다.

지금 이것을 만들 때, 즉 이것을 보고 있을 때가 제일 시간이 있을 때이다!

CodePipeline은 AWS의 권한 주위의 지식 제로로 보통으로 구그하는 것만으로는 제대로 만드는 것은 매우 어렵다.

전치가 길어졌지만, 이하의 일을 하는 것만으로 크로스 계정 CodePipeline의 Hello World가 완성된다.

이것을 사용해 나머지는 스스로 커스터마이즈 해 주었으면 한다. 건투를 기도한다.

이번 만드는 환경





아티팩트



이쪽을 봐
GitHub

사용법



1. aws.tf 재작성

README와 같지만 aws.tf에서 IAM 롤을 다시 작성하면 됩니다.
> vim aws.tf
provider "aws" {
  alias = "account-a"
  assume_role {
    role_arn = "xxx"  // ←ここにCodeCommitを作りたいAWSアカウントに対してのAssumeRoleできるIAMロールのARN
  }
}

provider "aws" {
  alias = "account-b"
  assume_role {
    role_arn = "xxx"  // ←ここにCodePipelineを作りたいAWSアカウントに対してのAssumeRoleできるIAMロールのARN
  }
}
...

2. terraform apply 실행
terraform apply

요약



Terraform이 아니고, 수작업으로 만들고 싶은 사람도 이것을 보면, 무엇을 만들 필요가 있는지, 어떤 권한이 필요한 것인가?
라는 것을 아는 힌트가 된다고 생각한다.
이것만이라면 정보가 부족하다고 하는 경우는 코멘트 받을 수 있다고 추기하려고 생각하므로, 부담없이 부탁합니다!

좋은 웹페이지 즐겨찾기