Skip to content

Commit 1b534da

Browse files
committed
signage-app: roll
1 parent 1845ed8 commit 1b534da

5 files changed

Lines changed: 149 additions & 65 deletions

File tree

tf/signage-app/.mairu.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"server": "https://amc.rubykaigi.net/api/remote/",
3+
"role": "arn:aws:iam::005216166247:role/OrgzAdmin"
4+
}

tf/signage-app/.terraform.lock.hcl

Lines changed: 55 additions & 55 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tf/signage-app/dev.tf

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ module "dev" {
2121
cloudfront_log_prefix = "cf/signage-dev.rubykaigi.org/"
2222

2323
manage_config_in_s3 = false
24+
25+
ssm_parameter_path_prefix = "/signage/dev/"
2426
}
2527

2628
resource "aws_route53_record" "dev" {

tf/signage-app/prd.tf

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
locals {
2+
captioner_enabled = true
3+
}
14
module "prd" {
25
source = "github.com/ruby-no-kai/signage-app//tf"
36
#source = "/home/sorah/git/github.com/ruby-no-kai/signage-app/tf"
@@ -20,7 +23,7 @@ module "prd" {
2023

2124
github_actions_subs = ["repo:ruby-no-kai/signage-app:environment:prd"]
2225

23-
captioner_enabled = false
26+
captioner_enabled = local.captioner_enabled
2427
captioner_params = {
2528
vpc_id = data.aws_vpc.main.id
2629
ec2_security_group_ids = [data.aws_security_group.default.id, aws_security_group.captioner.id]
@@ -29,7 +32,8 @@ module "prd" {
2932
medialive_subnet_id_1 = data.aws_subnet.main-public-c.id
3033
medialive_subnet_id_2 = data.aws_subnet.main-public-d.id
3134
medialive_security_group_ids = [data.aws_security_group.default.id, aws_security_group.medialive.id]
32-
medialive_role_arn = data.aws_iam_role.MediaLiveAccessRole.arn
35+
medialive_s3_bucket = aws_s3_bucket.live.bucket
36+
medialive_s3_prefix = "rk25/"
3337
ssh_import_ids = jsondecode(file("${path.module}/../../data/ssh_import_ids.json"))
3438
}
3539
captioner_channels = {
@@ -48,6 +52,8 @@ module "prd" {
4852
}
4953

5054
callback_urls = toset([])
55+
56+
ssm_parameter_path_prefix = "/signage/prd/"
5157
}
5258

5359
resource "aws_route53_record" "prd" {
@@ -65,7 +71,7 @@ resource "aws_route53_record" "prd" {
6571

6672
resource "random_pet" "prd-stream-key" {
6773
keepers = {
68-
doggo = "doggo"
74+
doggo = "rk25"
6975
}
7076
}
7177

@@ -76,14 +82,24 @@ resource "random_id" "prd_client_secret" {
7682
# value = random_id.dev_client_secret.id
7783
#}
7884

79-
resource "aws_route53_record" "prd-captioner" {
80-
for_each = { for zone in local.rubykaigi_net_zones : zone => module.prd.captioner_ip_address if module.prd.captioner_ip_address != null }
81-
zone_id = each.key
82-
name = "captioner.apne1.rubykaigi.net."
83-
type = "A"
84-
ttl = 60
85+
resource "aws_route53_record" "prd-captioner-public" {
86+
count = local.captioner_enabled ? 1 : 0
87+
zone_id = data.aws_route53_zone.rubykaigi-net_public.zone_id
88+
name = "captioner.apne1.rubykaigi.net."
89+
type = "A"
90+
ttl = 60
91+
records = [
92+
module.prd.captioner_ip_address,
93+
]
94+
}
95+
resource "aws_route53_record" "prd-captioner-private" {
96+
count = local.captioner_enabled ? 1 : 0
97+
zone_id = data.aws_route53_zone.rubykaigi-net_private.zone_id
98+
name = "captioner.apne1.rubykaigi.net."
99+
type = "A"
100+
ttl = 60
85101
records = [
86-
each.value,
102+
module.prd.captioner_ip_address,
87103
]
88104
}
89105

tf/signage-app/s3.tf

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
resource "aws_s3_bucket" "live" {
2+
bucket = "rk-live-video"
3+
}
4+
5+
resource "aws_s3_bucket_public_access_block" "live" {
6+
bucket = aws_s3_bucket.live.id
7+
8+
block_public_acls = false
9+
block_public_policy = false
10+
ignore_public_acls = false
11+
restrict_public_buckets = false
12+
}
13+
14+
data "aws_iam_policy_document" "live" {
15+
statement {
16+
effect = "Allow"
17+
actions = ["s3:GetObject"]
18+
resources = [
19+
"${aws_s3_bucket.live.arn}/*/live/*",
20+
]
21+
principals {
22+
type = "AWS"
23+
identifiers = [
24+
"*",
25+
]
26+
}
27+
}
28+
}
29+
30+
resource "aws_s3_bucket_policy" "live" {
31+
bucket = aws_s3_bucket.live.id
32+
policy = data.aws_iam_policy_document.live.json
33+
34+
depends_on = [aws_s3_bucket_public_access_block.live]
35+
}
36+
37+
resource "aws_s3_bucket_versioning" "live" {
38+
bucket = aws_s3_bucket.live.id
39+
versioning_configuration {
40+
status = "Enabled"
41+
}
42+
}
43+
44+
resource "aws_s3_bucket_lifecycle_configuration" "live" {
45+
bucket = aws_s3_bucket.live.id
46+
47+
transition_default_minimum_object_size = "all_storage_classes_128K"
48+
49+
rule {
50+
id = "config"
51+
status = "Enabled"
52+
53+
filter {
54+
}
55+
56+
noncurrent_version_expiration {
57+
noncurrent_days = 7
58+
}
59+
}
60+
61+
depends_on = [aws_s3_bucket_versioning.live]
62+
}

0 commit comments

Comments
 (0)