THẢO LUẬN

Đã phising và lấy được secret của users rồi thì web2 hay web3 cũng chịu. Trừ khi hệ thống hỗ trợ thêm MFA. Tuy nhiên bài viết vẫn rất giá trị và hữu ích cho devs. Thanks bạn nhiều!!

0
Avatar
đã bình luận cho bài viết
Feb 3rd, 2022 3:49 p.m.

👍️👍️👍️

0
Feb 3rd, 2022 3:06 p.m.

💯 Cảm ơn bạn đã góp ý.

0
Feb 3rd, 2022 2:24 p.m.

Cảm ơn bạn vì bài viết bổ ích cho người mới tìm hiểu về hệ Sol như mình. Có 1 chi tiết nhỏ ở đầu mình thấy chưa chuẩn là Ethereum vẫn sử dụng cơ chế PoW chứ chưa chạy PoS.

+1

good job nha bạn!!!!!!

0

@hmquan08011996 trên tinh thần xây dựng đóng góp thì mình xin share terraform của codebuild & pipeline dựa trên refer code của bạn nhé ^^ (đã chạy OK, trừ phần add thêm policy của codebuild's role thì phải sửa tay ^^)

  1. bai-8/terraform-start/variables.tf
variable "var_environment" {
	default = "dtq"
}

variable "codebuild_role_arn" {
	default = "arn:aws:iam::<AWS_ACCID>:role/service-role/codebuild-DTQCodeBuildPGoLangSPA-service-role"
}

variable "codepipeline_bucket" {
	default = "dtq-bucket-golang-spa"
}

variable "codepipeline_role_arn" {
	default = "arn:aws:iam::<AWS_ACCID>:role/service-role/AWSCodePipelineServiceRole-us-east-1-DTQPipelineGoLangSPA"
}

variable "codestar_connection" {
	default = "arn:aws:codestar-connections:us-east-1:<AWS_ACCID>:connection/2f45b0d7-576a-4934-b21b-..."
}

  1. bai-8/terraform-start/cicd.tf
locals {
  click_fe_build = "click-fe-build-${var.var_environment}"
}

resource "aws_codebuild_project" "click_fe_build" {
  name         = local.click_fe_build
  service_role = var.codebuild_role_arn

  artifacts {
    name      = var.codepipeline_bucket
    packaging = "NONE"
    type      = "CODEPIPELINE"
  }

  environment {
    compute_type                = "BUILD_GENERAL1_SMALL"
    image                       = "aws/codebuild/standard:5.0"
    image_pull_credentials_type = "CODEBUILD"
    type                        = "LINUX_CONTAINER"
  }

  logs_config {
    cloudwatch_logs {
      status = "ENABLED"
    }
  }

  source {
    git_clone_depth     = 0
    insecure_ssl        = false
    report_build_status = false
    type                = "CODEPIPELINE"
  }

  cache {
    type  = "LOCAL"
    modes = ["LOCAL_CUSTOM_CACHE"]
  }

  # tags = local.tags
}

resource "aws_codepipeline" "click_fe" {
  name     = "click-fe-${var.var_environment}"
  role_arn = var.codepipeline_role_arn

  artifact_store {
    location = var.codepipeline_bucket
    type     = "S3"
  }

  stage {
    name = "Source"

    action {
      name     = "Source"
      category = "Source"
      owner    = "AWS"
      provider = "CodeStarSourceConnection"
      version  = "1"
      output_artifacts = [
        "SourceArtifact"
      ]

      configuration = {
        ConnectionArn    = var.codestar_connection
        FullRepositoryId = "tquangdo/serverless-series-spa"
        BranchName       = "main"
      }
    }
  }

  stage {
    name = "Build"

    action {
      name      = "Build"
      category  = "Build"
      owner     = "AWS"
      provider  = "CodeBuild"
      run_order = 1
      version   = "1"
      input_artifacts = [
        "SourceArtifact",
      ]
      output_artifacts = [
        "BuildArtifact",
      ]

      configuration = {
        "EnvironmentVariables" = jsonencode(
          [
            {
              name  = "CLOUDFRONT_DISTRO_ID"
              type  = "PLAINTEXT"
              value = aws_cloudfront_distribution.s3_distribution.id
            },
          ]
        )
        "ProjectName" = local.click_fe_build
      }
    }
  }

  stage {
    name = "Deploy"

    action {
      name      = "Deploy"
      category  = "Deploy"
      owner     = "AWS"
      provider  = "S3"
      run_order = 1
      version   = "1"
      input_artifacts = [
        "BuildArtifact",
      ]

      configuration = {
        "BucketName" = var.codepipeline_bucket
        "Extract"    = "true"
      }
    }
  }

  # tags = local.tags
}

0

mình đã cập nhật lại file Terraform rồi nhé

0

@hmquan08011996 uh đúng rồi, vì lỗi nên mình buôc phải chạy CMD đó, thấy CMD dài quá mình lười ^^

  • đã hiu giải thích rồi, thanks nha 😃
0

@tquangdo ok, mình đã thêm note r nhé, sẽ cập nhật lại code của Terraform sau, quên mất vụ API Gateway có 2 Stage trong Terraform 🤣

0

@hmquan08011996 à ra là vậy, OK mình hiu rồi ^^

  • có thể do mình hơi chậm hiu, nhg mình thấy part này khá phức tạp, dễ loạn vì nó bị chồng chéo staging & production giữa API GW và repo's branch (chưa kể phần alias trong Lambda nữa)
  • nhờ bạn giải thích thì mình hiu rồi, nhg mình nghĩ nên note thêm vô bài cho rõ hơn, chứ user làm theo chắc sẽ loạn như mình á ^^
0

này bạn test thử không cần phải chạy câu CMD thêm quyền, thì nó sẽ báo lỗi á

0

@tquangdo à à, này bạn phải làm theo flow là merge từ staging lên nha, nếu mình thay đổi thẳng từ main branch thì nó sẽ không nhận nha. Do bản chất của CI/CD nhánh main nó không có build lại code, mà chỉ lấy version hiện tại của nhánh staging để làm production. Này thì tùy theo luồng CI/CD nha, bạn có thể xây dựng luồng khác

0

này ở bài 2 mình có nói á, lúc bạn chọn lambda function cho một endpoint thì khi bạn nhấn OK, nó sẽ hiện lên một modal hỏi bạn có muốn thêm quyền vào vào không, bạn xem kĩ lại chỗ đó nha

0

@hmquan08011996 thanks, phần đó mình đã làm step by step theo OK rồi! ^^

  • vấn đề bây giờ là mình đang bị như vầy, "Kiểm tra log thử" như bạn ghi thì OK rồi, nhưng chưa bit phải check KQ production ở đâu cả! (mình check bằng hình phải thì thấy KO phản ánh!)

chỉ phản ánh OK staging (trái), còn production (phải) KO phản ánh!

0

này bạn xem kĩ phần Lambda alias với Stage Variables ở API Gateway á

0

series này vẫn còn vài bài nha bạn. Mấy lỗi này do code Terraform thiếu, này mình cũng không để ý kĩ nữa 🤣, mình sẽ fix lại sau nha

0

@hmquan08011996 thanks bạn vì series rất hay, cuối cùng mình cũng đã done ^^

  1. phải sửa lại value của REACT_APP_API_URL trong .env-cmdrc
  2. sau khi CICD rồi chạy cloudfront domain trên browser thì sẽ bị lỗi CORS, sửa bằng cách hoặc Enable CORS trong AWS console API GW hoặc thêm phần CORS trong list/main.go rồi build lại!

image.png

0

@hmquan08011996 cho mình confirm 2đ:

1

Từ hệ thống ở bài trước, ta sẽ có API Gateway với hai Stage là staging và production,

  • => repo bai-8 terraform KO auto create cái này (chỉ auto create alias "production" Lambda), phải create lại bằng tay. Nếu có time bạn up lại code terraform thì tốt quá ^^

2

https://viblo.asia/p/serverless-series-golang-bai-8-cicd-with-codepipeline-automatic-update-lambda-and-s3-spa-RQqKLBWNl7z#_create-pipeline-for-branch-main-10

Oke, vậy là CI/CD cho Lambda function của ta đã chạy thành công. Kiểm tra log thử

0
Avatar
đã bình luận cho bài viết
Feb 3rd, 2022 4:45 a.m.

hay

0

2

mình làm theo guide thì KQ OK đúng như guide nhg vô lambda books_list thì thấy ERR này

  • => bên bạn có bị ko, và tại sao lại bị nhỉ? image.png
0
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí