diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 2cb6cc4..84d7893 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -34,7 +34,7 @@ Node.js(TypeScript), Crystal, Scala は参考実装が残っていますが、OS
│ ├── ami # PackerでAMIの作成 (手動)
│ ├── benchmarker # ベンチマーカーの実装
├── contest # コンテストのイベント実施用のリソース
-│ ├── portal # コンテスト用ポータルサイトの実装. Terraformから参照されてS3にアップロードされる
+│ ├── scoreboard # コンテスト用スコアボードの実装. Terraformから参照されてS3にアップロードされる
│ └── terraform # コンテスト用のインフラリソース準備
├── doc # 参加者向けのドキュメント
├── docker # ローカルでISHOCONに取り組む & CIで使う用のDocker Image
diff --git a/README.md b/README.md
index ea9a525..6c4c186 100644
--- a/README.md
+++ b/README.md
@@ -17,7 +17,7 @@ ISUCONは3人チームで取り組むことを基準に課題が作られてい
## 問題詳細
* マニュアル: [ISHOCON1マニュアル](https://github.com/showwin/ISHOCON1/blob/master/doc/manual.md)
-* AMI: `ami-073e32684d5ff32c8`
+* AMI: `ami-04241d5ce3f2f0a79`
* インスタンスタイプ: `c7i.xlarge`
* 参考実装言語: Ruby, Go, Python
* メンテナンス外: Node.js(TypeScript), Crystal(by [@Goryudyuma](https://github.com/Goryudyuma)), Scala(by [@Goryudyuma](https://github.com/Goryudyuma))
diff --git a/admin/benchmarker/scenario.go b/admin/benchmarker/scenario.go
index 22df3d0..1fe2b72 100644
--- a/admin/benchmarker/scenario.go
+++ b/admin/benchmarker/scenario.go
@@ -168,7 +168,7 @@ func showScore() {
}
func postScore() {
- apiURL := os.Getenv("BENCH_PORTAL_APIGW_URL")
+ apiURL := os.Getenv("BENCH_SCOREBOARD_APIGW_URL")
teamName := os.Getenv("BENCH_TEAM_NAME")
if apiURL == "" && teamName == "" {
return
@@ -218,5 +218,5 @@ func postScore() {
return
}
defer resp.Body.Close()
- log.Print("Sent score to portal site")
+ log.Print("Sent score to scoreboard")
}
diff --git a/contest/portal/.gitignore b/contest/scoreboard/.gitignore
similarity index 100%
rename from contest/portal/.gitignore
rename to contest/scoreboard/.gitignore
diff --git a/contest/portal/README.md b/contest/scoreboard/README.md
similarity index 100%
rename from contest/portal/README.md
rename to contest/scoreboard/README.md
diff --git a/contest/portal/dist/main.js b/contest/scoreboard/dist/main.js
similarity index 98%
rename from contest/portal/dist/main.js
rename to contest/scoreboard/dist/main.js
index 211177d..9b858ed 100644
--- a/contest/portal/dist/main.js
+++ b/contest/scoreboard/dist/main.js
@@ -186,5 +186,5 @@ function updateGraph() {
}
// Initial graph rendering
updateGraph();
-// Fetch and refresh the graph every 3 minutes (180,000 ms)
-setInterval(updateGraph, 180000);
+// Fetch and refresh the graph every 30 seconds (30,000 ms)
+setInterval(updateGraph, 30000);
diff --git a/contest/portal/index.html b/contest/scoreboard/index.html
similarity index 94%
rename from contest/portal/index.html
rename to contest/scoreboard/index.html
index 35d3818..18bf51f 100644
--- a/contest/portal/index.html
+++ b/contest/scoreboard/index.html
@@ -3,7 +3,7 @@
- Score Portal
+ Scoreboard
- ISHOCON1 Score Portal
+ ISHOCON1 Scoreboard
diff --git a/contest/portal/package-lock.json b/contest/scoreboard/package-lock.json
similarity index 99%
rename from contest/portal/package-lock.json
rename to contest/scoreboard/package-lock.json
index f44ab1e..169acfd 100644
--- a/contest/portal/package-lock.json
+++ b/contest/scoreboard/package-lock.json
@@ -1,11 +1,11 @@
{
- "name": "ISHOCON1-portal",
+ "name": "ISHOCON1-scoreboard",
"version": "1.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
- "name": "ISHOCON1-portal",
+ "name": "ISHOCON1-scoreboard",
"version": "1.0.0",
"dependencies": {
"d3": "^7.9.0"
diff --git a/contest/portal/package.json b/contest/scoreboard/package.json
similarity index 74%
rename from contest/portal/package.json
rename to contest/scoreboard/package.json
index 7a79ef3..9f6c3c5 100644
--- a/contest/portal/package.json
+++ b/contest/scoreboard/package.json
@@ -1,7 +1,7 @@
{
- "name": "ISHOCON1-portal",
+ "name": "ISHOCON1-scoreboard",
"version": "1.0.0",
- "description": "ISHOCON1 Portal",
+ "description": "ISHOCON1 Scoreboard",
"main": "dist/main.js",
"scripts": {
"build": "tsc"
diff --git a/contest/portal/screenshot.png b/contest/scoreboard/screenshot.png
similarity index 100%
rename from contest/portal/screenshot.png
rename to contest/scoreboard/screenshot.png
diff --git a/contest/portal/src/main.ts b/contest/scoreboard/src/main.ts
similarity index 98%
rename from contest/portal/src/main.ts
rename to contest/scoreboard/src/main.ts
index de3f9bc..1d7eb59 100644
--- a/contest/portal/src/main.ts
+++ b/contest/scoreboard/src/main.ts
@@ -215,5 +215,5 @@ function updateGraph() {
// Initial graph rendering
updateGraph();
-// Fetch and refresh the graph every 3 minutes (180,000 ms)
-setInterval(updateGraph, 180000);
+// Fetch and refresh the graph every 30 seconds (30,000 ms)
+setInterval(updateGraph, 30000);
diff --git a/contest/portal/tsconfig.json b/contest/scoreboard/tsconfig.json
similarity index 100%
rename from contest/portal/tsconfig.json
rename to contest/scoreboard/tsconfig.json
diff --git a/contest/terraform/README.md b/contest/terraform/README.md
index 6646fa3..3d6bfd7 100644
--- a/contest/terraform/README.md
+++ b/contest/terraform/README.md
@@ -7,12 +7,12 @@ TerraformでISHOCON1の環境が構築できます。
## 作成されるもの
* チーム毎に1台の競技に使用するEC2インスタンス
-* 各チームのスコアがリアルタイムに見れるポータルサイト
+* 各チームのスコアがリアルタイムに見れるスコアボード
## 必要なもの
- 支払情報が紐付けされたAWSアカウント
- - ポータルサイトは低コストになるように実装していますが、主に以下の費用がかかります。
+ - スコアボードは低コストになるように実装していますが、主に以下の費用がかかります。
- DynamoDB, Lambda, CloudWatch, API Gateway, S3
- IAMユーザのアクセスIDとシークレットアクセスキー
@@ -55,24 +55,33 @@ ip_addr = {
"team1" = "11.111.111.111"
"team2" = "11.111.111.112"
}
-portal_url = "http://ishocon1-portal123456789.s3-website-ap-northeast-1.amazonaws.com"
+scoreboard_url = "http://ishocon1-scoreboard123456789.s3-website-ap-northeast-1.amazonaws.com"
```
-Outputに競技で使用するインスタンスのIPアドレスとポータルサイトのアドレスが出力されるので、参加者に共有する。
+Outputに競技で使用するインスタンスのIPアドレスとスコアボードのアドレスが出力されるので、参加者に共有する。
```
$ ssh ishocon@
```
でインスタンスにSSHできる。
-ベンチマーカーを実行すると、スコアを `apigateway_url` に投稿するようになっており、自動的にポータルサイトに結果が表示される。
+ベンチマーカーを実行すると、スコアを `apigateway_url` に投稿するようになっており、自動的にスコアボードに結果が表示される。
-ポータルサイトに表示されているデータをすべて削除したい場合は以下のコマンドを実行する。
+## スコアボード管理の便利コマンド
```
-$ terraform output -raw apigateway_url | xargs -I {} curl -X "DELETE" "{}teams"
+$ cd terraform/main
+
+$ make close-scoreboard # 競技1時間前などにスコアを非表示にする
+$ make reopen-scoreboard # 非表示にしたスコアボードを再度表示する
+
+$ make freeze-scoreboard # 競技終了後にベンチマーカーを動かしてもスコアボードに反映されないようにする
+$ make unfreeze-scoreboard # スコアボードの凍結を解除し、ベンチマーカーの結果がスコアボードに反映されるようにする
+
+$ make delete-scoreboard-data # [注意] スコアボードに表示されているデータをすべて削除
```
+
## 注意点
- デフォルトでは、ISHOCON1の推奨インスタンスタイプである `c7i.xlarge` でインスタンスが起動します
diff --git a/contest/terraform/main/Makefile b/contest/terraform/main/Makefile
new file mode 100644
index 0000000..3b63145
--- /dev/null
+++ b/contest/terraform/main/Makefile
@@ -0,0 +1,23 @@
+.PHONY: delete-scoreboard-data
+delete-scoreboard-data:
+ terraform output -raw apigateway_url | xargs -I {} curl -X "DELETE" "{}teams"
+
+.PHONY: close-scoreboard
+close-scoreboard:
+ aws apigatewayv2 update-route --api-id `terraform output -raw api_gateway_id` --route-id `terraform output -raw api_gateway_get_route_id` --authorization-type AWS_IAM > /dev/null
+ @echo "Scoreboard is closed."
+
+.PHONY: reopen-scoreboard
+reopen-scoreboard:
+ aws apigatewayv2 update-route --api-id `terraform output -raw api_gateway_id` --route-id `terraform output -raw api_gateway_get_route_id` --authorization-type NONE > /dev/null
+ @echo "Scoreboard is reopened."
+
+.PHONY: freeze-scoreboard
+freeze-scoreboard:
+ aws apigatewayv2 update-route --api-id `terraform output -raw api_gateway_id` --route-id `terraform output -raw api_gateway_put_route_id` --authorization-type AWS_IAM > /dev/null
+ @echo "Scoreboard is freezed."
+
+.PHONY: unfreeze-scoreboard
+unfreeze-scoreboard:
+ aws apigatewayv2 update-route --api-id `terraform output -raw api_gateway_id` --route-id `terraform output -raw api_gateway_put_route_id` --authorization-type NONE > /dev/null
+ @echo "Scoreboard can accepts new score."
diff --git a/contest/terraform/main/output.tf b/contest/terraform/main/output.tf
index bb10616..cbd068d 100644
--- a/contest/terraform/main/output.tf
+++ b/contest/terraform/main/output.tf
@@ -2,10 +2,23 @@ output "ip_addr" {
value = module.main.ip_addr
}
-output "portal_url" {
- value = module.main.portal_url
+output "scoreboard_url" {
+ value = module.main.scoreboard_url
}
+# For commands in Makefile
output "apigateway_url" {
value = module.main.apigateway_url
}
+
+output "api_gateway_id" {
+ value = module.main.api_gateway_id
+}
+
+output "api_gateway_get_route_id" {
+ value = module.main.api_gateway_get_route_id
+}
+
+output "api_gateway_put_route_id" {
+ value = module.main.api_gateway_put_route_id
+}
diff --git a/contest/terraform/module/ec2.tf b/contest/terraform/module/ec2.tf
index cad157d..7a64315 100644
--- a/contest/terraform/module/ec2.tf
+++ b/contest/terraform/module/ec2.tf
@@ -19,7 +19,7 @@ ${join("\n", [for admin in var.admins : "curl https://github.com/${admin}.keys >
chown -R ishocon:ishocon /home/ishocon/.ssh
useradd -u 1001 -g 1001 -o -N -d /home/ishocon -s /bin/bash ${each.value}
echo "export BENCH_TEAM_NAME=${each.value}" >> /home/ishocon/.bashrc
-echo "export BENCH_PORTAL_APIGW_URL=${aws_apigatewayv2_stage.portal.invoke_url}" >> /home/ishocon/.bashrc
+echo "export BENCH_SCOREBOARD_APIGW_URL=${aws_apigatewayv2_stage.scoreboard.invoke_url}" >> /home/ishocon/.bashrc
EOF
diff --git a/contest/terraform/module/ec2_spot.tf b/contest/terraform/module/ec2_spot.tf
index 47efe46..080387a 100644
--- a/contest/terraform/module/ec2_spot.tf
+++ b/contest/terraform/module/ec2_spot.tf
@@ -19,7 +19,7 @@ ${join("\n", [for admin in var.admins : "curl https://github.com/${admin}.keys >
chown -R ishocon:ishocon /home/ishocon/.ssh
useradd -u 1001 -g 1001 -o -N -d /home/ishocon -s /bin/bash ${each.value}
echo "export BENCH_TEAM_NAME=${each.value}" >> /home/ishocon/.bashrc
-echo "export BENCH_PORTAL_APIGW_URL=${aws_apigatewayv2_stage.portal.invoke_url}" >> /home/ishocon/.bashrc
+echo "export BENCH_SCOREBOARD_APIGW_URL=${aws_apigatewayv2_stage.scoreboard.invoke_url}" >> /home/ishocon/.bashrc
EOF
diff --git a/contest/terraform/module/output.tf b/contest/terraform/module/output.tf
index 1cf8522..eb2faf5 100644
--- a/contest/terraform/module/output.tf
+++ b/contest/terraform/module/output.tf
@@ -5,10 +5,22 @@ output "ip_addr" {
}
}
-output "portal_url" {
- value = "http://${aws_s3_bucket_website_configuration.portal.website_endpoint}"
+output "scoreboard_url" {
+ value = "http://${aws_s3_bucket_website_configuration.scoreboard.website_endpoint}"
}
output "apigateway_url" {
- value = aws_apigatewayv2_stage.portal.invoke_url
+ value = aws_apigatewayv2_stage.scoreboard.invoke_url
+}
+
+output "api_gateway_id" {
+ value = aws_apigatewayv2_api.scoreboard.id
+}
+
+output "api_gateway_get_route_id" {
+ value = aws_apigatewayv2_route.scoreboard_teams_get.id
+}
+
+output "api_gateway_put_route_id" {
+ value = aws_apigatewayv2_route.scoreboard_teams_put.id
}
diff --git a/contest/terraform/module/portal.tf b/contest/terraform/module/portal.tf
index d65976e..b4ff1ae 100644
--- a/contest/terraform/module/portal.tf
+++ b/contest/terraform/module/portal.tf
@@ -1,6 +1,6 @@
# Dynamo DB
-resource "aws_dynamodb_table" "portal" {
- name = "${var.name}-portal"
+resource "aws_dynamodb_table" "scoreboard" {
+ name = "${var.name}-scoreboard"
billing_mode = "PAY_PER_REQUEST"
hash_key = "team"
range_key = "timestamp"
@@ -16,7 +16,7 @@ resource "aws_dynamodb_table" "portal" {
}
tags = {
- Name = "${var.name}-portal"
+ Name = "${var.name}-scoreboard"
}
}
@@ -36,7 +36,7 @@ data "aws_iam_policy_document" "assume_role" {
data "aws_iam_policy_document" "lambda" {
statement {
effect = "Allow"
- resources = [aws_dynamodb_table.portal.arn]
+ resources = [aws_dynamodb_table.scoreboard.arn]
actions = [
"dynamodb:DeleteItem",
"dynamodb:GetItem",
@@ -63,12 +63,12 @@ data "aws_iam_policy_document" "lambda" {
}
}
resource "aws_iam_role" "iam_for_lambda" {
- name = "${var.name}-portal-lambda"
+ name = "${var.name}-scoreboard-lambda"
assume_role_policy = data.aws_iam_policy_document.assume_role.json
}
resource "aws_iam_policy" "lambda" {
- name = "${var.name}-portal-lambda"
- description = "Policy for the portal Lambda function"
+ name = "${var.name}-scoreboard-lambda"
+ description = "Policy for the scoreboard Lambda function"
policy = data.aws_iam_policy_document.lambda.json
}
resource "aws_iam_role_policy_attachment" "lambda" {
@@ -78,13 +78,13 @@ resource "aws_iam_role_policy_attachment" "lambda" {
data "archive_file" "lambda" {
type = "zip"
output_path = "lambda_function.zip"
- source_content = templatefile("${path.module}/portal_lambda.py.tpl", {
- dynamodb_table_name = aws_dynamodb_table.portal.name
+ source_content = templatefile("${path.module}/scoreboard_lambda.py.tpl", {
+ dynamodb_table_name = aws_dynamodb_table.scoreboard.name
})
source_content_filename = "lambda.py"
}
-resource "aws_lambda_function" "portal" {
- function_name = "${var.name}-portal"
+resource "aws_lambda_function" "scoreboard" {
+ function_name = "${var.name}-scoreboard"
description = "Lambda function to get/put/delete scores for each team"
filename = "lambda_function.zip"
role = aws_iam_role.iam_for_lambda.arn
@@ -99,91 +99,91 @@ resource "aws_lambda_function" "portal" {
resource "aws_lambda_permission" "apigw_lambda" {
statement_id = "AllowExecutionFromAPIGateway"
action = "lambda:InvokeFunction"
- function_name = aws_lambda_function.portal.function_name
+ function_name = aws_lambda_function.scoreboard.function_name
principal = "apigateway.amazonaws.com"
- source_arn = "arn:aws:execute-api:${data.aws_region.current.name}:${data.aws_caller_identity.current.account_id}:${aws_apigatewayv2_api.portal.id}/*/*/teams"
+ source_arn = "arn:aws:execute-api:${data.aws_region.current.name}:${data.aws_caller_identity.current.account_id}:${aws_apigatewayv2_api.scoreboard.id}/*/*/teams"
}
resource "aws_cloudwatch_log_group" "lambda" {
- name = "/aws/lambda/${aws_lambda_function.portal.function_name}"
+ name = "/aws/lambda/${aws_lambda_function.scoreboard.function_name}"
}
# API Gateway
-resource "aws_apigatewayv2_api" "portal" {
- name = "${var.name}-portal"
- description = "API Gateway for the portal Lambda function"
+resource "aws_apigatewayv2_api" "scoreboard" {
+ name = "${var.name}-scoreboard"
+ description = "API Gateway for the scoreboard Lambda function"
protocol_type = "HTTP"
cors_configuration {
- allow_origins = ["http://${aws_s3_bucket_website_configuration.portal.website_endpoint}"]
+ allow_origins = ["http://${aws_s3_bucket_website_configuration.scoreboard.website_endpoint}"]
}
}
-resource "aws_apigatewayv2_integration" "portal" {
- api_id = aws_apigatewayv2_api.portal.id
+resource "aws_apigatewayv2_integration" "scoreboard" {
+ api_id = aws_apigatewayv2_api.scoreboard.id
integration_type = "AWS_PROXY"
connection_type = "INTERNET"
integration_method = "POST"
- integration_uri = aws_lambda_function.portal.invoke_arn
+ integration_uri = aws_lambda_function.scoreboard.invoke_arn
passthrough_behavior = "WHEN_NO_MATCH"
payload_format_version = "2.0"
}
-resource "aws_apigatewayv2_route" "portal_teams_get" {
- api_id = aws_apigatewayv2_api.portal.id
+resource "aws_apigatewayv2_route" "scoreboard_teams_get" {
+ api_id = aws_apigatewayv2_api.scoreboard.id
route_key = "GET /teams"
- target = "integrations/${aws_apigatewayv2_integration.portal.id}"
+ target = "integrations/${aws_apigatewayv2_integration.scoreboard.id}"
}
-resource "aws_apigatewayv2_route" "portal_teams_put" {
- api_id = aws_apigatewayv2_api.portal.id
+resource "aws_apigatewayv2_route" "scoreboard_teams_put" {
+ api_id = aws_apigatewayv2_api.scoreboard.id
route_key = "PUT /teams"
- target = "integrations/${aws_apigatewayv2_integration.portal.id}"
+ target = "integrations/${aws_apigatewayv2_integration.scoreboard.id}"
}
-resource "aws_apigatewayv2_route" "portal_teams_delete" {
- api_id = aws_apigatewayv2_api.portal.id
+resource "aws_apigatewayv2_route" "scoreboard_teams_delete" {
+ api_id = aws_apigatewayv2_api.scoreboard.id
route_key = "DELETE /teams"
- target = "integrations/${aws_apigatewayv2_integration.portal.id}"
+ target = "integrations/${aws_apigatewayv2_integration.scoreboard.id}"
}
-resource "aws_apigatewayv2_deployment" "portal" {
- api_id = aws_apigatewayv2_api.portal.id
+resource "aws_apigatewayv2_deployment" "scoreboard" {
+ api_id = aws_apigatewayv2_api.scoreboard.id
triggers = {
redeployment = sha1(join(",", tolist([
- jsonencode(aws_apigatewayv2_integration.portal),
- jsonencode(aws_apigatewayv2_route.portal_teams_get),
- jsonencode(aws_apigatewayv2_route.portal_teams_put),
- jsonencode(aws_apigatewayv2_route.portal_teams_delete),
+ jsonencode(aws_apigatewayv2_integration.scoreboard),
+ jsonencode(aws_apigatewayv2_route.scoreboard_teams_get),
+ jsonencode(aws_apigatewayv2_route.scoreboard_teams_put),
+ jsonencode(aws_apigatewayv2_route.scoreboard_teams_delete),
])))
}
lifecycle {
create_before_destroy = true
}
}
-resource "aws_apigatewayv2_stage" "portal" {
- api_id = aws_apigatewayv2_api.portal.id
+resource "aws_apigatewayv2_stage" "scoreboard" {
+ api_id = aws_apigatewayv2_api.scoreboard.id
name = "$default"
auto_deploy = true
}
# S3
-resource "aws_s3_bucket" "portal" {
- bucket_prefix = "${var.name}-portal"
+resource "aws_s3_bucket" "scoreboard" {
+ bucket_prefix = "${var.name}-scoreboard"
tags = {
- Name = "${var.name}-portal"
+ Name = "${var.name}-scoreboard"
}
}
-resource "aws_s3_bucket_public_access_block" "portal" {
- bucket = aws_s3_bucket.portal.id
+resource "aws_s3_bucket_public_access_block" "scoreboard" {
+ bucket = aws_s3_bucket.scoreboard.id
block_public_acls = false
block_public_policy = false
ignore_public_acls = false
restrict_public_buckets = false
}
-resource "aws_s3_bucket_website_configuration" "portal" {
- bucket = aws_s3_bucket.portal.id
+resource "aws_s3_bucket_website_configuration" "scoreboard" {
+ bucket = aws_s3_bucket.scoreboard.id
index_document {
suffix = "index.html"
}
}
-resource "aws_s3_bucket_policy" "portal" {
- bucket = aws_s3_bucket.portal.bucket
+resource "aws_s3_bucket_policy" "scoreboard" {
+ bucket = aws_s3_bucket.scoreboard.bucket
policy = jsonencode({
Version = "2012-10-17"
@@ -192,36 +192,36 @@ resource "aws_s3_bucket_policy" "portal" {
Effect = "Allow"
Principal = "*"
Action = "s3:GetObject"
- Resource = "${aws_s3_bucket.portal.arn}/*"
+ Resource = "${aws_s3_bucket.scoreboard.arn}/*"
}
]
})
- depends_on = [aws_s3_bucket_public_access_block.portal]
+ depends_on = [aws_s3_bucket_public_access_block.scoreboard]
}
-resource "aws_s3_object" "portal_index_html" {
- bucket = aws_s3_bucket.portal.bucket
+resource "aws_s3_object" "scoreboard_index_html" {
+ bucket = aws_s3_bucket.scoreboard.bucket
key = "index.html"
- source = "${path.module}/../../portal/index.html"
+ source = "${path.module}/../../scoreboard/index.html"
content_type = "text/html"
depends_on = [
- aws_s3_bucket_policy.portal,
- aws_s3_bucket_public_access_block.portal
+ aws_s3_bucket_policy.scoreboard,
+ aws_s3_bucket_public_access_block.scoreboard
]
}
resource "local_file" "main_js_with_replaced_variables" {
filename = "${path.module}/dist/main_with_variables.js"
- content = replace(file("${path.module}/../../portal/dist/main.js"), "<>", aws_apigatewayv2_stage.portal.invoke_url)
+ content = replace(file("${path.module}/../../scoreboard/dist/main.js"), "<>", aws_apigatewayv2_stage.scoreboard.invoke_url)
}
-resource "aws_s3_object" "portal_main_js" {
- bucket = aws_s3_bucket.portal.bucket
+resource "aws_s3_object" "scoreboard_main_js" {
+ bucket = aws_s3_bucket.scoreboard.bucket
key = "dist/main.js"
content = local_file.main_js_with_replaced_variables.content
content_type = "application/javascript"
depends_on = [
- aws_s3_bucket_policy.portal,
- aws_s3_bucket_public_access_block.portal
+ aws_s3_bucket_policy.scoreboard,
+ aws_s3_bucket_public_access_block.scoreboard
]
}
diff --git a/contest/terraform/module/portal_lambda.py.tpl b/contest/terraform/module/scoreboard_lambda.py.tpl
similarity index 100%
rename from contest/terraform/module/portal_lambda.py.tpl
rename to contest/terraform/module/scoreboard_lambda.py.tpl
diff --git a/contest/terraform/module/variables.tf b/contest/terraform/module/variables.tf
index 688041a..747596c 100644
--- a/contest/terraform/module/variables.tf
+++ b/contest/terraform/module/variables.tf
@@ -44,8 +44,7 @@ variable "name" {
variable "ami_id" {
description = "AMI ID for the ISHOCON EC2 instances"
type = string
- default = "ami-073e32684d5ff32c8"
-
+ default = "ami-04241d5ce3f2f0a79"
}
variable "instance_type" {
diff --git a/doc/manual.md b/doc/manual.md
index c1ccfbe..7ac4d71 100644
--- a/doc/manual.md
+++ b/doc/manual.md
@@ -4,7 +4,7 @@
## インスタンスの作成
AWSのイメージのみ作成しました。
-* AMI: ami-073e32684d5ff32c8
+* AMI: ami-04241d5ce3f2f0a79
* Instance Type: c7i.xlarge
* EBS-optimized: Yes
* Root Volume: 8GB, General Purpose SSD (gp3)