我正在使用AWS API Gateway和AWS Lambda.在尝试部署API时,我经常会遇到此类错误消息.错误消息表示选择部署阶段.但我仍然选择并尝试部署!但同样的错误发生!
在这个API中,我有多个具有多种方法的资源.以前我成功地以相同的方式部署这个相同的API.但现在我无法部署它.
请有人帮我修理它.另外:我不使用AWS CLI工具,只使用AWS Web仪表板.
我使用云形成在VPC中创建了一个lambda的堆栈.当我尝试删除整个堆栈时,需要40-45分钟的时间.
我的Iam角色具有以下权限:
Action:
- ec2:DescribeInstances
- ec2:CreateNetworkInterface
- ec2:AttachNetworkInterface
- ec2:DescribeNetworkInterfaces
- ec2:DeleteNetworkInterface
- ec2:DetachNetworkInterface
- ec2:ModifyNetworkInterfaceAttribute
- ec2:ResetNetworkInterfaceAttribute
- autoscaling:CompleteLifecycleAction
- iam:CreateRole
- iam:CreatePolicy
- iam:AttachRolePolicy
- iam:PassRole
- lambda:GetFunction
- lambda:ListFunctions
- lambda:CreateFunction
- lambda:DeleteFunction
- lambda:InvokeFunction
- lambda:GetFunctionConfiguration
- lambda:UpdateFunctionConfiguration
- lambda:UpdateFunctionCode
- lambda:CreateAlias
- lambda:UpdateAlias
- lambda:GetAlias
- lambda:ListAliases
- lambda:ListVersionsByFunction
- logs:FilterLogEvents
- cloudwatch:GetMetricStatistics
Run Code Online (Sandbox Code Playgroud)
如何改善堆栈的删除时间?
有没有办法在 AWS 控制台中按“最近”到最旧来过滤 CloudWatch 日志流?我不得不向下滚动得难以置信的远才能看到我最近的日志消息。
我尝试过按 30 秒 - 5 分钟进行过滤,现在可以使用,我只是认为可能有一种更简单的方法来列出所有日志流,这些日志流从最近的顶部而不是最旧的开始。
我有一个 SQS 队列,我想在消息到达队列时触发 lambda 函数。我已经编写了 lambda 函数,当我单击“测试”按钮时它可以成功运行。当我转到 SQS 并尝试将其配置为 lambda 触发器时,我看到以下错误消息。
我使用相同的用户和角色创建了 SQS 队列和 lambda 函数,并且 lambda 函数对同一角色具有执行权限。
我还添加了 SQS receiveMessage 权限,但它似乎没有什么区别,除非我在设置时做错了什么。
什么可能导致问题?
谢谢你的帮助
我目前正在 nodejs 中创建一个 Dialogflow 聊天机器人,在部署我的代码时,我收到一条错误消息。我试图取消对大多数事情的注释,只留下基本功能代码,但我仍然无法让它工作。我不完全确定这里的问题是什么
'use strict';
import {getAPIresponse} from "./api/index.js";
// const http = require('https');
// const respond = fulfillmentText => {
// return {
// statusCode: 200,
// body: JSON.stringify({
// fulfillmentText
// }),
// headers: {
// "Content-Type": "application/json"
// }
// }
//
// };
module.exports.dining = async (event,context) => {
const incoming= JSON.parse(event.body).queryResult;
console.log(`INCOMING: ${incoming.parameters.hall}`);
const {
displayName
} = incoming.intent;
console.log(displayName);
//const menu = getAPIresponse('https://esb.prod.uds.harvard.edu/api/dining/2.0/','events?locationId=36');
//console.log(menu);
// if(displayName === 'dining'){
// if(incoming.parameters.meal === 'breakfast'){ …Run Code Online (Sandbox Code Playgroud) 我已将查看器请求和源响应 Lambda 函数部署到 CloudFront 分配,这些函数正在触发,但未记录到 CloudWatch。我花了大量时间研究这个主题,并浏览了其他帖子的所有建议,包括:
有趣的是,当我故意将错误编码到一个 Lambda 函数中时,我确实在一个名为/aws/cloudfront/LambdaEdge/<cloudfront distribution id>包含错误日志的组中创建了日志,但是这里的 console.log 语句没有输出。
在我的一生中,我无法弄清楚如何将所有请求(成功和失败)记录到 CloudWatch,其中包含使用 console.log() 的调试语句。
AWSServiceRoleForCloudFrontLogger 包含一个策略AWSCloudFrontLogger:
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:*:*:/aws/cloudfront/*"
}
]
}
Run Code Online (Sandbox Code Playgroud)
编辑:
以下是 AWS 支持建议的 AWS 角色。我可以确认这有效并解决了问题。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": [
"arn:aws:logs:*:*:*"
]
}
]
}```
Run Code Online (Sandbox Code Playgroud) amazon-web-services amazon-cloudfront aws-lambda aws-lambda-edge
我使用 AWS lambda 已有几个月了。我当时正在使用 lambda,最终一切都很好。第二天我回来处理它,但我什至无法让 Visual Studio 使用模拟 Lambda 测试工具启动应用程序。
我最终创建了一个空的 lambda,它只返回输入(AWS 为您提供的标准项目代码作为模板),甚至无法运行。我按下播放按钮启动模拟 Lambda 测试工具,它看起来会运行几秒钟,然后关闭。命令窗口甚至没有弹出。
这是模板项目中的代码。
public string FunctionHandler(string input, ILambdaContext context)
{
return input?.ToUpper();
}
Run Code Online (Sandbox Code Playgroud)
这就是我在 VS 的输出窗口中得到的所有内容:
目标进程退出,但未引发 CoreCLR 启动事件。确保目标进程配置为使用 .NET Core。如果目标进程不在 .NET Core 上运行,则可能会出现这种情况。程序“[16700] dotnet-lambda-test-tool-2.1.exe:Program Trace”已退出,代码为 0 (0x0)。程序“[16700] dotnet-lambda-test-tool-2.1.exe”已退出,代码为-2147450726 (0x8000809a)。
我尝试过重新安装AWS工具包,也尝试过重新安装Visual Studio。这是 VS 2017 和 VS 2019 的问题。我刚刚安装了 2019,看看是否可以解决该问题。任何帮助,将不胜感激。
我正在尝试在 AWS Lambda 层上运行 python 函数,但我没有找到有关 terraform 的任何文档来使用 AWS 提供的 lambda 层。如何使用 AWS 提供的 lambda 层 AWSLambda-Python27-SciPy1x和运行时Python 2.7?
#----compute/lambda.tf----
data "archive_file" "lambda_zip" {
type = "zip"
source_file = "index.py"
output_path = "check_foo.zip"
}
resource "aws_lambda_function" "check_foo" {
filename = "check_foo.zip"
function_name = "checkFoo"
role = "${aws_iam_role.iam_for_lambda_tf.arn}"
handler = "index.handler"
source_code_hash = "${data.archive_file.lambda_zip.output_base64sha256}"
# i want to use lambda layer - AWSLambda-Python27-SciPy1x and run this function on it
runtime = "python2.7"
}
Run Code Online (Sandbox Code Playgroud) amazon-web-services aws-lambda terraform terraform-provider-aws
如果您在 Lambda 运行时中使用 aws-sdk,则无需向开发工具包提供凭证,因为它会自动从该 Lambda 函数的执行角色获取凭证。
我很好奇这在幕后是如何工作的?SDK 是否从某些环境变量中读取凭据?它实际上是如何从 Lambda 运行时获取凭证的?
我正在 AWS lambda 控制台中尝试此操作。我已经在终端上安装了 npm install @aws-sdk/client-kinesis 并使用压缩文件并创建了一个具有 client-kinesis 的 lambda 层。
如果使用以下内容就可以了!
// ES5 example
const { KinesisClient, AddTagsToStreamCommand } = require("@aws-sdk/client-kinesis");
exports.handler = async (event) => {
// TODO implement
const response = {
statusCode: 200,
body: JSON.stringify('Hello from Lambda!'),
};
return response;
};
Run Code Online (Sandbox Code Playgroud)
如果我使用以下内容,则会出现错误 -
// ES5 example
const { KinesisClient, AddTagsToStreamCommand } = require("@aws-sdk/client-kinesis");
exports.handler = async (event) => {
// TODO implement
const response = {
statusCode: 200,
body: JSON.stringify('Hello from Lambda!'),
};
return response; …Run Code Online (Sandbox Code Playgroud)