GTFS追加 - #22
Open
hikaru-0602 wants to merge 17 commits into
Open
Conversation
Co-authored-by: Kanta Oikawa <oikawa_kanta@cyberagent.co.jp>
Co-authored-by: Kanta Oikawa <oikawa_kanta@cyberagent.co.jp>
Co-authored-by: Kanta Oikawa <oikawa_kanta@cyberagent.co.jp>
Co-authored-by: Kanta Oikawa <oikawa_kanta@cyberagent.co.jp>
…date_bus.tf Co-authored-by: Kanta Oikawa <oikawa_kanta@cyberagent.co.jp>
…date_bus.tf Co-authored-by: Kanta Oikawa <oikawa_kanta@cyberagent.co.jp>
hikaru-0602
requested review from
a team,
Hosoda-abo,
kantacky and
masaya-osuga
August 6, 2026 15:51
kantacky
reviewed
Aug 10, 2026
kantacky
left a comment
Member
There was a problem hiding this comment.
SecretManager側でサービスアカウントにシークレットアクセサーロールを付与しないとかも?
あと、Cloud SQLのdotto_serviceロールをサービスアカウントに付与しないとかも
Digger run report at 2026-08-20 15:54:56 (UTC)Plan outputTerraform will perform the following actions:
# google_cloud_run_v2_job.import_gtfs_job will be created
+ resource "google_cloud_run_v2_job" "import_gtfs_job" {
+ conditions = (known after apply)
+ create_time = (known after apply)
+ creator = (known after apply)
+ delete_time = (known after apply)
+ deletion_policy = "DELETE"
+ deletion_protection = true
+ effective_annotations = (known after apply)
+ effective_labels = {
+ "goog-terraform-provisioned" = "true"
}
+ etag = (known after apply)
+ execution_count = (known after apply)
+ expire_time = (known after apply)
+ generation = (known after apply)
+ id = (known after apply)
+ last_modifier = (known after apply)
+ latest_created_execution = (known after apply)
+ launch_stage = "GA"
+ location = "asia-northeast1"
+ name = "import-gtfs-job-dev"
+ observed_generation = (known after apply)
+ project = "swift2023groupc"
+ reconciling = (known after apply)
+ terminal_condition = (known after apply)
+ terraform_labels = {
+ "goog-terraform-provisioned" = "true"
}
+ uid = (known after apply)
+ update_time = (known after apply)
+ template {
+ parallelism = (known after apply)
+ task_count = (known after apply)
+ template {
+ execution_environment = (known after apply)
+ max_retries = 0
+ service_account = "import-gtfs-job-dev@swift2023groupc.iam.gserviceaccount.com"
+ timeout = "900s"
+ containers {
+ command = [
+ "/bin/import-gtfs-job",
]
+ image = "asia-northeast1-docker.pkg.dev/swift2023groupc/github-actions/server:latest"
+ env {
+ name = "DB_IAM_USER"
+ value = "import-gtfs-job-dev@swift2023groupc.iam"
}
+ env {
+ name = "DB_NAME"
+ value = "dotto_dev"
}
+ env {
+ name = "GTFS_SCHEDULE_URL"
# (1 unchanged attribute hidden)
+ value_source {
+ secret_key_ref {
+ secret = "gtfs_schedule_url_hakodate_bus"
+ version = "latest"
}
}
}
+ env {
+ name = "INSTANCE_CONNECTION_NAME"
+ value = "swift2023groupc:asia-northeast1:dotto"
}
+ resources {
+ limits = {
+ "cpu" = "1"
+ "memory" = "512Mi"
}
}
+ startup_probe (known after apply)
}
}
}
}
# google_cloud_run_v2_job_iam_member.import_gtfs_job_invoker will be created
+ resource "google_cloud_run_v2_job_iam_member" "import_gtfs_job_invoker" {
+ etag = (known after apply)
+ id = (known after apply)
+ location = (known after apply)
+ member = "serviceAccount:import-gtfs-job-dev-scheduler@swift2023groupc.iam.gserviceaccount.com"
+ name = "import-gtfs-job-dev"
+ project = (known after apply)
+ role = "roles/run.invoker"
}
# google_cloud_scheduler_job.import_gtfs_job_trigger will be created
+ resource "google_cloud_scheduler_job" "import_gtfs_job_trigger" {
+ deletion_policy = "DELETE"
+ id = (known after apply)
+ name = "import-gtfs-job-dev-trigger"
+ paused = (known after apply)
+ project = "swift2023groupc"
+ region = "asia-northeast1"
+ schedule = "0 4 * * *"
+ state = (known after apply)
+ time_zone = "Asia/Tokyo"
+ http_target {
+ body = "e30="
+ headers = {
+ "Content-Type" = "application/json"
}
+ http_method = "POST"
+ uri = "https://run.googleapis.com/v2/projects/swift2023groupc/locations/asia-northeast1/jobs/import-gtfs-job-dev:run"
+ oauth_token {
+ service_account_email = "import-gtfs-job-dev-scheduler@swift2023groupc.iam.gserviceaccount.com"
}
}
}
# google_project_iam_member.import_gtfs_job["roles/cloudsql.client"] will be created
+ resource "google_project_iam_member" "import_gtfs_job" {
+ etag = (known after apply)
+ id = (known after apply)
+ member = "serviceAccount:import-gtfs-job-dev@swift2023groupc.iam.gserviceaccount.com"
+ project = "swift2023groupc"
+ role = "roles/cloudsql.client"
}
# google_project_iam_member.import_gtfs_job["roles/cloudsql.instanceUser"] will be created
+ resource "google_project_iam_member" "import_gtfs_job" {
+ etag = (known after apply)
+ id = (known after apply)
+ member = "serviceAccount:import-gtfs-job-dev@swift2023groupc.iam.gserviceaccount.com"
+ project = "swift2023groupc"
+ role = "roles/cloudsql.instanceUser"
}
# google_project_iam_member.import_gtfs_job["roles/logging.logWriter"] will be created
+ resource "google_project_iam_member" "import_gtfs_job" {
+ etag = (known after apply)
+ id = (known after apply)
+ member = "serviceAccount:import-gtfs-job-dev@swift2023groupc.iam.gserviceaccount.com"
+ project = "swift2023groupc"
+ role = "roles/logging.logWriter"
}
# google_secret_manager_secret_iam_member.import_gtfs_job_gtfs_schedule_url will be created
+ resource "google_secret_manager_secret_iam_member" "import_gtfs_job_gtfs_schedule_url" {
+ etag = (known after apply)
+ id = (known after apply)
+ member = "serviceAccount:import-gtfs-job-dev@swift2023groupc.iam.gserviceaccount.com"
+ project = (known after apply)
+ role = "roles/secretmanager.secretAccessor"
+ secret_id = "gtfs_schedule_url_hakodate_bus"
}
# google_service_account.import_gtfs_job will be created
+ resource "google_service_account" "import_gtfs_job" {
+ account_id = "import-gtfs-job-dev"
+ deletion_policy = "DELETE"
+ disabled = false
+ display_name = "Import GTFS Job (Dev)"
+ email = "import-gtfs-job-dev@swift2023groupc.iam.gserviceaccount.com"
+ id = (known after apply)
+ member = "serviceAccount:import-gtfs-job-dev@swift2023groupc.iam.gserviceaccount.com"
+ name = (known after apply)
+ project = "swift2023groupc"
+ unique_id = (known after apply)
}
# google_service_account.import_gtfs_job_scheduler will be created
+ resource "google_service_account" "import_gtfs_job_scheduler" {
+ account_id = "import-gtfs-job-dev-scheduler"
+ deletion_policy = "DELETE"
+ disabled = false
+ display_name = "Import GTFS Job (Dev) Scheduler"
+ email = "import-gtfs-job-dev-scheduler@swift2023groupc.iam.gserviceaccount.com"
+ id = (known after apply)
+ member = "serviceAccount:import-gtfs-job-dev-scheduler@swift2023groupc.iam.gserviceaccount.com"
+ name = (known after apply)
+ project = "swift2023groupc"
+ unique_id = (known after apply)
}
Plan: 9 to add, 0 to change, 0 to destroy.
Changes to Outputs:
+ cloud_run_job_id = (known after apply)
+ cloud_run_job_name = "import-gtfs-job-dev"
+ service_account_email = "import-gtfs-job-dev@swift2023groupc.iam.gserviceaccount.com"
+ service_account_name = (known after apply)
Terraform plan validation check (server-import-gtfs-job-dev)Terraform plan validation checks succeeded ✅Plan summary
Instructionsdigger apply -p server-import-gtfs-job-dev⏩ To apply all changes in this PR: digger apply🚮 To unlock all projects in this PR: digger unlockPlan outputTerraform will perform the following actions:
# google_cloud_run_v2_job.import_gtfs_job will be created
+ resource "google_cloud_run_v2_job" "import_gtfs_job" {
+ conditions = (known after apply)
+ create_time = (known after apply)
+ creator = (known after apply)
+ delete_time = (known after apply)
+ deletion_policy = "DELETE"
+ deletion_protection = true
+ effective_annotations = (known after apply)
+ effective_labels = {
+ "goog-terraform-provisioned" = "true"
}
+ etag = (known after apply)
+ execution_count = (known after apply)
+ expire_time = (known after apply)
+ generation = (known after apply)
+ id = (known after apply)
+ last_modifier = (known after apply)
+ latest_created_execution = (known after apply)
+ launch_stage = "GA"
+ location = "asia-northeast1"
+ name = "import-gtfs-job"
+ observed_generation = (known after apply)
+ project = "swift2023groupc"
+ reconciling = (known after apply)
+ terminal_condition = (known after apply)
+ terraform_labels = {
+ "goog-terraform-provisioned" = "true"
}
+ uid = (known after apply)
+ update_time = (known after apply)
+ template {
+ parallelism = (known after apply)
+ task_count = (known after apply)
+ template {
+ execution_environment = (known after apply)
+ max_retries = 0
+ service_account = "import-gtfs-job@swift2023groupc.iam.gserviceaccount.com"
+ timeout = "900s"
+ containers {
+ command = [
+ "/bin/import-gtfs-job",
]
+ image = "asia-northeast1-docker.pkg.dev/swift2023groupc/github-actions/server:latest"
+ env {
+ name = "DB_IAM_USER"
+ value = "import-gtfs-job@swift2023groupc.iam"
}
+ env {
+ name = "DB_NAME"
+ value = "dotto"
}
+ env {
+ name = "GTFS_SCHEDULE_URL"
# (1 unchanged attribute hidden)
+ value_source {
+ secret_key_ref {
+ secret = "gtfs_schedule_url_hakodate_bus"
+ version = "latest"
}
}
}
+ env {
+ name = "INSTANCE_CONNECTION_NAME"
+ value = "swift2023groupc:asia-northeast1:dotto"
}
+ resources {
+ limits = {
+ "cpu" = "1"
+ "memory" = "512Mi"
}
}
+ startup_probe (known after apply)
}
}
}
}
# google_cloud_run_v2_job_iam_member.import_gtfs_job_invoker will be created
+ resource "google_cloud_run_v2_job_iam_member" "import_gtfs_job_invoker" {
+ etag = (known after apply)
+ id = (known after apply)
+ location = (known after apply)
+ member = "serviceAccount:import-gtfs-job-scheduler@swift2023groupc.iam.gserviceaccount.com"
+ name = "import-gtfs-job"
+ project = (known after apply)
+ role = "roles/run.invoker"
}
# google_cloud_scheduler_job.import_gtfs_job_trigger will be created
+ resource "google_cloud_scheduler_job" "import_gtfs_job_trigger" {
+ deletion_policy = "DELETE"
+ id = (known after apply)
+ name = "import-gtfs-job-trigger"
+ paused = (known after apply)
+ project = "swift2023groupc"
+ region = "asia-northeast1"
+ schedule = "0 21 * * *"
+ state = (known after apply)
+ time_zone = "Asia/Tokyo"
+ http_target {
+ body = "e30="
+ headers = {
+ "Content-Type" = "application/json"
}
+ http_method = "POST"
+ uri = "https://run.googleapis.com/v2/projects/swift2023groupc/locations/asia-northeast1/jobs/import-gtfs-job:run"
+ oauth_token {
+ service_account_email = "import-gtfs-job-scheduler@swift2023groupc.iam.gserviceaccount.com"
}
}
}
# google_project_iam_member.import_gtfs_job["roles/cloudsql.client"] will be created
+ resource "google_project_iam_member" "import_gtfs_job" {
+ etag = (known after apply)
+ id = (known after apply)
+ member = "serviceAccount:import-gtfs-job@swift2023groupc.iam.gserviceaccount.com"
+ project = "swift2023groupc"
+ role = "roles/cloudsql.client"
}
# google_project_iam_member.import_gtfs_job["roles/cloudsql.instanceUser"] will be created
+ resource "google_project_iam_member" "import_gtfs_job" {
+ etag = (known after apply)
+ id = (known after apply)
+ member = "serviceAccount:import-gtfs-job@swift2023groupc.iam.gserviceaccount.com"
+ project = "swift2023groupc"
+ role = "roles/cloudsql.instanceUser"
}
# google_project_iam_member.import_gtfs_job["roles/logging.logWriter"] will be created
+ resource "google_project_iam_member" "import_gtfs_job" {
+ etag = (known after apply)
+ id = (known after apply)
+ member = "serviceAccount:import-gtfs-job@swift2023groupc.iam.gserviceaccount.com"
+ project = "swift2023groupc"
+ role = "roles/logging.logWriter"
}
# google_secret_manager_secret_iam_member.import_gtfs_job_gtfs_schedule_url will be created
+ resource "google_secret_manager_secret_iam_member" "import_gtfs_job_gtfs_schedule_url" {
+ etag = (known after apply)
+ id = (known after apply)
+ member = "serviceAccount:import-gtfs-job@swift2023groupc.iam.gserviceaccount.com"
+ project = (known after apply)
+ role = "roles/secretmanager.secretAccessor"
+ secret_id = "gtfs_schedule_url_hakodate_bus"
}
# google_service_account.import_gtfs_job will be created
+ resource "google_service_account" "import_gtfs_job" {
+ account_id = "import-gtfs-job"
+ deletion_policy = "DELETE"
+ disabled = false
+ display_name = "Import GTFS Job"
+ email = "import-gtfs-job@swift2023groupc.iam.gserviceaccount.com"
+ id = (known after apply)
+ member = "serviceAccount:import-gtfs-job@swift2023groupc.iam.gserviceaccount.com"
+ name = (known after apply)
+ project = "swift2023groupc"
+ unique_id = (known after apply)
}
# google_service_account.import_gtfs_job_scheduler will be created
+ resource "google_service_account" "import_gtfs_job_scheduler" {
+ account_id = "import-gtfs-job-scheduler"
+ deletion_policy = "DELETE"
+ disabled = false
+ display_name = "Import GTFS Job Scheduler"
+ email = "import-gtfs-job-scheduler@swift2023groupc.iam.gserviceaccount.com"
+ id = (known after apply)
+ member = "serviceAccount:import-gtfs-job-scheduler@swift2023groupc.iam.gserviceaccount.com"
+ name = (known after apply)
+ project = "swift2023groupc"
+ unique_id = (known after apply)
}
Plan: 9 to add, 0 to change, 0 to destroy.
Changes to Outputs:
+ cloud_run_job_id = (known after apply)
+ cloud_run_job_name = "import-gtfs-job"
+ service_account_email = "import-gtfs-job@swift2023groupc.iam.gserviceaccount.com"
+ service_account_name = (known after apply)
Terraform plan validation check (server-import-gtfs-job-prd)Terraform plan validation checks succeeded ✅Plan summary
Instructionsdigger apply -p server-import-gtfs-job-prd⏩ To apply all changes in this PR: digger apply🚮 To unlock all projects in this PR: digger unlockPlan outputTerraform will perform the following actions:
# google_cloud_run_v2_job.import_gtfs_job will be created
+ resource "google_cloud_run_v2_job" "import_gtfs_job" {
+ conditions = (known after apply)
+ create_time = (known after apply)
+ creator = (known after apply)
+ delete_time = (known after apply)
+ deletion_policy = "DELETE"
+ deletion_protection = true
+ effective_annotations = (known after apply)
+ effective_labels = {
+ "goog-terraform-provisioned" = "true"
}
+ etag = (known after apply)
+ execution_count = (known after apply)
+ expire_time = (known after apply)
+ generation = (known after apply)
+ id = (known after apply)
+ last_modifier = (known after apply)
+ latest_created_execution = (known after apply)
+ launch_stage = "GA"
+ location = "asia-northeast1"
+ name = "import-gtfs-job-stg"
+ observed_generation = (known after apply)
+ project = "swift2023groupc"
+ reconciling = (known after apply)
+ terminal_condition = (known after apply)
+ terraform_labels = {
+ "goog-terraform-provisioned" = "true"
}
+ uid = (known after apply)
+ update_time = (known after apply)
+ template {
+ parallelism = (known after apply)
+ task_count = (known after apply)
+ template {
+ execution_environment = (known after apply)
+ max_retries = 0
+ service_account = "import-gtfs-job-stg@swift2023groupc.iam.gserviceaccount.com"
+ timeout = "900s"
+ containers {
+ command = [
+ "/bin/import-gtfs-job",
]
+ image = "asia-northeast1-docker.pkg.dev/swift2023groupc/github-actions/server:latest"
+ env {
+ name = "DB_IAM_USER"
+ value = "import-gtfs-job-stg@swift2023groupc.iam"
}
+ env {
+ name = "DB_NAME"
+ value = "dotto_stg"
}
+ env {
+ name = "GTFS_SCHEDULE_URL"
# (1 unchanged attribute hidden)
+ value_source {
+ secret_key_ref {
+ secret = "gtfs_schedule_url_hakodate_bus"
+ version = "latest"
}
}
}
+ env {
+ name = "INSTANCE_CONNECTION_NAME"
+ value = "swift2023groupc:asia-northeast1:dotto"
}
+ resources {
+ limits = {
+ "cpu" = "1"
+ "memory" = "512Mi"
}
}
+ startup_probe (known after apply)
}
}
}
}
# google_cloud_run_v2_job_iam_member.import_gtfs_job_invoker will be created
+ resource "google_cloud_run_v2_job_iam_member" "import_gtfs_job_invoker" {
+ etag = (known after apply)
+ id = (known after apply)
+ location = (known after apply)
+ member = "serviceAccount:import-gtfs-job-stg-scheduler@swift2023groupc.iam.gserviceaccount.com"
+ name = "import-gtfs-job-stg"
+ project = (known after apply)
+ role = "roles/run.invoker"
}
# google_cloud_scheduler_job.import_gtfs_job_trigger will be created
+ resource "google_cloud_scheduler_job" "import_gtfs_job_trigger" {
+ deletion_policy = "DELETE"
+ id = (known after apply)
+ name = "import-gtfs-job-stg-trigger"
+ paused = (known after apply)
+ project = "swift2023groupc"
+ region = "asia-northeast1"
+ schedule = "0 21 * * *"
+ state = (known after apply)
+ time_zone = "Asia/Tokyo"
+ http_target {
+ body = "e30="
+ headers = {
+ "Content-Type" = "application/json"
}
+ http_method = "POST"
+ uri = "https://run.googleapis.com/v2/projects/swift2023groupc/locations/asia-northeast1/jobs/import-gtfs-job-stg:run"
+ oauth_token {
+ service_account_email = "import-gtfs-job-stg-scheduler@swift2023groupc.iam.gserviceaccount.com"
}
}
}
# google_project_iam_member.import_gtfs_job["roles/cloudsql.client"] will be created
+ resource "google_project_iam_member" "import_gtfs_job" {
+ etag = (known after apply)
+ id = (known after apply)
+ member = "serviceAccount:import-gtfs-job-stg@swift2023groupc.iam.gserviceaccount.com"
+ project = "swift2023groupc"
+ role = "roles/cloudsql.client"
}
# google_project_iam_member.import_gtfs_job["roles/cloudsql.instanceUser"] will be created
+ resource "google_project_iam_member" "import_gtfs_job" {
+ etag = (known after apply)
+ id = (known after apply)
+ member = "serviceAccount:import-gtfs-job-stg@swift2023groupc.iam.gserviceaccount.com"
+ project = "swift2023groupc"
+ role = "roles/cloudsql.instanceUser"
}
# google_project_iam_member.import_gtfs_job["roles/logging.logWriter"] will be created
+ resource "google_project_iam_member" "import_gtfs_job" {
+ etag = (known after apply)
+ id = (known after apply)
+ member = "serviceAccount:import-gtfs-job-stg@swift2023groupc.iam.gserviceaccount.com"
+ project = "swift2023groupc"
+ role = "roles/logging.logWriter"
}
# google_secret_manager_secret_iam_member.import_gtfs_job_gtfs_schedule_url will be created
+ resource "google_secret_manager_secret_iam_member" "import_gtfs_job_gtfs_schedule_url" {
+ etag = (known after apply)
+ id = (known after apply)
+ member = "serviceAccount:import-gtfs-job-stg@swift2023groupc.iam.gserviceaccount.com"
+ project = (known after apply)
+ role = "roles/secretmanager.secretAccessor"
+ secret_id = "gtfs_schedule_url_hakodate_bus"
}
# google_service_account.import_gtfs_job will be created
+ resource "google_service_account" "import_gtfs_job" {
+ account_id = "import-gtfs-job-stg"
+ deletion_policy = "DELETE"
+ disabled = false
+ display_name = "Import GTFS Job (Stg)"
+ email = "import-gtfs-job-stg@swift2023groupc.iam.gserviceaccount.com"
+ id = (known after apply)
+ member = "serviceAccount:import-gtfs-job-stg@swift2023groupc.iam.gserviceaccount.com"
+ name = (known after apply)
+ project = "swift2023groupc"
+ unique_id = (known after apply)
}
# google_service_account.import_gtfs_job_scheduler will be created
+ resource "google_service_account" "import_gtfs_job_scheduler" {
+ account_id = "import-gtfs-job-stg-scheduler"
+ deletion_policy = "DELETE"
+ disabled = false
+ display_name = "Import GTFS Job (Stg) Scheduler"
+ email = "import-gtfs-job-stg-scheduler@swift2023groupc.iam.gserviceaccount.com"
+ id = (known after apply)
+ member = "serviceAccount:import-gtfs-job-stg-scheduler@swift2023groupc.iam.gserviceaccount.com"
+ name = (known after apply)
+ project = "swift2023groupc"
+ unique_id = (known after apply)
}
Plan: 9 to add, 0 to change, 0 to destroy.
Changes to Outputs:
+ cloud_run_job_id = (known after apply)
+ cloud_run_job_name = "import-gtfs-job-stg"
+ service_account_email = "import-gtfs-job-stg@swift2023groupc.iam.gserviceaccount.com"
+ service_account_name = (known after apply)
Terraform plan validation check (server-import-gtfs-job-stg)Terraform plan validation checks succeeded ✅Plan summary
Instructionsdigger apply -p server-import-gtfs-job-stg⏩ To apply all changes in this PR: digger apply🚮 To unlock all projects in this PR: digger unlock |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
やったこと