我是Lambdas的新手所以也许还有一些我还没有抓到的东西,但是我已经编写了一个简单的Lambda函数来向外部网站发出HTTP请求.出于某种原因,无论我使用Node http还是https模块,我都会得到一个ECONNREFUSED.
这是我的Lambda:
var http = require('http');
exports.handler = function (event, context) {
http.get('www.google.com', function (result) {
console.log('Success, with: ' + result.statusCode);
context.done(null);
}).on('error', function (err) {
console.log('Error, with: ' + err.message);
context.done("Failed");
});
};
Run Code Online (Sandbox Code Playgroud)
这是日志输出:
START RequestId: request hash
2015-08-04T14:57:56.744Z request hash Error, with: connect ECONNREFUSED
2015-08-04T14:57:56.744Z request hash {"errorMessage":"Failed"}
END RequestId: request hash
Run Code Online (Sandbox Code Playgroud)
是否需要执行HTTP请求的角色权限?Lambda甚至允许普通的旧HTTP请求吗?我需要设置特殊标头吗?
任何指导表示赞赏.
使用AWS CLI从命令行解密密文时,密文会被解密而不会出现问题:
$ aws kms decrypt --ciphertext-blob fileb://encrypted-secrets --output text --query Plaintext --region us-east-1 | base64 --decode > decryped-secrets
Run Code Online (Sandbox Code Playgroud)
当尝试从js脚本执行此操作时,此解密操作也在本地工作:
#!/usr/local/bin/node
const fs = require('fs');
const AWS = require('aws-sdk');
const kms = new AWS.KMS({region:'us-east-1'});
const secretPath = './encrypted-secrets';
const encryptedSecret = fs.readFileSync(secretPath);
const params = {
CiphertextBlob: encryptedSecret
};
kms.decrypt(params, function(err, data) {
if (err) {
console.log(err, err.stack);
} else {
const decryptedScret = data['Plaintext'].toString();
console.log('decrypted secret', decryptedScret);
}
});
Run Code Online (Sandbox Code Playgroud)
但是,当在AWS Lambda函数的上下文中尝试使用与上述几乎完全相同的代码时,调用该函数会导致超时:
'use strict';
const zlib = require('zlib');
const mysql …Run Code Online (Sandbox Code Playgroud) amazon-web-services aws-sdk aws-lambda aws-kms aws-sdk-nodejs
我的应用程序为每个新注册用户创建一个自定义属性“userType”。现在,每当用户登录或刷新令牌时,我都希望将此“userType”声明/属性添加到 JWT 访问令牌中。
是否可以选择告诉 cognito 将我的自定义声明/属性添加到 JWT 访问令牌?(没有预代币生成 Lambda)
我试图包装示例代码片段以获取函数中的秘密,然后调用它,但它似乎不起作用。我怀疑我是异步调用它,我需要同步调用它?我只想要一个可以调用的函数来获取一个秘密值并将其放入一个 var 中。
这是功能:
//outside exports.handler = (event, context, callback) => {
function getSecret(secretName) {
// Load the AWS SDK
var AWS = require('aws-sdk'),
region = process.env.AWS_REGION,
secretName = secretName,
secret,
decodedBinarySecret;
// Create a Secrets Manager client
var client = new AWS.SecretsManager({
region: region
});
// In this sample we only handle the specific exceptions for the 'GetSecretValue' API.
// See https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_GetSecretValue.html
// We rethrow the exception by default.
client.getSecretValue({SecretId: secretName}, function(err, data) {
if (err) {
if (err.code …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用入门( Java中的AWS Lambda代码编写)页面中的Java代码示例,但我被困为com.amazonaws.services.lambda.runtime pacakge似乎缺失了
以下是示例代码:
package example;
import com.amazonaws.services.lambda.runtime.Context; //package does not exist error
import com.amazonaws.services.lambda.runtime.LambdaLogger; // package does not exist error
import com.amazonaws.services.s3.AmazonS3; // import works (not needed, I've put them in for testing import)
import com.amazonaws.services.s3.model.S3Object; // import works (not needed, I've put them in for testing import)
public class Hello {
public String myHandler(int myCount, Context context) {
LambdaLogger logger = context.getLogger();
logger.log("received : " + myCount);
return String.valueOf(myCount);
}
}
Run Code Online (Sandbox Code Playgroud)
我在Netbeans中通过命令行(指定aws …
我对Amazon Kinesis很新,所以也许这只是我理解中的一个问题,但在AWS Lambda FAQ中它说:
每个分片严格序列化发送到您的AWS Lambda函数的Amazon Kinesis和DynamoDB Streams记录.这意味着如果将两个记录放在同一个分片中,Lambda保证在使用第二个记录调用Lambda函数之前,将使用第一个记录成功调用它.如果一个记录的调用超时,受到限制或遇到任何其他错误,Lambda将重试直到成功(或记录达到其24小时到期),然后再转到下一个记录.不保证跨不同分片的记录顺序,并且每个分片的处理并行发生.
我的问题是,如果由于某种原因某些格式错误的数据被生产者放入一个分片并且当Lambda函数选择它时它会出错,然后只是不断重试会发生什么?这意味着该特定分片的处理将被错误阻止24小时.
处理应用程序错误的最佳做法是将问题包装在自定义错误中,并将此错误与所有成功处理的记录一起发送到下游并让消费者处理它?当然,在一个不可恢复的错误导致程序像空指针一样崩溃的情况下,这仍然无济于事:我们将在接下来的24小时内再次回到阻塞重试循环.
我已将我的亚马逊回声设备与我帐户相关的亚马逊门户集成.我能够使用Alexa Skills Kit创建自己的自定义问题,并使用AWS Lambda函数处理以生成响应.
我的问题是:是否有可能以编程方式"推送"消息到回显设备?例如,我希望它能够在不必问问题的情况下发言.我希望它能在特定时刻做点什么.
如果有可能,请您分享任何示例代码来实现这一目标吗?
我在我的EC2实例上运行一个服务,我想设置一个只允许我的lambda函数访问它的入站规则.安全组允许我限制特定IP的访问,但我不认为lambda函数具有指定的特定IP.有办法做我想要的吗?
我有一个简单的lambda函数,它返回一个dict响应,另一个lambda函数调用该函数并打印响应.
lambda函数A.
def handler(event,context):
params = event['list']
return {"params" : params + ["abc"]}
Run Code Online (Sandbox Code Playgroud)
lambda函数B调用A
a=[1,2,3]
x = {"list" : a}
invoke_response = lambda_client.invoke(FunctionName="monitor-workspaces-status",
InvocationType='Event',
Payload=json.dumps(x))
print (invoke_response)
Run Code Online (Sandbox Code Playgroud)
invoke_response
{u'Payload': <botocore.response.StreamingBody object at 0x7f47c58a1e90>, 'ResponseMetadata': {'HTTPStatusCode': 202, 'RequestId': '9a6a6820-0841-11e6-ba22-ad11a929daea'}, u'StatusCode': 202}
Run Code Online (Sandbox Code Playgroud)
为什么响应状态为202?另外,如何从invoke_response获取响应数据?我找不到如何做到这一点的明确文件.
我试图触发lambda执行来执行FIFO队列上的项目.除了民意调查,我们还有什么方法可以实现这一目标?我们刚刚了解到,我们无法直接从FIFO队列触发lambda执行,而FIFO队列目前仅支持标准队列.我还了解到我们不能将SNS主题订阅到FIFO队列 - 这也仅在标准队列上受支持.
在亚马逊发布更新之前,有没有人为此找到解决方法?
aws-lambda ×10
aws-sdk ×2
node.js ×2
alexa-skill ×1
amazon-sqs ×1
aws-java-sdk ×1
aws-kms ×1
java ×1
javascript ×1
python-2.7 ×1