Skip to content

Commit 127aa0e

Browse files
committed
Add output bucket to store check links reports
1 parent 4001f32 commit 127aa0e

2 files changed

Lines changed: 85 additions & 2 deletions

File tree

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
data "aws_iam_policy_document" "s3_fastly_read_policy_doc_ckan_output" {
2+
statement {
3+
sid = "S3FastlyReadBucket"
4+
actions = ["s3:GetObject"]
5+
resources = [
6+
"arn:aws:s3:::${aws_s3_bucket.ckan-output.id}",
7+
"arn:aws:s3:::${aws_s3_bucket.ckan-output.id}/*",
8+
]
9+
condition {
10+
test = "IpAddress"
11+
variable = "aws:SourceIp"
12+
values = data.fastly_ip_ranges.fastly.cidr_blocks
13+
}
14+
principals {
15+
type = "AWS"
16+
identifiers = ["*"]
17+
}
18+
}
19+
}
20+
21+
resource "aws_s3_bucket" "ckan-output" {
22+
bucket = "datagovuk-${var.govuk_environment}-ckan-output"
23+
tags = { Name = "datagovuk-${var.govuk_environment}-ckan-output" }
24+
}
25+
26+
resource "aws_s3_bucket_versioning" "ckan_output" {
27+
28+
bucket = aws_s3_bucket.ckan-output.id
29+
versioning_configuration { status = "Enabled" }
30+
}
31+
32+
resource "aws_s3_bucket_logging" "ckan_output" {
33+
count = startswith(var.govuk_environment, "eph-") ? 0 : 1
34+
35+
bucket = aws_s3_bucket.ckan-output.id
36+
target_bucket = "govuk-${var.govuk_environment}-aws-logging"
37+
target_prefix = "s3/datagovuk-${var.govuk_environment}-ckan-output/"
38+
}
39+
40+
resource "aws_s3_bucket_cors_configuration" "ckan_output" {
41+
bucket = aws_s3_bucket.ckan-output.id
42+
cors_rule {
43+
allowed_methods = ["GET"]
44+
allowed_origins = var.output_bucket_cors_origins
45+
}
46+
}
47+
48+
resource "aws_s3_bucket_policy" "govuk_ckan_output_read_policy" {
49+
bucket = aws_s3_bucket.ckan-output.id
50+
policy = data.aws_iam_policy_document.s3_fastly_read_policy_doc.json
51+
}
52+
53+
resource "aws_s3_bucket_public_access_block" "ckan_output" {
54+
bucket = aws_s3_bucket.ckan-output.id
55+
56+
block_public_acls = false
57+
block_public_policy = false
58+
ignore_public_acls = false
59+
restrict_public_buckets = false
60+
}
61+
62+
resource "aws_s3_bucket_ownership_controls" "ckan_output" {
63+
bucket = aws_s3_bucket.ckan-output.id
64+
65+
rule {
66+
object_ownership = "ObjectWriter"
67+
}
68+
}

terraform/deployments/datagovuk-infrastructure/variables.tf

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,23 @@ variable "organogram_bucket_cors_origins" {
2828
"https://www.integration.data.gov.uk",
2929
"https://find.eks.production.govuk.digital",
3030
"https://find.eks.integration.govuk.digital",
31-
"https://find.eks.staging.govuk.digital",
32-
"https://find.eph-aaa113.ephemeral.govuk.digital"
31+
"https://find.eks.staging.govuk.digital"
32+
]
33+
}
34+
35+
variable "output_bucket_cors_origins" {
36+
type = list(string)
37+
description = "List of allowed origins for CORS for output bucket"
38+
default = [
39+
"https://data.gov.uk",
40+
"https://www.data.gov.uk",
41+
"https://staging.data.gov.uk",
42+
"https://www.staging.data.gov.uk",
43+
"https://integration.data.gov.uk",
44+
"https://www.integration.data.gov.uk",
45+
"https://find.eks.production.govuk.digital",
46+
"https://find.eks.integration.govuk.digital",
47+
"https://find.eks.staging.govuk.digital"
3348
]
3449
}
3550

0 commit comments

Comments
 (0)