b***i 发帖数: 3043 | 1 我学用Amazon Lambda来做网站,测试时使用{"key3":"value3",...}不知道这是干嘛用
的。然后,测试结果正常,显示"Hi, from Lamba"。
如果我直接用个链接看显示一个"Message: internal error"。这个到底怎样做才能直
接做网站啊?
看起来那个测试是要把一个JSON串post?而我要的是get
样板代码如下
exports.handler = (event, context, callback) => {
// TODO implement
callback(null, 'Hi from Lambda');
};
那么,这里面,我怎么改才能变成是响应一般的http get request?语言不限,我这是
随便拿一个样本语言做例子。 |
V***l 发帖数: 2108 | 2 够鲜啊,做完没?
【在 b***i 的大作中提到】 : 我学用Amazon Lambda来做网站,测试时使用{"key3":"value3",...}不知道这是干嘛用 : 的。然后,测试结果正常,显示"Hi, from Lamba"。 : 如果我直接用个链接看显示一个"Message: internal error"。这个到底怎样做才能直 : 接做网站啊? : 看起来那个测试是要把一个JSON串post?而我要的是get : 样板代码如下 : exports.handler = (event, context, callback) => { : // TODO implement : callback(null, 'Hi from Lambda'); : };
|
g****t 发帖数: 31659 | 3 看了一眼,这很像20年前的CGI, fastCGI?
two new shinning word:
Function as a Service (FaaS)
Serverless
The below book looks funny too:
Serverless Single Page Apps: Fast, Scalable, and Available 1st Edition
这么多年过去了,还 reinvent single page app?
【在 b***i 的大作中提到】 : 我学用Amazon Lambda来做网站,测试时使用{"key3":"value3",...}不知道这是干嘛用 : 的。然后,测试结果正常,显示"Hi, from Lamba"。 : 如果我直接用个链接看显示一个"Message: internal error"。这个到底怎样做才能直 : 接做网站啊? : 看起来那个测试是要把一个JSON串post?而我要的是get : 样板代码如下 : exports.handler = (event, context, callback) => { : // TODO implement : callback(null, 'Hi from Lambda'); : };
|
h**********c 发帖数: 4120 | 4 did not read your post very detail, not sure my skill set is utd ^p to d8t.
but this article appears not very old
Parsing JSON is a Minefield
http://seriot.ch/parsing_json.php |
p*******d 发帖数: 359 | 5 三个帖子都没回答问题啊。
这个{"key3":"value3",...}就是event object.
比如
exports.handler = (event, context, callback) => {
// TODO implement
callback(null, 'Hi from ' + event.key3);
};
测试结果就是打印 Hi from value3
做网站或者app就是用前端(angular, ios, android)调用lambda, 用aws-sdk。 也可以
再加一层api gateway,如果需要restful的话。 |
b***i 发帖数: 3043 | 6 那网站最前端主页可以用lambda吗
当然,我的页面会调用其他的Web service,读JSON。这个主的没有输入的JSON串,咋
写呢?
【在 p*******d 的大作中提到】 : 三个帖子都没回答问题啊。 : 这个{"key3":"value3",...}就是event object. : 比如 : exports.handler = (event, context, callback) => { : // TODO implement : callback(null, 'Hi from ' + event.key3); : }; : 测试结果就是打印 Hi from value3 : 做网站或者app就是用前端(angular, ios, android)调用lambda, 用aws-sdk。 也可以 : 再加一层api gateway,如果需要restful的话。
|
h**********c 发帖数: 4120 | 7 The answer is the unpredictable behavior nobody knows wy.
【在 p*******d 的大作中提到】 : 三个帖子都没回答问题啊。 : 这个{"key3":"value3",...}就是event object. : 比如 : exports.handler = (event, context, callback) => { : // TODO implement : callback(null, 'Hi from ' + event.key3); : }; : 测试结果就是打印 Hi from value3 : 做网站或者app就是用前端(angular, ios, android)调用lambda, 用aws-sdk。 也可以 : 再加一层api gateway,如果需要restful的话。
|
p*******d 发帖数: 359 | 8 可以。API gateway不是必须的。
你需要用到aws-sdk。
https://aws.amazon.com/documentation/sdk-for-javascript/
https://github.com/aws/aws-sdk-js
网页加上
调用的时候注意资源安全问题。建议定义一个IAM guest user权限。如果需要用户登陆
,建议看一看cognito。
// Credentials for anonymous requests
AWS.config.update({
accessKeyId: 'GUEST_USER_KEY_ID',
secretAccessKey: 'GUEST_USER_ACCESS_KEY',
region: "us-east-1"
});
var params = {
FunctionName: funcName, //lambda function name
LogType: 'Tail',
InvocationType: 'RequestResponse',
Payload: JSON.stringify(payload) // payload 就是你的json
object
};
var lambda = new AWS.Lambda();
lambda.invoke(params, callback); // 定义一个callback function
【在 b***i 的大作中提到】 : 那网站最前端主页可以用lambda吗 : 当然,我的页面会调用其他的Web service,读JSON。这个主的没有输入的JSON串,咋 : 写呢?
|
b***i 发帖数: 3043 | 9 这个主网页是在S3上的吗
【在 p*******d 的大作中提到】 : 可以。API gateway不是必须的。 : 你需要用到aws-sdk。 : https://aws.amazon.com/documentation/sdk-for-javascript/ : https://github.com/aws/aws-sdk-js : 网页加上 : : 调用的时候注意资源安全问题。建议定义一个IAM guest user权限。如果需要用户登陆 : ,建议看一看cognito。 : // Credentials for anonymous requests : AWS.config.update({
|
p*******d 发帖数: 359 | 10 可以在S3,也可以任何地方,比如local。
【在 b***i 的大作中提到】 : 这个主网页是在S3上的吗
|
b***i 发帖数: 3043 | 11 local是自己电脑?这个我知道该怎么办。但是我的目的是开发一个一般的公开的网站
,每个人都可以访问主页,然后主页可能通过用户登录显示用户看到的文件。主页需要
动态网页还是静态?如果静态,session如何开始?如果动态放在哪里?动态的文件放
在S3还是instance?我不希望又回到裸机状态。
以前在GAE开发很容易,不用考虑底层。主页是动态的,然后关键的数据都放在
datastore,大文件放在blob里面。就是下载贵。所以想试试AWS,喜欢lambda这种不需
要底层的。但是不清楚是不是就真的不接触底层了,比如公开的主页怎么办?
不行我主页放GAE,然后逻辑放lambda,咋样?session会不会是问题?关于用户的很多
信息都放在session里面。
【在 p*******d 的大作中提到】 : 可以在S3,也可以任何地方,比如local。
|
m****a 发帖数: 2593 | 12 lamdha 好像不适合做这个,我们用的目的是代替很多小service.
网站的主界面还是用ec2 + 其他db吧
【在 b***i 的大作中提到】 : local是自己电脑?这个我知道该怎么办。但是我的目的是开发一个一般的公开的网站 : ,每个人都可以访问主页,然后主页可能通过用户登录显示用户看到的文件。主页需要 : 动态网页还是静态?如果静态,session如何开始?如果动态放在哪里?动态的文件放 : 在S3还是instance?我不希望又回到裸机状态。 : 以前在GAE开发很容易,不用考虑底层。主页是动态的,然后关键的数据都放在 : datastore,大文件放在blob里面。就是下载贵。所以想试试AWS,喜欢lambda这种不需 : 要底层的。但是不清楚是不是就真的不接触底层了,比如公开的主页怎么办? : 不行我主页放GAE,然后逻辑放lambda,咋样?session会不会是问题?关于用户的很多 : 信息都放在session里面。
|
p*******d 发帖数: 359 | 13 local的意思是localhost网站,开发的时候先本地测试。完了以后再上传到S3。
你的网站架构,可以是,
html. css, angularjs做前端界面,是静态,host用S3, 用aws-sdk和lambda交流数据
,logic可以在lambda里面,是动态
数据存在dynamodb或者aurora(aws version mysql)
上传文件用S3
用户登陆用cognito
登陆前用一个guest IAM account,登陆的时候需要用AWS Security Token Service获
得一个临时 IAM account,就是相当于session,包含登录用户的资料。用这个临时IAM
account调用lambda资源。
【在 b***i 的大作中提到】 : local是自己电脑?这个我知道该怎么办。但是我的目的是开发一个一般的公开的网站 : ,每个人都可以访问主页,然后主页可能通过用户登录显示用户看到的文件。主页需要 : 动态网页还是静态?如果静态,session如何开始?如果动态放在哪里?动态的文件放 : 在S3还是instance?我不希望又回到裸机状态。 : 以前在GAE开发很容易,不用考虑底层。主页是动态的,然后关键的数据都放在 : datastore,大文件放在blob里面。就是下载贵。所以想试试AWS,喜欢lambda这种不需 : 要底层的。但是不清楚是不是就真的不接触底层了,比如公开的主页怎么办? : 不行我主页放GAE,然后逻辑放lambda,咋样?session会不会是问题?关于用户的很多 : 信息都放在session里面。
|