85 lines
2.2 KiB
Terraform
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"]
|
|
}
|