我尝试了此答案中的解决方案,但对我不起作用。我收到错误:
提供的执行角色无权调用 EC2 上的 CreateNetworkInterface(服务:AWSLambdaInternal;状态代码:400;错误代码:InvalidParameterValueException;请求 ID:4c8d047c-2710-4334-86cd-51b7467c6f08)
这是与错误相关的 CloudFormation:
EventLambdaFunction:
Type: AWS::Lambda::Function
Properties:
FunctionName: !Sub ${DeveloperPrefix}event-lambda-${Environment}-${DeployPhase}
Handler: EventHandler
Runtime: java8
Code:
S3Bucket: !Ref SharedBucketName
S3Key: !Sub ${WorkspacePrefix}/event-subscriber-${AppVersion}.jar
S3ObjectVersion: !Ref EventLambdaS3Version
Role: !GetAtt EventLambdaRole.Arn
Environment:
Variables:
retry_event_table_name: !Sub "${DeveloperPrefix}${AppName}-${RetryEventTableName}-${Environment}-${DeployPhase}"
test_enabled: true # TODO: Remove once endpoint provided.
VpcConfig:
SecurityGroupIds:
- !Ref LambdaSecurityGroup
SubnetIds:
- Fn::ImportValue: !Sub ${VPCStackName}-SubnetPrivateL
- Fn::ImportValue: !Sub ${VPCStackName}-SubnetPrivateR
Timeout: 28
MemorySize: 256
EventLambdaRole:
Type: AWS::IAM::Role
Properties:
RoleName: !Sub ${DeveloperPrefix}${AppName}-${Environment}-${DeployPhase}-EventLambdaRole
AssumeRolePolicyDocument:
Statement:
- Effect: Allow
Principal:
Service: …Run Code Online (Sandbox Code Playgroud) amazon-ec2 amazon-web-services aws-cloudformation aws-lambda
我正在尝试使用 aws cli 调用我的 lambda:
$ aws lambda invoke \
--function-name soc-update-dynamodb-java \
--invocation-type Event \
--payload file://invoke-payload.json \
response.json
Run Code Online (Sandbox Code Playgroud)
但是,我收到此消息:
调用 Invoke 操作时发生错误 (InvalidRequestContentException):无法将请求正文解析为 json:[Source: (byte[])"E?(?????U???? ?????k.....
payload.json 内容是一个类似 s3 事件的 json:
{
"Records": [
{
"eventVersion": "2.0",
"eventSource": "aws:s3",
"awsRegion": "eu-central-1",
"eventTime": "1970-01-01T00:00:00.000Z",
"eventName": "ObjectCreated:Put",
"userIdentity": {
"principalId": "EXAMPLE"
},
"requestParameters": {
"sourceIPAddress": "127.0.0.1"
},
"responseElements": {
"x-amz-request-id": "EXAMPLE123456789",
"x-amz-id-2": "EXAMPLE123/5678abcdefghijklambdaisawesome/mnopqrstuvwxyzABCDEFGH"
},
"s3": {
"s3SchemaVersion": "1.0",
"configurationId": "testConfigRule",
"bucket": {
"name": "soc-connect",
"ownerIdentity": {
"principalId": "EXAMPLE"
},
"arn": …Run Code Online (Sandbox Code Playgroud) 如何将aws云监视警报连接到lambda函数调用?
我通过AWS CloudFormation模板以编程方式向我们创建的作为云形成堆栈一部分的ELB添加云监视警报.我希望将警报发送到lambda函数,该函数将消息发布到Slack.虽然警报有效,并且SNS配置对我来说似乎是正确的,但从不调用lambda函数.
lambda函数遵循以下示例:
http://inopinatus.org/2015/07/13/hook-aws-notifications-into-slack-with-a-lambda-function/
lambda函数工作,我可以通过aws控制台发送测试数据,从而发送一条消息发送给Slack.
使用看起来正确的云监控警报创建负载均衡器:
警报似乎配置为将警报发送到正确的SNS主题:
有一个SNS订阅该主题,lambda函数作为它的端点:
警报触发时会触发警报并将消息发送到正确的主题:
但是从不调用lambda函数:
但是,如果我在lambda函数上手动添加SNS主题作为"事件源",则会在警报触发和发布Slack消息时调用它.
我是否误解了如何将云监视报警连接到lambda函数?或者我缺少一个小细节?
如果这种方法不起作用,并且将lambda函数连接到云监视警报的唯一方法是将SNS主题添加为"事件源",通过AWS CloudFormation模板执行此操作的适当方法是什么?我没有看到修改现有资源的明显方法,例如固定的lambda函数.
这是我的CloudFormation模板:
"GenericSlackAlertSNSTopic" : {
"Type" : "AWS::SNS::Topic",
"Properties" : {
"Subscription" : [ {
"Endpoint" : "arn:aws:lambda:us-east-1:[...]:function:snsToSlack",
"Protocol" : "lambda"
} ]
}
},
"ELBNoTrafficAlarm": {
"Type": "AWS::CloudWatch::Alarm",
"Properties": {
"Namespace" : "AWS/ELB",
"AlarmDescription": "Alarm for no apparent traffic on an ELB.",
"AlarmActions": [{
"Ref": "GenericSlackAlertSNSTopic"
}],
"InsufficientDataActions": [{
"Ref": "GenericSlackAlertSNSTopic"
}],
"MetricName": "RequestCount",
"Statistic": "Sum",
"Dimensions" : [ {
"Name" : "LoadBalancerName",
"Value" …Run Code Online (Sandbox Code Playgroud) amazon-web-services amazon-sns aws-cloudformation amazon-cloudwatch aws-lambda
我意识到我需要为AWS Lambda函数分配比所需内存更多的内存,否则我得到:
{
"errorMessage": "Metaspace",
"errorType": "java.lang.OutOfMemoryError"
}
Run Code Online (Sandbox Code Playgroud)
例如,我有一个分配了128MB的Lambda函数,它会随着该错误一直崩溃,而在控制台中它会显示"最大内存使用56 MB".
然后我分配256MB,它不再崩溃,但它总是给我一个75到85MB之间的"最大内存使用".
怎么会?谢谢.
我需要从单个lambda函数连接弹性缓存和dynamo db.我的代码是
exports.handler = (event, context, callback) => {
var redis = require("redis");
var client;
function connectRedisClient() {
client = redis.createClient(6379, "dgdfgdfgdfgdfgdfgfd.use1.cache.amazonaws.com", { no_ready_check: true });
}
connectRedisClient();
client.set('sampleKey', 'Hello World', redis.print);
console.log("set worked");
client.quit();
var AWS = require("aws-sdk");
var docClient = new AWS.DynamoDB.DocumentClient();
var table = "dummy";
var year = 2015;
var title = "The Big New Movie";
var params = {
TableName: table,
Item: {
"userid": "manafcj",
"year": year,
"title": title,
"test1": [645645, 7988],
"info": {
"plot": "Nothing …Run Code Online (Sandbox Code Playgroud) caching amazon-web-services amazon-elasticache amazon-vpc aws-lambda
我有一个非常简单的节点lambda函数,它读取其中的打包文件的内容.我将代码上传为zip文件.目录结构如下.
index.js
readme.txt
Run Code Online (Sandbox Code Playgroud)
然后在我的index.js文件中:
fs.readFile('/var/task/readme.txt', function (err, data) {
if (err) throw err;
});
Run Code Online (Sandbox Code Playgroud)
我一直收到以下错误NOENT:没有这样的文件或目录,打开 '/var/task/readme.txt'.
我也试过./readme.txt.
我错过了什么?
我正在尝试为我的应用程序自动化部署管道.这是自动化架构,我想出了:

如您所见,我使用codePipeline和codeBuild来自动部署.我的后端基于无服务器框架,它在kick sls deploy命令上部署lambda函数.这就是我没有使用codeDeploy进行传统部署的原因.buildspec.yml文件看起来像这样:
version: 0.1
phases:
install:
commands:
– apt-get -y update
– npm install -g serverless@1.9.0
build:
commands:
– cd nj2jp/serverless && npm install
post_build:
commands:
– serverless deploy –verbose
artifacts:
files:
– serverless.yml
discard-paths: yes
Run Code Online (Sandbox Code Playgroud)
现在,我有3个关于CodeBuild和Serverless的问题:
问题1:该命令sls deploy取决于一个名为config.ymldb password的秘密.此文件不会被检入git.您认为config.yml在codeBuild中包含的最佳方式是什么?
问题2: 如果我们必须使用codeDeploy部署传统的EC2应用程序,则可以使用AWS完成回滚.在无服务器的情况下,我们不使用codeDeploy,无服务器也支持回滚功能.我们如何在codePipeline中利用无服务器回滚? …
amazon-web-services aws-lambda aws-codepipeline serverless-framework aws-codebuild
我在VS 2013中处理现有的Windows服务项目.
我已经添加了一个web API Controller类,我现在无法记住,如果它是一个(v2.1)或(v1)控制器类....无论如何我称之为SyncPersonnelViaAwsApiController
我试图从AWS lambda中调用它...所以如果我调用GET
public string Get(int id)
{
return "value";
}
Run Code Online (Sandbox Code Playgroud)
with const req = https.request(' https:// actualUrlAddress/api/SyncPersonnelViaAwsApi/Get/4 ',(res)=> {
我知道returned body: undefined"value"哪个是正确的.但是,如果我试着打电话
const req = https.request('https://actualUrlAddress/api/SyncPersonnelViaAwsApi/SapCall', (res) => {
Run Code Online (Sandbox Code Playgroud)
我明白了 returned body: undefined{"Message":"The requested resource does not support http method 'GET'."}
//// POST api/<controller>
public string SapCall([FromBody]string xmlFile)
{
string responseMsg = "Failed Import User";
if (!IsNewestVersionOfXMLFile(xmlFile))
{
responseMsg = "Not latest version of file, update not performed";
}
else
{
Business.PersonnelReplicate personnelReplicate …Run Code Online (Sandbox Code Playgroud) 我正在尝试将AWS X射线实施到我当前的项目中(使用Node.js和Serverless框架).我试图将X射线连接到我的lambda函数之一,我遇到了问题
Error: Failed to get the current sub/segment from the context.
at Object.contextMissingRuntimeError [as contextMissing] (/.../node_modules/aws-xray-sdk-core/lib/context_utils.js:21:15)
at Object.getSegment (/.../node_modules/aws-xray-sdk-core/lib/context_utils.js:92:45)
at Object.resolveSegment (/.../node_modules/aws-xray-sdk-core/lib/context_utils.js:73:19).....
Run Code Online (Sandbox Code Playgroud)
代码如下:
import { DynamoDB } from "aws-sdk";
import AWSXRay from 'aws-xray-sdk';
export const handler = async (event, context, callback) => {
const dynamo = new DynamoDB.DocumentClient({
service: new DynamoDB({ region })
});
AWSXRay.captureAWSClient(dynamo.service);
try {
// call dynamoDB function
} catch(err) {
//...
}
}
Run Code Online (Sandbox Code Playgroud)
对于这个问题,我使用的解决方案来自 https://forums.aws.amazon.com/thread.jspa?messageID=821510褆
我试过的另一个解决方案来自https://forums.aws.amazon.com/thread.jspa?messageID=829923ꧣ
代码就像
import AWSXRay from 'aws-xray-sdk';
const AWS = …Run Code Online (Sandbox Code Playgroud) amazon-web-services node.js aws-lambda serverless-framework aws-xray
使用Python 3.7运行时抛出的未处理异常似乎没有像在Python 3.6中那样记录到CloudWatch.如何在Python 3.7中设置记录器来捕获此信息?
1.像这样创建一个lambda函数:
import logging
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
def lambda_handler(event, context):
logger.info("This shows fine")
raise Exception("I failed")
Run Code Online (Sandbox Code Playgroud)
2.使用Python 3.6运行时运行此函数
START RequestId: a2b6038b-0e5f-11e9-9226-9dfc35a22dcc Version: $LATEST
[INFO] 2019-01-02T07:25:52.797Z a2b6038b-0e5f-11e9-9226-9dfc35a22dcc //This shows fine
I failed: Exception
Traceback (most recent call last):
File "/var/task/lambda_function.py", line 9, in lambda_handler
raise Exception("I failed")
Exception: I failed
END RequestId: a2b6038b-0e5f-11e9-9226-9dfc35a22dcc
REPORT RequestId: a2b6038b-0e5f-11e9-9226-9dfc35a22dcc Duration: 1.12 ms Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 21 MB
Run Code Online (Sandbox Code Playgroud)
2.切换到Python 3.7运行时并再次运行...没有堆栈跟踪
START …Run Code Online (Sandbox Code Playgroud) aws-lambda ×10
node.js ×3
amazon-ec2 ×1
amazon-sns ×1
amazon-vpc ×1
aws-cli ×1
aws-xray ×1
c# ×1
caching ×1
get ×1
lambda ×1
post ×1
python ×1
python-3.x ×1