Tag: amazon web services

Amazon Web Services> CodeDeploy> BitBucket>我的nodejs Appspec.yml已损坏

我试图得到一个非常简单的nodejs应用程序来通过我的设置(BitBucket到AWS),我可以得到默认的例子工作: https://github.com/awslabs/aws-codedeploy-samples/tree/master/applications/SampleApp_Linux 但是,这个例子是在Apache,httpd,所以当我试图改变appspec.yml的nodejs,设置刹车。 这是我的appspec.yml: version: 0.0 os: linux files: – source: / destination: /var/www/app hooks: BeforeInstall: – location: scripts/install_dependencies timeout: 300 runas: root – location: scripts/start_server timeout: 300 runas: root install_dependencies: #!/bin/bash yum install -y nodejs npm npm install START_SERVER: #!/bin/bash node server.js

无服务器AWS Lambda Express应用程序中的摩卡testing

我有一个nodejs应用程序基于expressjs ,我正在testing使用gruntjs作为任务运行者和mochajs作为testing框架。 因此,我编写了组件testing,集成testing和unit testing,这些testing是通过grunt test执行的,或者是在开发过程中直接通过mocha test/component/v1/apiX本地执行的,而在部署过程中作为CIstream程的一部分在testingVM上执行。 现在,当考虑将此应用程序迁移到AWS Lambda(也称为无服务器)时 ,会想到以下有关我的testing和CI过程的问题(请注意,我将使用aws-serverless-express ,因此不必明确写入lambda函数) : 1)如何实现通过HTTP API请求完成的组件/ e2etesting? 2)如何实现只加载和testing应用程序的一部分的集成和unit testing? 3)如果任何一个testing失败,如何整合一个拒绝部署的新的CIstream程? 我认为问题1)大部分已经解决了:从外部testingAWS Lambda的方法有很多。 您可以执行lambda-to-lambdatesting,从testinglambda直接调用您的lambda-to-test,也可以使用来自test-lambda的HTTP通过AWS API Gateway调用lambda-to-test,如此处所述。 你也可以使用serverless-mocha-plugin进行本地lambdatesting(如果使用无服务器的话 )。 这是2)它变得有趣:一旦你的lambda部署它是一个黑匣子。 你不能执行任何没有被明确声明为lambda接口的东西。 我如何保存或重新实施现有的摩卡咖啡单元和集成testing? 3)相同:你如何让你的CI运行所有的部署testing,如果失败,拒绝部署? 这里是我自己的方法:只有在testing环境中,我才能使我的节点应用程序无服务器。 简单地让它作为经典的节点HTTP服务,通过使所有无服务器的变化有条件的取决于环境。 由于几乎没有变化,这应该是可能的和可维护的。 现在我可以像往常一样在本地运行testing,并使用grunt和mocha进行部署。 然后,如果我想确认无服务器版本也可以,我仍然可以进行最后的lambda-to-lambdatesting。

如何从AWS DynamoDB – JS lambda中的函数返回查询结果

