QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

Amplify 控制台 — 托管全堆栈式无服务器 Web 应用程序

  • 2019-09-19
  • 本文字数:2160 字

    阅读完需:约 7 分钟

AWS Amplify 控制台是一种全堆栈式 Web 应用程序托管服务,让您可以从首选的源代码存储库实施持续部署。Amplify 控制台于 2018 年 11 月在 AWS re:Invent 大会上推出。从那时以来,我们团队持续倾听客户的反馈并快速迭代,发布了多项新功能,下面我们简要回顾一下。


实时缓存失效


Amplify 控制台允许通过内容分发网络 (CDN) 来托管采用无服务器后端的单页 Web 应用程序或静态网站。CDN 是一种分布式的服务器网络,它在位于世界各地的边缘站点缓存文件,从而能够以极低的延迟分发您的 Web 文件资产。


以前,更新 CDN 上的内容需要手动使缓存失效,然后等待 15-20 分钟才能使更改在全球生效。为了频繁进行更新,开发人员找到了多种变通手段,例如在资产标头上设置较低的生存时间 (TTL),这样可以提高更新速度,但对性能却有不利影响。现在,您不再需要在更快部署和更高性能之间左右为难。每次向您的存储库提交代码时,Amplify 控制台都会构建更改并部署到 CDN,并且您可以在浏览器中立即看到。


部署到 Amplify 控制台



在 GitHub 上发布您的项目源代码时,您可以在 Readme 文档中提供一个“部署到 Amplify 控制台”按钮,从而方便其他开发人员构建和部署您的应用程序。单击该按钮将打开 Amplify 控制台,并显示一个部署代码的三步流程。



您可以使用这些示例项目来测试此功能,当然也可以查看文档。向您自己的代码存储库添加按钮十分简单,只需将下面的行添加到 Readme 文档即可(请注意替换 GitHub URL 中的用户名和存储库名称):


