0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

CodeArtifactのリポジトリをTerraformでサクッと作成する

Last updated at Posted at 2020-10-03

はじめに

CodeArtifact記事第2弾。第1弾はこちら
フルマネージドなローカルリポジトリ。セキュアにローカルリポジトリを運営するのが楽になるので、Java開発をしている人には大変助かる。

2020/10/2のAWSプロバイダ3.9.0でようやくTerraformでも対応されたので、さっそく作ってみよう。

IaC

と言っても、特に難しいことはない。
マニュアルに書かれたとおりに実装していけば良いだけだ。
KMS、ドメイン、リポジトリを作れば良い。
追加でドメインポリシを指定したいのであれば aws_codeartifact_domain_permissions_policy を設定しよう。aws_codeartifact_domain_permissions_policypolicy_document は、ヒアドキュメントでも aws_iam_policy_document リソースを使っても良い。

################################################################################
# CodeArtifact                                                                 #
################################################################################
resource "aws_kms_key" "codeartifact" {
  description = "CodeArtifactテスト用キー"
}

resource "aws_codeartifact_domain" "test" {
  domain         = local.codeartifact_domain_name
  encryption_key = aws_kms_key.codeartifact.arn
}

resource "aws_codeartifact_repository" "test" {
  repository  = local.codeartifact_domain_repository
  domain      = aws_codeartifact_domain.test.domain
  description = "CodeArtifactテスト用リポジトリ"
}

resource "aws_codeartifact_domain_permissions_policy" "test" {
  domain          = aws_codeartifact_domain.test.domain
  policy_document = data.aws_iam_policy_document.codeartifact.json
}

data "aws_iam_policy_document" "codeartifact" {
  statement {
    effect = "Allow"

    actions = [
      "codeartifact:CreateRepository",
    ]

    principals {
      type = "AWS"

      identifiers = [
        "arn:aws:iam::${data.aws_caller_identity.self.account_id}:root",
      ]
    }

    resources = [
      aws_codeartifact_domain.test.arn,
    ]
  }
}

これでサクッとローカルリポジトリを作って管理できるようになったぞ!

でももうCodeArtifactのリポジトリ手動で作っちゃったよ…

という人も多いと思う。
そこで、今後のことを考えてTerraformにインポートをしておこう。

インポートしたいTerraformのワークスペース(tfstateがある場所)で上記のHCLを作ったら、

$ terraform import aws_kms_key.codeartifact [KMSのキーID]
$ terraform import aws_codeartifact_domain.test  [CodeArtifactドメインのARN]
$ terraform import aws_codeartifact_repository.test  [CodeArtifactリポジトリのARN]

でインポートして、あとは terraform plan で差分がなくなるまでパラメータを調整しよう。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?