我怎样才能将aws lambda响应作为HTML页面获取.请提供逐步解决此问题的程序.
我们正在开发一个有助于在AWS Lambda中部署和维护代码的项目/框架.我想构建/捆绑lambda函数的所有node.js代码到一个js文件中,因为:
我们不想创建自定义捆绑器来执行此操作,因为已经存在许多选项(systemjs,browserify,webpack等).然而,我们担心某些节点模块与捆绑器/构建器不兼容的问题.
特别aws-sdk是webpack存在已知问题,说它有浏览器支持,但我已经和浏览过aws-sdk问题的人交谈了
我们想选择一个现有的捆绑器(或2),但我们希望确保它适用于尽可能多的模块/代码.我们正在尝试为JAWS创建一个插件生态系统,所以要做到这一点非常重要(不要因为模块X使用它们而不能捆绑人员).
问题:
这是与我的问题相关的Cloudformation模板代码:
"SNSTopic": {
"Type": "AWS::SNS::Topic",
"Properties": {
"TopicName": "JumpboxPresenceTopic",
"DisplayName": "Jumpbox Presence Topic",
"Subscription": [
{
"Endpoint": {
"Fn::GetAtt": [
"Lambda",
"Arn"
]
},
"Protocol": "lambda"
}
]
}
},
"Lambda": {
"Type": "AWS::Lambda::Function",
"Properties": [...]
Run Code Online (Sandbox Code Playgroud)
但它不会显示在lambda函数Event Sources面板中:
关于这一点的奇怪之处在于,如果我从SNS仪表板为同一个lambda函数创建一个新订阅,则不会创建新的订阅,因为它将完全重复.但是,现在,如果我检查Lambda仪表板中的Event Sources面板,我可以看到以下新条目:
SNS: JumpboxPresenceTopic
我觉得这在亚马逊方面是一个问题,但我可能是错的.我的方法有问题还是AWS的限制?
amazon-web-services amazon-sns aws-cloudformation aws-lambda
我有一个Lambda函数,它有一个公开的API网关端点,我可以通过AWS控制台获取该URL.但是,我想通过API调用获取该URL.无论是LAMBDA API文档,也不是API Gateway文档似乎有该信息(或者也许我已经错过了它),所以这是甚至可能摆在首位?
我正在尝试将Elasticsearch用于连接到Alexa Skills Kit的Lambda函数的数据存储.Lambda在没有Elasticsearch的情况下正常工作,但ES提供了急需的模糊匹配.
我能够从Lambda访问它的唯一方法是启用Elasticsearch全局访问,但这是一个非常糟糕的主意.我也可以通过开放访问策略或IP地址策略从我的计算机访问.有没有办法通过Lambda进行只读访问和通过IP进行读写?
在IAM上,我授予了我的Lambda角色AmazonESReadOnlyAccess.在ES方面,我试过这个,但它只适用于IP地址:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::NUMBER:root",
"arn:aws:iam::NUMBER:role/lambda_basic_execution"
]
},
"Action": "es:*",
"Resource": "arn:aws:es:us-east-1:NUMBER:domain/NAME/*"
},
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "es:*",
"Resource": "arn:aws:es:us-east-1:NUMBER:domain/NAME/*",
"Condition": {
"IpAddress": {
"aws:SourceIp": "MY IP"
}
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
该论坛帖子提出了同样的问题,但未得到答复.
我正在尝试使用连接到我的RDS数据库的Node.js编写Lambda函数.数据库正在运行,可从我的Elastic Beanstalk环境访问.当我运行该函数时,它返回一个超时错误.
尝试使用完全相同的结果将超时增加到5分钟.
我在经过一些研究后得出的结论是,这可能是一个安全问题,但无法在亚马逊的文档或这个答案中找到解决方案(这是我唯一可以找到的主题).
以下是安全细节:
我的代码是:
'use strict';
console.log("Loading getContacts function");
var AWS = require('aws-sdk');
var mysql = require('mysql');
exports.handler = (event, context, callback) => {
var connection = mysql.createConnection({
host : '...',
user : '...',
password : '...',
port : 3306,
database: 'ebdb',
debug : false
});
connection.connect(function(err) {
if (err) callback(null, 'error ' +err);
else callback(null, 'Success');
});
};
Run Code Online (Sandbox Code Playgroud)
我得到的结果是:
"errorMessage": "2017-03-05T05:57:46.851Z 9ae64c49-0168-11e7-b49a-a1e77ae6f56c Task timed out after 10.00 seconds"
Run Code Online (Sandbox Code Playgroud) 我的API Gateway/Lamdba设置返回一个http响应头:Lamdba使用回调函数将值作为json的一部分返回,Integration Response将其映射到头中(使用integration.response.body)
使用此解决方案,值将在正文和标题中发回.
如何在不重复响应正文中的值的情况下映射Lambda响应中的标头?
使用Node.js创建了Lambda Hello world函数,并为Get调用创建了API GateWay触发器,尝试使用URL访问Lambda函数,得到以下错误.
消息:"内部服务器错误".
(AWS新手)
我在这里阅读自述文件:https://github.com/awslabs/aws-sam-local
我已经写在python 3.6拉姆达及其类似HelloWorld示例这里:https://github.com/awslabs/aws-sam-local/tree/develop/samples/hello-world/python
template.yml看起来像这样:
AWSTemplateFormatVersion : '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: MyFunction1 API
Resources:
MyFunction1:
Type: AWS::Serverless::Function
Properties:
FunctionName: MyFunction1
Handler: lambda_module.lambda_handler
Runtime: python3.6
CodeUri: lambda.zip
MemorySize: 128
Timeout: 10
Policies:
-AWSLamdbaBasicExecutionRole
Events:
BingLambdaEndpoint:
Type: Api
Properties:
Path: MyFunction1/search
Method: get
Run Code Online (Sandbox Code Playgroud)
我在lambda中有环境变量但在启动时无法连接它们.文档说我可以创建一个environments.json文件并在invoke命令上附加以下内容:使用--env-vars invoke参数
我的环境文件看起来像示例,我收到一个错误:
Unable to find environment variable: api_key
environment.json看起来像这样:
{
"MyFunction1": {
"api_key": "123456789",
"BUCKET_NAME": "testBucket"
}
}
Run Code Online (Sandbox Code Playgroud)
命令我运行是这样的:
sam local invoke MyFunction1 --env-vars environment_variables.json -e event.json
Run Code Online (Sandbox Code Playgroud)
有人能提供额外的见解吗?
看一下AWS文档,
您在Pre Sign-up Lambda功能中有以下参数 :
"request": {
"userAttributes": {
"string": "string",
....
},
"validationData": {<validation data as key-value (String, String) pairs, from the client>}
Run Code Online (Sandbox Code Playgroud)
有没有办法修改或添加其他userAttributes事件对象?
例如:
// Modify an existing username...
event.request.userAttributes.name.ucfirst();
// Add an additional attribute...
event.request.userAttributes.nickname = "ANY_NAME";
callback(null, event);
Run Code Online (Sandbox Code Playgroud) aws-lambda ×10
amazon-sns ×1
aws-sam-cli ×1
browserify ×1
html ×1
javascript ×1
node.js ×1
rds ×1
response ×1
serverless ×1
systemjs ×1
triggers ×1
webpack ×1