我有一个愚蠢的问题,让我疯狂。 我有一个AWS lambda函数,可以调用Dynamo db。 我想有ddb.Scan操作到一个函数得到结果,然后将其传递给事件,但我不能返回函数内的结果… var aws = require('aws-sdk'); var ddb = new aws.DynamoDB(); function getName(userid) { ddb.scan({ TableName: "Users", ScanFilter: { "userid": { "AttributeValueList": [ {"S": userid} ], "ComparisonOperator": "EQ" } } }, function (err, data) { return data.Items[0].username; }); }; exports.handler = function (event, context) { var userid= '4vwe6jd56es59q'; var username = getName(userid); […]

无法确认NodeJS中的http端点的aws Sns订阅

我已经使用下面的一段代码来处理AWS SNS订阅和通知消息。 已configuration的http端点正在接收确认消息,但我无法通过代码进行确认。 但是,通过访问logging控制台消息中的“订阅URL”,可以手动确认它。 我已经configuration了aws和sns部分,如下所述: var aws = require('aws-sdk'); aws.config.loadFromPath(__dirname + '/awsConfig.json'); var sns = new aws.SNS(); 这是我用来处理http端点消息的以下函数。 function handleIncomingMessage(msgType, msgData) { if (msgType === 'SubscriptionConfirmation') { //confirm the subscription. console.log("Subscription Confirmation Message—>"+msgData); sns.confirmSubscription({ TopicArn: msgData.TopicArn }, onAwsResponse); } else if (msgType === 'Notification') { console.log("Notification has arrived"); } else { console.log('Unexpected message type ' […]

Node.js如何创build只能访问SNS主题的API端点?

我想从SNS发送一个HTTP请求到一个Node.js服务器上的公共API端点。 但是,我想configuration该API只接受来自该SNS主题的POST请求,而不是其他任何东西。 我可以在SNS消息中插入一个令牌,但是我不控制SNS消息。 如果电子邮件被退回,它将来自SES。 是否有可能看到请求的域名,只允许来自可信域名(本例中为AWS)?

以编程方式创buildaws API密钥并将其添加到单一function的使用计划?

我需要: 创buildAPI密钥 将新创build的API密钥添加到使用计划 在文档之后 ,我可以通过调用apigateway.createApiKey()来生成API key ,然后通过调用另一个函数来为该生成的api密钥添加使用计划。 apigateway.createUsagePlanKey()对于以后的情况似乎是最合适的function。 我可以在单个函数中执行这两个function吗,而不是象任何生成一个新的API密钥的函数那样分别调用两个函数并添加一个使用计划?

如何使用AWS Cognito SDK使用NodeJS从REST服务authentication用户?

所有! 我目前面临一个问题,即使用ClaudiaJS + Claudia-API-Builder构build的lambda函数,通过“/ api / auth”暴露在API网关上,从Cognito UserPoolvalidation用户身份。 我似乎无法find调用cognitoUser.authenticateUser成功的cognitoUser.authenticateUser 。 到目前为止,我发现的所有资源都是通过浏览器调用这个API,但是在后台我找不到任何这样做的例子。 我已经试图处理响应作为一个常规的callback,承诺和对象监听,但没有一个似乎工作,我总是最终得到一个{“消息”:“内部服务器错误”}信息作为我的回应REST服务。 还有一点很重要,那就是我对Node和Async编程还算陌生,但是请您介绍一下这段代码并告诉我这样做的正确方法,如果这个SDK被devise为从后端调用而不是前端调用? 我的App.js var ApiBuilder = require('claudia-api-builder'); var api = new ApiBuilder(); //Routes var usuario = require('./routes/usuario'); var auth = require('./routes/auth'); //Caminho default da API var API_ROOT = "simc/api"; //User Routes api.get(API_ROOT + "/f1", usuario.f1); api.get(API_ROOT + "/f2", usuario.f2); //Auth Routes api.get(API_ROOT + "/login", […]

在运行nodejs + expressjs时访问aws-lambda上下文

我刚刚开始使用AWS-Lambda,AWS-API Gateway和ExpressJs。 我在查找“ExpressJs”应用程序中如何使用AWS-Lambda“上下文”时遇到问题。 我在用着: AWS-LAMBDA AWS-API网关 NodeJs v4.3.2 ExpressJs 4.14.1 ClaudiaJs 2.7.0 在Aws Lambda中,我使用aws-serverless-express接收API网关请求并初始化节点应用程序。 以下是我从不同的教程中find的结构等 lambda.js(从API网关启动。在调用“app.js”时提供“context”variables) 'use strict' const awsServerlessExpress = require('aws-serverless-express') const app = require('./app') const server = awsServerlessExpress.createServer(app) exports.handler = (event, context) => awsServerlessExpress.proxy(server, event, context) 我app.jsexpression的核心是: var express = require('express'); … var app = express(); … app.use('/', index); … module.exports = app; […]

错误:永远检测到的脚本被信号:SIGKILL杀死

最近我有一个问题,我的服务器。 我的节点服务器停止,并永远不会重新启动它。 在我永远的日志中,我看到了这一行: error: Forever detected script was killed by signal: SIGKILL 服务器本身不会抛出错误。 事实上,服务器似乎没有任何毛刺运行,然后执行一个随机的SIGKILL。 我不知道是否AWSclosures了我的服务器,或者永远是问题,或者是节点服务器本身。 searchGoogle没有提供太多的见解。 我认为这可能与CPU高峰或内存使用率高峰有关,但两者似乎都很低(但也许有一秒钟的高峰,我不认识)。 这是以前遇到过的问题吗? 任何想法如何解决它?

DynamoDB – 如何在一次更新中创build映射并为其添加属性

我想创build一个新的地图,如果它不存在,然后添加一个属性到该地图。 像这样的东西: SET #A = if_not_exists(#A, :emptyMap), #A.#B = :somevalue 但是,上述给我的错误说Two document paths overlap with each other 我唯一想做的事情是做两个更新,一个创build任何空的地图,然后再设置属性。 有一种方法可以在单个更新中完成吗? 更新 另一个用例是创build包含其他地图的地图。 目前我能想到创build以下的唯一方法是3个独立的更新调用来创build地图,如果有必要,然后另一个更新调用来添加属性: { Entities: { A: { B: {} } }, } 一定会有更好的办法。