我正在尝试向我的 terraform 脚本添加逻辑,以便在创建 lambda 时添加 CW 保留逻辑,以便我们的日志在 30 天后清除。我看到的是,当运行 terraform 来更新现有的 lambda(在添加新的保留逻辑之前部署的)时,我的工作失败并出现以下错误。
aws_cloudwatch_log_group.lambda-deploy:发生 1 个错误:
aws_cloudwatch_log_group.lambda-deploy:创建 CloudWatch 日志组失败:ResourceAlreadyExistsException:指定的日志组已存在状态代码:400,请求 ID:e500eb50-4a81-11e9-9c08-7152b4a0ad31:CloudWatch 日志组'/aws/lambda/{lambda -name}'已经存在。
以下是我设置 terraform 代码的方式:
resource "aws_lambda_function" "lambda-deploy" {
filename = "${var.filename}"
function_name = "${var.functionname}"
role = "${var.role}"
handler = "${var.handler}"
runtime = "${var.runtime}"
publish = "${var.publish}"
memory_size = "${var.memory_size}"
timeout = "${var.timeout}"
description = "${var.description}"
layers = "${var.layers}"
environment {
variables = "${var.envVars}"
}
tags {
PLATFORM = "${var.tag_PLATFORM}"
BUSINESS_UNIT = "${var.tag_BUSINESS_UNIT}"
CLIENT = "${var.tag_CLIENT}"
BUSINESS_REGION = "${var.tag_BUSINESS_REGION}"
}
vpc_config …Run Code Online (Sandbox Code Playgroud) 这在文档中对我来说确实不清楚。而且控制台的配置非常混乱。
在负载均衡器关闭后以 Fargate 模式运行的 Docker 集群是否会在不使用时向我收费?
冷启动怎么办?我需要像 Lambda 一样在 Fargate 中关心这个吗?
它的水平度比 Lambda 低吗?连接到 API Gateway 的 lambda 将为每个并发请求生成一个新函数,Fargate 也会这样做吗?或者负载均衡器会决定它吗?
我已经在 Lambda 中运行 Flask/Django 应用程序一段时间了(使用 Serverless/Zappa),将它们迁移到 Fargate 有什么好处吗?
它似乎比 Lambda 更昂贵,但如果 Lambda 限制不是问题,那么 Lambda 应该总是更好的选择,对吗?
amazon-web-services amazon-ecs aws-lambda serverless aws-fargate
现在,我正在遵循无服务器堆栈团队准备的指南。他们正在使用React许多AWS功能,例如lambda和API getaway。为了练习它,我正在使用无服务器堆栈重写我的旧Express示例之一。
我还看到了一个名为 的库或工具aws-serverless-express。express这个库或工具允许您以这种形式运行您的应用程序serverless。
这将是一个奇怪的问题,但我想知道本机无服务器构建和无服务器快速之间的区别。
Cold start已经是劣势了。我知道这一点。除此之外,无服务器快递还有哪些负面或正面的方面?原生无服务器
有哪些消极或积极的一面?
我对 SignalR 感到困惑,特别是在使用 Azure SignalR 服务时,在考虑使用 Azure Functions 的无服务器实现时更是如此。
我有一个 Web 应用程序和一个 Azure Function 应用程序,其中实现了协商功能。客户端上的 JavaScript 已成功协商并能够连接到 Azure SignalR 服务,到目前为止一切顺利。
附带问题:CORS 设置是阻止任何老人连接并获取令牌的唯一因素吗?这本身足够安全吗?
之后这就是我感到困惑的地方。我现在有一个 Azure SignalR 服务和一个 Azure Function 应用程序,在建立与 Azure SignalR 服务的客户端连接后,Function 应用程序有什么用处?
在客户端交互方面,我需要做一些事情,例如加入一个组并向该组广播(从客户端上的 JavaScript),我假设这些将是函数应用程序上的两个附加函数(Http 触发器)?
假设我对上述内容是正确的,如何阻止任何人通过函数应用程序 http 端点调用“广播”函数?至少在本地,我可以从邮递员调用它,而无需提供在初始协商响应中收到的任何信息。
我还需要从后端代码(.net 标准)将消息推送到组,这是通过调用函数应用程序还是直接调用 Azure SignalR 服务来完成的?
提前致谢。
我创建了一个简单的应用程序,它接受 URL 并将其转换为 PDF。它将生成的 PDF 存储在 S3 存储桶中并返回 PDF 的 URL。它使用 Chrome(无头运行)将 URL 转换为 PDF。我使用了无服务器框架、AWS Lambda 和 chrome-aws-lambda npm 包。当我使用无服务器在本地执行此设置时,一切都很好。我可以使用 postman 发出带有 URL 的请求,它会返回生成的 PDF 的 URL。当我将此设置部署到 AWS Lambda 时,它返回 502 内部服务器错误响应。当我查看应用程序的 AWS 日志时,我看到以下内容:
{
"errorType": "Error",
"errorMessage": "ENOENT: no such file or directory, open '//../bin/chromium.br'",
"code": "ENOENT",
"errno": -2,
"syscall": "open",
"path": "//../bin/chromium.br",
"stack": [
"Error: ENOENT: no such file or directory, open '//../bin/chromium.br'"
]
}
Run Code Online (Sandbox Code Playgroud)
这是应用程序的主要处理程序:
import AWS from 'aws-sdk'
import middy from 'middy'
import chromium from 'chrome-aws-lambda' …Run Code Online (Sandbox Code Playgroud) google-chrome amazon-web-services node.js aws-lambda serverless
我正在尝试通过无服务器 Lambda 代理外部 API。尝试以下代码示例:http://localhost:3000/users/1返回 200 但正文为空。我必须忽略一些东西,因为http://localhost:3000/users/11返回 404 (如预期)。
索引.js
'use strict';
const serverless = require('serverless-http');
const express = require('express');
const {
createProxyMiddleware
} = require('http-proxy-middleware');
const app = express();
const jsonPlaceholderProxy = createProxyMiddleware({
target: 'http://jsonplaceholder.typicode.com',
changeOrigin: true,
logLevel: 'debug'
});
app.use('/users', jsonPlaceholderProxy);
app.get('/', (req, res) => {
res.json({
msg: 'Hello from Serverless!'
})
})
const handler = serverless(app);
module.exports.handler = async (event, context) => {
try {
const result = await handler(event, context);
return result;
} …Run Code Online (Sandbox Code Playgroud) 我觉得我需要在这里提供很多背景信息才能理解问题的全部范围,所以如果这有点长或最终提供了太多信息,请提前道歉,我只是想避免很多人跟随尽我所能提出问题和澄清请求。
我有一个技术交接的项目。它曾经在不同所有者的不同 AWS 账户下进行生产。我正在尝试在我控制的 AWS 账户中重新启动它,但其中一个软件包给我带来了一些问题。
它使用 Serverless 来配置几个 S3 存储桶及其访问策略、几个 IAM 角色和一堆 ApiGateway 方法。该包依赖嵌套堆栈来绕过 200 个资源限制,如此处所述。
最后,CircleCI 连接的 IAM 用户已AdministratorAccess附加策略。
在构建的这一步中,我不断收到 CircleCI 的失败消息
node_modules/.bin/serverless deploy --verbose --stage develop --region us-east-1 --package ./.serverless
Run Code Online (Sandbox Code Playgroud)
故障的确切性质似乎不一致,即它并不总是在同一位置发生故障。在某些时候,资源无法创建,整个过程会回滚。以下是日志中运行失败的几个示例,其中包含 +/- 5 行,后面是 Serverless 报告的实际错误
CloudFormation - CREATE_COMPLETE - AWS::ApiGateway::Method - ApiGatewayMethod001VarOptions
CloudFormation - CREATE_COMPLETE - AWS::ApiGateway::Method - ApiGatewayMethod002VarOptions
CloudFormation - CREATE_COMPLETE - AWS::ApiGateway::Method - ApiGatewayMethod003VarOptions
CloudFormation - CREATE_COMPLETE - AWS::ApiGateway::Method - ApiGatewayMethod004VarOptions
CloudFormation - …Run Code Online (Sandbox Code Playgroud) amazon-web-services aws-cloudformation circleci serverless infrastructure-as-code
我正在尝试使用无服务器框架将图像上传到 S3 存储桶。当我在部署后调用端点时,代码失败并出现“访问被拒绝”错误。我究竟做错了什么?
使用“无服务器日志 -f fileDownload”时出现错误:
ERROR Unhandled Promise Rejection {"errorType":"Runtime.UnhandledPromiseRejection","errorMessage":"AccessDenied: Access Denied","reason":{"errorType":"AccessDenied","errorMessage":"Access Denied","code":"AccessDenied","message":"Access Denied","region":null,"time":"2020-05-08T14:06:11.767Z","requestId":"874D7C86A4C6BE45","extendedRequestId":"r8xyvcrK9su5c+slhX5L/uh4/Y/sdFnUgPcebHpSTNpbnf39EnAZJET750P8t0iXy8UR81SiYZc=","statusCode":403,"retryable":false,"retryDelay":17.606445772028543,"stack":
["AccessDenied: Access Denied"
," at Request.extractError (/var/task/node_modules/aws-sdk/lib/services/s3.js:835:35)"
," at Request.callListeners (/var/task/node_modules/aws-sdk/lib/sequential_executor.js:106:20)"
," at Request.emit (/var/task/node_modules/aws-sdk/lib/sequential_executor.js:78:10)"
," at Request.emit (/var/task/node_modules/aws-sdk/lib/request.js:683:14)"
," at Request.transition (/var/task/node_modules/aws-sdk/lib/request.js:22:10)"
," at AcceptorStateMachine.runTo (/var/task/node_modules/aws-sdk/lib/state_machine.js:14:12)"
," at /var/task/node_modules/aws-sdk/lib/state_machine.js:26:10"
," at Request.<anonymous> (/var/task/node_modules/aws-sdk/lib/request.js:38:9)"
," at Request.<anonymous> (/var/task/node_modules/aws-sdk/lib/request.js:685:12)"
," at Request.callListeners (/var/task/node_modules/aws-sdk/lib/sequential_executor.js:116:18)"
]}
,"promise":{},"stack":
["Runtime.UnhandledPromiseRejection: AccessDenied: Access Denied"
," at process.<anonymous> (/var/runtime/index.js:35:15)"
," at process.emit (events.js:310:20)"
," at process.EventEmitter.emit (domain.js:482:12)"
," at processPromiseRejections (internal/process/promises.js:209:33)"
," …Run Code Online (Sandbox Code Playgroud) 我正在设置一个 Azure Function 应用程序,该应用程序具有多个同时或大约同时触发的计时器触发器。我对这里的措辞感到困惑: https: //learn.microsoft.com/fi-fi/azure/azure-functions/functions-scale
消耗计划中的 Functions 主机的每个实例仅限于 1.5 GB 内存和 1 个 CPU。主机的实例是整个函数应用程序,这意味着函数应用程序中的所有函数共享实例内的资源并同时扩展。
这是否意味着使用计时器触发器执行的每个脚本都会分配 1.5 GB 内存,或者是否意味着所有同时运行的脚本共享 1.5 GB 内存?
我使用的是 Windows 8。
我用yarn安装了无服务器框架。
yarn add global serverless
serverless在 Git Bash 中
运行命令会输出这个奇怪的路径/bin/sh: /usr/local/bin/../../../../../Users/tempuser/AppData/Local/Yarn/Data/global/node_modules/.bin/serverless: No such file or directory
尝试修复它:删除node_modules,再次安装。没有帮助。
有谁知道如何修理它?
提前致谢。
serverless ×10
aws-lambda ×3
node.js ×2
amazon-ecs ×1
amazon-s3 ×1
aws-fargate ×1
azure ×1
bash ×1
c# ×1
circleci ×1
express ×1
hadoop-yarn ×1
http ×1
lambda ×1
proxy ×1
signalr ×1
terraform ×1
windows ×1