制定我自己的规则

发布: (2026年2月8日 GMT+8 05:45)
4 分钟阅读
原文: Dev.to

Source: Dev.to

背景

在日常工作中,我很少有机会使用公司未批准的 AWS 服务。这也是为什么在个人项目中使用 AWS Amplify 会让人觉得有点“违规”——就像被告知不能去的派对上跳窗而出。能够自行设定技术使用规则、解锁意想不到的新层次,真的很有趣。

使用 AWS Amplify

Amplify 名副其实,能够快速部署。使用 Copilot 脚手架生成 React 前端后,Amplify 立刻部署了应用。我把 Amplify 应用配置为自动检测分支并自动构建,这样每一次能够编译的 push 都会触发完整的构建和部署流水线。

选择不使用 Amplify 的后端功能

我决定不直接使用 Amplify 提供的函数、存储或数据选项。虽然这些集成是一个很大的优势,但我想要更多的控制权:

  • API Gateway – 用于公开我的 Lambda,实现细粒度的验证和错误处理。
  • 托管授权器 – 保护调用 Bedrock 模型进行内容生成以及从 S3 下载内容的 Lambda。
  • 后端语言 – 我更倾向于使用自己熟悉的语言编写后端,而不是 TypeScript。React 前端已经足够让我在 2026 年学习了。

Terraform 实验

在之前的文章中,我询问大家是如何为个人项目部署资源的。这一次,我在手动部署后选择使用 Terraform(TF),主要是因为我对 provider 中的 Amplify 资源不熟悉。我想看看能否快速生成所需的 Terraform,以复制控制台的配置。

在日常工作中,一个常见的摩擦点是编写 Terraform 来预置资源。当前的 AWS Terraform provider 并未公开用于管理或自定义 Amplify 应用监控和告警的资源,因此这些方面仍需在控制台手动处理。

示例 Terraform 配置

下面是我用来配置 Amplify 部署前端应用的 Terraform 代码片段:

resource "aws_amplify_app" "homeschool_app" {
  name       = "homeschool-app"
  repository = "https://github.com/homeschool-app" # Replace with your GH repository

  build_spec = <<-EOT
    version: 1
    frontend:
      phases:
        preBuild:
          commands:
            - npm ci
        build:
          commands:
            - npm run build
    artifacts:
      baseDirectory: build
      files:
        - '**/*'
    cache:
      paths:
        - node_modules/**/*
  EOT

  enable_auto_branch_creation = true
  auto_branch_creation_patterns = [
    "*",
    "*/**",
  ]
  auto_branch_creation_config {
    enable_auto_build = true
  }

  environment_variables = {
    # Cognito User Pool Domain (without the .auth.region.amazoncognito.com part)
    VITE_COGNITO_DOMAIN = "your-cognito-domain"

    # Cognito User Pool App Client ID
    VITE_COGNITO_CLIENT_ID = "your-cognito-client-id"

    # AWS Region (optional - defaults to us-east-1)
    VITE_AWS_REGION = "us-east-1"

    # Redirect URI after successful login (optional - defaults to current origin)
    VITE_COGNITO_REDIRECT_URI = "http://localhost:3000" # Local development redirect
    # For production: VITE_COGNITO_REDIRECT_URI = "https://your-domain.com"

    # API Configuration
    # Main API Gateway URL for backend endpoints
    VITE_API_ENDPOINT = "https://your-api-gateway.execute-api.us-east-1.amazonaws.com/prod"
  }
}
0 浏览
Back to Blog

相关文章

阅读更多 »

UX/UI 排版

Typography 是指什么?- 使用哪种字体 - 在什么位置多大 - 多粗 - 行间距 - …