Flask 我可以将AWS Lambda站点移动到私有域吗?
我正在使用Zappa部署一个Flask应用程序。它可以工作()。很明显,我不想让它停留在aws域名后面,而把它放在我的个人域名上 我搜索的所有东西都在谈论用S3和API网关托管一个Lambda站点。难道没有办法将我的小应用部署到自定义域吗 编辑 按照@mislav的回答,我能够让我的谷歌域名与AWS一起工作。但是当我试图通过运行Flask 我可以将AWS Lambda站点移动到私有域吗?,flask,lambda,zappa,Flask,Lambda,Zappa,我正在使用Zappa部署一个Flask应用程序。它可以工作()。很明显,我不想让它停留在aws域名后面,而把它放在我的个人域名上 我搜索的所有东西都在谈论用S3和API网关托管一个Lambda站点。难道没有办法将我的小应用部署到自定义域吗 编辑 按照@mislav的回答,我能够让我的谷歌域名与AWS一起工作。但是当我试图通过运行zappa certifite来完成时,我得到了一个关于现有域的错误: 引发错误\u类(解析的\u响应、操作\u名称) botocore.errorfactory.Bad
zappa certifite
来完成时,我得到了一个关于现有域的错误:
引发错误\u类(解析的\u响应、操作\u名称)
botocore.errorfactory.BadRequestException:发生错误
(BadRequestException)调用CreateDomainName操作时:
您提供的域名已存在
我的zappa_settings.json
是
{
"dev": {
"app_function": "ping_app.app",
"aws_region": "us-west-1",
"profile_name": "Breuds",
"project_name": "breuds",
"runtime": "python3.6",
"s3_bucket": "zappa-ping-redshift",
"slim_handler": true,
"certificate_arn": "arn:aws:acm:us-east-1:010174774769:certificate/3a92c204-5788-42fc-bc65-74aaae8c1b3f",
"domain": "breuds.com"
}
}
我开始觉得我在做一些令人费解的事情。我使用的是谷歌域名(因为我的电子邮件有一个自定义域名,只是使用它),但如果想让AWS与之对话,这似乎会让人头疼。您可能不需要API网关。这将取决于站点功能。您可以使用S3和自定义域托管静态网站。您可以包括客户端javascript(angular/react等)。API网关实际上是用于处理http请求并将其传递给定义的资源(Lambda或其他资源) 如果您的站点需要后端功能,那么您几乎没有选择。
1)构建lambda函数,然后使用API网关(REST API)与这些函数交互。
yourhostname.com->S3->API网关(aws主机名)->lambda 2) 使用AWS JS SDK直接与lambda函数交互。
yourhostname.com->S3->AWS SDK->lambda 3) 使用API网关,然后使用EC2实例转发到Lambda或自托管web服务器(flask节点)
yourhostname.com->API网关(aws主机名)->lambda
yourhostname.com->自托管web服务器 这是一张可能会让它更清楚一点的图片。 如果我错了,请更正flask用于后端开发以构建微服务。要托管它,您可以使用构建lambda函数或在您自己的实例上托管它。
如果这有帮助,请告诉我。中实际解释了这一点 使用AWS证书管理器部署到域 Amazon提供了他们自己的免费替代方案,名为AWS证书管理器(ACM)。要将此服务与Zappa一起使用,请执行以下操作: 在AWS证书管理器控制台中验证您的域。 在控制台中,选择N.Virginia(us-east-1)地区并为您的域或子域(sub.yourdomain.tld)请求证书,或请求通配符域(*.yourdomain.tld)。 复制该证书的整个ARN,并将其放入Zappa设置证书中。 在域设置中设置所需的域。 调用$zappa certificate以使用该证书创建和关联API网关分发 还有使用现有证书等的说明 不要让它愚弄你,这一节的标题听起来好像只是关于证书的,但是有关于使用你自己的域的详细说明 编辑: 我把它包括在内以供参考
{
"common": {
"app_function": "app.__hug_wsgi__",
"aws_region": "eu-central-1",
"s3_bucket": "excuse-generator",
"profile_name": "mislavcimpersak",
"remote_env": "s3://excuse-generator/secrets.json",
"certificate_arn": "arn:aws:acm:us-east-1:500819636056:certificate/3edb9c1c-12c5-4601-89a9-dc42df840fa6"
},
"prod": {
"extends": "common",
"domain": "function.xkcd-excuse.com"
},
"dev": {
"extends": "common",
"debug": true,
"keep_warm": false,
"domain": "function-dev.xkcd-excuse.com"
}
}
在namescape.com上购买并通过cloudflare.com提供服务的域名的分步指南
foo.example.com
&foo-dev.example.com
)zappa\u settings.json中
在certificate\u arn
您的arn下输入zappa\u settings.json下的route53\u enabled
putfalse
-这是必须的
zappa_settings.json
下的domain
输入每个阶段的域,即foo.example.com
和foo-dev.example.com
zappa认证
- CNAME:foo-i3jtsjkdeu4wxo.cloudfront.net
- CNAME:foo-dev-d2jtsjkdeu4wxo.cloudfront.net
如果它只有静态内容和客户端javasript,那么您可以将其托管在S3上,并使用Route 53设置域。如果您有一些后端逻辑,那么您将需要使用api网关,我想我不明白为什么需要api网关。我不是已经找到url了吗?Lambda函数不能直接响应HTTP请求。这就是为什么您需要API网关来正确处理HTTP流量。正确答案是什么?我一直在尝试复制它。当我运行
zappa certifite
时,我得到一个关于域存在的错误:“botocore.errorfactory.BadRequestException:调用CreateDomainName操作时发生错误(BadRequestException):您提供的域名已经存在。”当然存在?你能分享你的zappa\u设置.json
文件吗?问题更新。我肯定觉得我越来越接近了。我已经用一个循序渐进的指南更新了我的答案。在我的指南中,我使用了namescape和cloudflare,但您应该能够使它与使用googledomai管理的域一起工作