[](https://oneclick.amplifyapp.com/button.svg)](https://console.aws.amazon.com/amplify/home#/deploy?repo=https://github.com/username/repository)
复制代码


手动部署


全面实施版本控制是一个不错的想法,包括只有您一个开发者的简单网站。但如果您不想将源代码存储库作为部署的源,也可以通过 Amplify 控制台部署 zip 压缩文件、笔记本电脑上的本地文件夹、Amazon S3 存储桶或任何 HTTPS URL(例如 Dropbox 上的共享存储库)。


在创建新的 Amplify 控制台项目时,选择不使用 Git 提供者部署选项。



然后选择您的源文件(您的笔记本电脑、Amazon S3 或 HTTPS URI)



AWS CloudFormation 集成


开发人员喜爱自动化。代码或基础设施的部署没有不同:您必须确保基础设施的部署自动化、可重复。AWS CloudFormation 允许您通过 YAML 或 JSON 描述在云中自动化创建基础设施。Amplify 控制台为 AWS CloudFormation 增加了三种新的资源类型:


  • AWS::Amplify::App

  • AWS::Amplify::Branch

  • AWS::Amplify::Domain


利用这些资源类型,您可以分别创建新的 Amplify 控制台应用程序,定义 Git 分支以及要使用的 DNS 域名。


AWS CloudFormation 会连接到您的源代码存储库以向其添加 Webhook。您需要提供您的 Github 个人访问令牌以允许执行此操作。本博文提供了所有详细信息。请注意不要将凭证(或 OAuth 令牌)硬编码到 Cloudformation 模板,而应使用参数。


部署多个 Git 分支


我们认为您的 CI/CD 工具必须要适应团队的工作流,而不是相反。Amplify 控制台支持分支模式的部署,让您可以自动部署与特定模式匹配的分支,无需任何额外的配置。模式匹配基于正则表达式。


当您要测试新功能时,一般会在 Git 中创建一个新的分支。Amplify 控制台和 Amplify CLI 现在会检测分支,并且将预置一个独立的后端并为您的无服务器应用程序托管基础设施。


要启用分支检测功能,请单击通用 > 编辑,然后打开自动检测分支:



自定义 HTTP 标头


您可以通过自定义 Amplify 控制台来发送自定义的 HTTP 应答标头。应答标头可以用于调试、安全或信息参考目的。要添加自定义标头,您需要选择应用程序设置 > 编译设置,然后编辑 buildspec。例如,要强制执行 TLS 传输并预防 XSS 攻击,您可以添加如下标头:


customHeaders:        - pattern: '**/*'          headers:                - key: 'Strict-Transport-Security'                        value: 'max-age=31536000; includeSubDomains'                - key: 'X-Frame-Options'                        value: 'X-Frame-Options: SAMEORIGIN'                - key: 'X-XSS-Protection'                        value: 'X-XSS-Protection: 1; mode=block'                - key: 'X-Content-Type-Options'                        value: 'X-Content-Type-Options: nosniff'                - key: 'Content-Security-Policy'                        value: "default-src 'self'"
复制代码


更多详细信息请参阅文档。


自定义编译容器


最后(但绝对最不重要),我们对编译环境也进行了一些更改。Amplify 控制台在后台使用了 AWS CodeBuild。默认的编译容器镜像现在基于 Amazon Linux 2 并且预装了无服务器应用程序模型 (SAM) CLI。如果您因任何原因需要使用自己的编译容器,可以相应配置 Amplify 控制台。选择应用程序设置 > 编译设置:



然后编辑编译镜像设置



容器镜像有几个要求:它必须有 cURL、git、OpenSSH 和(如果您要构建 NodeJS 项目) node 以及 npm。与往常一样,详细信息请参阅文档。


每个新功能都来源于大家的反馈,因此请继续通过提交来告诉我们您关心的方面,下半年及以后预计会有更多的变化。


本文转载自 AWS 博客。


原文链接:


https://amazonaws-china.com/cn/blogs/china/amplify-console-hosting-for-fullstack-serverless-web-apps/


2019-09-19 14:051221
用户头像

发布了 1855 篇内容, 共 122.7 次阅读, 收获喜欢 79 次。

关注

评论

发布
暂无评论
发现更多内容

会声会影2023官方正式版本功能介绍

茶色酒

会声会影2023

搞懂Druid之连接创建和销毁

小小怪下士

Java 程序员 后端 Druid

疑似45亿条递信息泄露,“三类主体”如何应对?

极盾科技

数据安全

ChatGPT入门案例|商务智能对话客服(三)| 社区征文

TiAmo

openai ChatGPT

在统信UOS上二进制安装GreatSQL

GreatSQL

MySQL UOS 统信 greatsql greatsql社区

擅用瓴羊Quick BI报表分析工具,数据分析事半功倍

夏日星河

最初设计时就会避开钽电容,这是为什么呢?三大理由告诉你原因

元器件秋姐

元器件 电容 钽电容

关于微服务架构的思考

HummerCloud

微服务 云原生

FL Studio最新发布21中文正式版本下载

茶色酒

FL Studio 21

在线头脑风暴软件Mural及其竞品分析

hongfei

思维导图 工具软件 头脑风暴

迷恋管理是一种病

虎妞先生

unittest使用parameterized参数化后如何调用添加到测试套件中

Python 单元测试 自动化测试 unittest 测试套件

开学季,5门优选好课助你在新学期狂飙!

博文视点Broadview

ChatGPT风口下的技术“狂飙”,天翼云荣登ZeroCLUE榜首

天翼云开发者社区

对比开源丨Prometheus 服务多场景存储压测全解析

阿里巴巴云原生

阿里云 开源 云原生 Prometheus

Python设置显示屏分辨率

Python 分辨率

「读源码」为什么注册路由时没有传入上下文,在接口方法中却能取到?

王中阳Go

Go golang 高效工作 学习方法 程序员

假如面试官问你Babel的原理该怎么回答

loveX001

JavaScript

责任链和策略设计模式-基于Java编程语言

京东科技开发者

Java spring 代码规范 京东云 京东技术

前端标准化之旅

京东科技开发者

前端 代码规范 京东云 京东技术

ModStartBlog v6.7.0 后台管理优化,页面宽度调整

ModStart

瓴羊Quick BI为企业决策者提供可视化分析服务

小偏执o

面试官:限流算法有哪些?

王磊

java面试

吃透阿里2023版Java性能优化小册后,我让公司系统性能提升了200%

程序员小毕

数据库 程序员 JVM 架构师 Java性能优化

vivo版本发布平台:带宽智能调控优化实践-平台产品系列03

vivo互联网技术

版本发布 CDN带宽

文盘Rust -- 本地库引发的依赖冲突

京东科技开发者

后端 Clickhouse 本地计算 rust语言 企业号 2 月 PK 榜

瓴羊Quick BI即席分析工具:创设数据分析捷径

巷子

快速制作一个chrome插件

JYeontu

chrome Vue chrome扩展 Chrome插件

统一观测丨使用 Prometheus 监控云原生网关,我们该关注哪些指标?

阿里巴巴云原生

阿里云 云原生 Prometheus 云原生网关

Percona 8.0.30中show engine innodb status导致coredump排查及分析

GreatSQL

MySQL MySQL 高可用 :MySQL 数据库 greatsql greatsql社区

Prompt Learning: ChatGPT也在用的NLP新范式

Baihai IDP

人工智能 自然语言处理 nlp ChatGPT 企业号 2 月 PK 榜

Amplify 控制台 — 托管全堆栈式无服务器 Web 应用程序_大前端_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章