Files
2026-09-22 08:57:00 -04:00

85 lines
2.2 KiB
Terraform

# Verifies the CodeArtifact control plane: domain/repository CRUD, tags, upstream repositories,
# and resource policies, all of which previously had no Floci support at all.
resource "aws_codeartifact_domain" "test" {
domain = "floci-codeartifact-domain"
tags = {
owner = "platform"
}
}
data "aws_iam_policy_document" "domain_policy" {
statement {
effect = "Allow"
actions = ["codeartifact:GetDomainPermissions"]
resources = [aws_codeartifact_domain.test.arn]
principals {
type = "AWS"
identifiers = ["*"]
}
}
}
resource "aws_codeartifact_domain_permissions_policy" "test" {
domain = aws_codeartifact_domain.test.domain
policy_document = data.aws_iam_policy_document.domain_policy.json
}
resource "aws_codeartifact_repository" "store" {
domain = aws_codeartifact_domain.test.domain
repository = "floci-codeartifact-store"
}
resource "aws_codeartifact_repository" "consumer" {
domain = aws_codeartifact_domain.test.domain
repository = "floci-codeartifact-consumer"
description = "consumes packages via the store repository"
upstream {
repository_name = aws_codeartifact_repository.store.repository
}
tags = {
team = "data"
}
}
data "aws_iam_policy_document" "repository_policy" {
statement {
effect = "Allow"
actions = ["codeartifact:ReadFromRepository"]
resources = [aws_codeartifact_repository.consumer.arn]
principals {
type = "AWS"
identifiers = ["*"]
}
}
}
resource "aws_codeartifact_repository_permissions_policy" "test" {
domain = aws_codeartifact_domain.test.domain
repository = aws_codeartifact_repository.consumer.repository
policy_document = data.aws_iam_policy_document.repository_policy.json
}
output "domain_arn" {
value = aws_codeartifact_domain.test.arn
}
output "domain_owner_tag" {
value = aws_codeartifact_domain.test.tags["owner"]
}
output "repository_arn" {
value = aws_codeartifact_repository.consumer.arn
}
output "repository_upstream" {
value = aws_codeartifact_repository.consumer.upstream[0].repository_name
}
output "repository_team_tag" {
value = aws_codeartifact_repository.consumer.tags["team"]
}