gpt4 book ai didi

aws-lambda - Nuxt3 AWS Lambda 部署在 .output/public 目录中出现 CodePipeline 和 CloudFormation 错误

转载 作者:行者123 更新时间:2023-12-03 07:39:27 27 4
gpt4 key购买 nike

我正在尝试通过 CodePipeline/CodeBuild buildspec.yml 在 AWS Lambda 上部署 Nuxt3 应用程序运行 CloudFormation 堆栈模板。这是 template/staging.yml 的一部分设置 AWS Lambda

FrontendLambdaFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: ../.output
Handler: server/index.handler

我使用了NITRO_PRESET=aws-lambda npm run build创建 AWS Lambda 兼容构建,导出 server/index.mjs 中的主处理程序文件。

虽然构建成功,但当我尝试打开连接到 Lambda 的 API 网关端点时,我看到没有任何 CSS 的 HTML 内容,并看到类似的错误

https://my-api-endpoint-url.amazonaws.com/_nuxt/entry-5a589e33.mjs net::ERR_ABORTED 403

它说禁止,但不确定我应该更改什么以使其可访问。显然,.output/public 下的所有文件都发生了这种情况。文件夹。

当我这样做时NITRO_PRESET=node-server npm run build本地然后运行npx nuxt preview ,它加载于 http://localhost使用正确的 CSS 完全没问题。

最佳答案

我能够根据此 GitHub 评论修复它: https://github.com/nuxt/framework/issues/3586#issuecomment-1095695526

如上所述,aws-lambda 硝基预设不支持提供静态文件。这可能是设计使然,因为 AWS API Gateway 默认不支持提供二进制文件。

我选择了(第二个)选项,将 .output/public 目录中的文件放在 S3 存储桶上并公开该存储桶,分别提供这些文件。

buildspec.yml 中的一个简单的 aws s3sync 命令有效,每次有新构建时都会将新编译的 Assets 推送到 S3 存储桶。

一旦这一切开始工作,我就切换到 CloudFront 发行版来提供这些静态 Assets ,并阻止 S3 存储桶上的公共(public)访问。

关于aws-lambda - Nuxt3 AWS Lambda 部署在 .output/public 目录中出现 CodePipeline 和 CloudFormation 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73345515/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com