我有一个网站(静态坐在s3),内容从s3提供.我打算写一个休息api(节点或对建议开放).当前端进行角度$ http调用时,例如,如果我的网站名为example.com,那么调用将是类似相对url(/ Update)的解决方案.
我不确定,我应该使用什么类型的aws服务来部署我的后端代码.
更新
我正在使用Codestar,使用Express Web服务.这是我的template.yml.和路线.代码星构建很好,但部署失败.
template.yml
AWSTemplateFormatVersion: 2010-09-09
Transform:
- AWS::Serverless-2016-10-31
- AWS::CodeStar
Parameters:
ProjectId:
Type: String
Description: AWS CodeStar projectID used to associate new resources to team members
Resources:
HelloWorld:
Type: AWS::Serverless::Function
Properties:
Handler: index.handler
Runtime: nodejs4.3
Role:
Fn::ImportValue:
!Join ['-', [!Ref 'ProjectId', !Ref 'AWS::Region', 'LambdaTrustRole']]
Events:
GetEvent:
Type: Api
Properties:
Path: /
Method: get
PostEvent:
Type: Api
Properties:
Path: /
Method: post
GetItemsBylId:
Type: AWS::Serverless::Function
Properties:
Handler: index.handler
Runtime: nodejs4.3
Role:
Fn::ImportValue:
!Join ['-', [!Ref 'ProjectId', …Run Code Online (Sandbox Code Playgroud) amazon-s3 amazon-ec2 amazon-web-services angularjs aws-lambda
我经历了构建Alexa技能的练习,以便从日历中阅读本地事件.这一切都很好,除了每当美国东部时间晚上7点或之后的事件开始时,技能会在第二天将其读出.
这似乎是一个时区问题.我在Amazon Lambda上托管逻辑,我认为它设置为UTC.将我的Google日历设置为UTC无济于事.添加process.env.TZ = 'America/New_York'到我的JavaScript node.js代码也无济于事.
我被告知,出于隐私原因,我无法发现Alexa用户的时区.但我不需要发现技能用户的时区,因为这是一个安全的假设,他们都与我的本地事件日历,东部日光在同一时区.我需要做的就是让lambda知道第二天晚上7点到当地时间午夜之间的事件不会发生.任何想法我能做什么?谢谢.
我想做什么:
我想要做的是有一个url,它会向调用者返回一个CSV文件,该文件本质上是一个数据导出.我希望这仍然是一个无服务器的解决方案.
我做了什么:
我用我想要的URL创建了一个AWS API Gateway.我创建了一个lambda,它将查询数据库并创建该数据的CSV字符串.该数据放在JSON对象中并返回.然后,API网关从json对象获取CSV数据,并使用适当的标头将CSV返回给调用者,以指示它是CSV和附件.从浏览器测试我会像我预期的那样自动下载.
我看到的问题:
这很有效,直到有大量的数据,我开始得到"体型太长".
我试图解决:
我做了一些谷歌搜索,我看到其他人有类似的问题.在一个解决方案中,我看到他们返回了他们创建的文件的链接.这个解决方案似乎对他们可行,因为他们有一台服务器 对于我的无服务器架构,它似乎有点棘手.我可以把文件存储到S3然后我必须返回一个链接到S3.这似乎可以工作,但感觉不像我错过配置选项.它也感觉就像通过返回s3 url来暴露实现.
我一直在寻找教程和人们做类似事情的例子,我没有找到任何东西.
我的问题:
有没有办法做到这一点?还有其他我不知道的解决方案吗?如何从较大尺寸的API网关返回文件,在本例中为CSV
我有一个案例,我想删除请求中的cookie并将请求发送到另一个服务器并显示对最终用户的响应.
例:
client -> x.website.com -> remove cookie -> y.website.com
当前解决方案
client -> x.website.com -> ec2 instance, nginx proxy, remove cookie -> y.website.com
我想在中间删除ec2实例,因为它很昂贵.
我可以使用AWS Resources实现任何方式吗?
我想在每次发送SQS消息时调用lambda.我尝试使用以下模式设置Cloudwatch事件的规则:
{
"source": [
"aws.sqs"
]
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,lambda永远不会被调用.我已经确保lambda的角色具有SQS策略.我怎样才能做到这一点?
我正在接收AWS IoT上的感知数据,并使用规则将这些值传递给Lambda函数.在用Python编码的Lambda函数中,我需要根据最新的n值进行计算.
访问先前参数的最佳方法是什么?
我有,我想返回从AWS拉姆达数据ATLEAST 10MB价值的情况下,因为知道AWS拉姆达的限制,我们不能给予回复超过6MB以上.
任何解决方案将不胜感激?
我正在尝试使用Nodejs将AWS Lamba的消息发布到AWS IoT。我已将项目压缩并上传到下面的AWS IoT,这是代码片段
var awsIot = require('aws-iot-device-sdk');
var device = awsIot.device({
keyPath: 'keyfilepath',
certPath: 'pem file path',
caPath: 'root-CA.crt',
clientId: 'iotTest7526532135',
host: 'host id'
});
device
.on('connect', function() {
console.log('connect');
device.subscribe('topic_3');
device.publish('topic_1', JSON.stringify({ message_id:23,Message:'HelloWorld'}));
});
device
.on('message', function(topic, payload) {
console.log('message', topic, payload.toString());
});
Run Code Online (Sandbox Code Playgroud)
我收到以下错误
“ errorMessage”:“找不到模块'aws-iot-device-sdk'”,
我知道缺少物联网sdk,我不确定如何在AWS Lambda上安装它。
任何建议都会非常有帮助
我使用以下内容将我在dynamodb中的数据添加到弹性搜索中:
https://aws.amazon.com/it/blogs/aws/category/amazon-elasticsearch-service/?nc1=h_ls
var AWS = require('aws-sdk');
var path = require('path');
//Object for all the ElasticSearch Domain Info
var esDomain = {
region: process.env.RegionForES,
endpoint: process.env.EndpointForES,
index: process.env.IndexForES,
doctype: 'onboardingrecords'
};
//AWS Endpoint from created ES Domain Endpoint
var endpoint = new AWS.Endpoint(esDomain.endpoint);
//The AWS credentials are picked up from the environment.
var creds = new AWS.EnvironmentCredentials('AWS');
console.log('Loading function');
exports.handler = (event, context, callback) => {
//console.log('Received event:', JSON.stringify(event, null, 2));
console.log(JSON.stringify(esDomain));
event.Records.forEach((record) => {
console.log(record.eventID);
console.log(record.eventName);
console.log('DynamoDB Record: %j', record.dynamodb); …Run Code Online (Sandbox Code Playgroud) 我正在尝试在AWS中创建一个lambda函数,它将创建一个新的Stripe标记:
import stripePackage from 'stripe';
const stripe = stripePackage('...');
module.exports.create = (event, context, callback) => {
stripe.tokens.create({
card: {
"number": 4242424242424242,
"exp_month": '02',
"exp_year": '22',
"cvc": '123'
}
}, (err, token) => {
if (err) {
console.log(err);
callback(null, {
statusCode: 400,
body: "error"
});
}
callback(null, {
statusCode: 200,
body: "ok"
});
console.log(token);
});
}
Run Code Online (Sandbox Code Playgroud)
但是,每次都会超时.我有一个出站连接的安全组,如下所示:
Ports Destination
All 0.0.0.0/0
Run Code Online (Sandbox Code Playgroud)
但是,我似乎唯一可以连接的是其他AWS服务.如何将我的Lambda函数打开到AWS外部的连接?
aws-lambda ×10
aws-iot ×2
node.js ×2
alexa ×1
amazon-ec2 ×1
amazon-s3 ×1
amazon-sqs ×1
angularjs ×1
mqtt ×1