小编Mar*_*k B的帖子

AWS lambda发送SNS"成功"但不发送实际发送的消息

我编写了一个AWS lambda函数,用于在上传S3对象时发送文本消息.我已经确认了订阅,我可以收到SNS控制台发送的测试消息.

当我测试lambda时,所有日志都说方法成功,但没有任何子消息到达.这是函数(主要是示例模板,但在本文中为了安全性而改变了我的主题).任何有关测试/尝试下一步的提示都会受到赞赏.

console.log('Loading function');
var aws = require('aws-sdk');
var s3 = new aws.S3({ apiVersion: '2006-03-01' });
exports.handler = function(event, context) {
    var bucket = event.Records[0].s3.bucket.name;
    var key = decodeURIComponent(event.Records[0].s3.object.key.replace(/\+/g, ' '));
    var params = {
        Bucket: bucket,
        Key: key
    };
    var sns = new aws.SNS();
    console.log('start of brians sns function')
    var pubResult = sns.publish({
        Message: 'Test publish to SNS from Lambda',
        TopicArn: 'arn:aws:sns:us-east-1:xxxxxxxxxxxx:lambdatop'
    }, function(err, data) {
        if (err) {
            console.log(err.stack);
            return;
        }
        console.log('push sent');
        console.log(data);
    });
    console.log('after sns …
Run Code Online (Sandbox Code Playgroud)

lambda amazon-web-services node.js amazon-sns

2
推荐指数
1
解决办法
3085
查看次数

Alexa lambda_handler没有创建事件会话

我有一个问题让我的python lambda函数工作.我得到一个无效的键,用于在调用技能时应该创建的事件数组.我得到的错误是:

{
    "stackTrace": [
        [
            "/var/task/lambda_function.py",
            163,
            "lambda_handler",
            "app_id = event['session']['application']['applicationId']"
            ]
    ],
    "errorType": "KeyError",
    "errorMessage": "'session'"
}
Run Code Online (Sandbox Code Playgroud)

这是我的代码

def lambda_handler(event, context):


"""Lambda function entrypoint."""
# print("event.session.application.applicationId={}".format(
#       event['session']['application']['applicationId']))

# Prevent unwanted access to this Lambda function.
app_id = event['session']['application']['applicationId']
if app_id != "amzn1.ask.skill.yyyyyyyy-xxx":
    raise ValueError("Invalid Application ID: {}".format(app_id))

request = event['request']

if event['session']['new']:
    on_session_started(
        {'requestId': request['requestId']}, event['session'])

func_map = {
    "LaunchRequest": on_launch,
    "IntentRequest": on_intent,
    "SessionEndedRequest": on_session_ended,
}

return func_map[request['type']](event['request'], event['session'])
Run Code Online (Sandbox Code Playgroud)

python alexa aws-lambda alexa-skills-kit

2
推荐指数
1
解决办法
1921
查看次数

无法在EC2 Ubuntu上安装docker

按照此说明在EC2 Ubuntu上安装Docker.一切顺利,但这一步:

$ sudo sed -i '$acomplete -F _docker docker' /etc/bash_completion.d/docker.io
Run Code Online (Sandbox Code Playgroud)

sed:无法读取/etc/bash_completion.d/docker.io:没有这样的文件或目录

怎么离开这里?谢谢

ubuntu sed

2
推荐指数
1
解决办法
1755
查看次数

如何知道lambda函数的事件源本身

我想知道函数中lambda函数的事件源.

我想要做的是使用一些AWS服务(CloudWatch,S3,Step函数等)中的一个lambda函数,并根据服务更改其行为.

上下文对象(函数的参数之一)具有有关lambda函数的信息,但不包含有关事件源的信息.

有没有办法知道这个?

amazon-web-services aws-lambda

2
推荐指数
1
解决办法
1343
查看次数

lambda + api网关什么时候实际向客户端发送响应?

目前我已经设置了一个从api网关端点触发的lambda函数.目标是通过形成响应并首先触发回调来保持响应时间较短,然后继续与sns交互以将工作传递给其他lambda函数.但是,当我对端点运行火焰计时,我注意到了一些奇怪的行为.主要是响应时间似乎不断增加,此外还有502和504响应代码返回但没有500响应代码(如果我理解正确,则表示调用限制,因为429响应在api网关中映射到500).如果我删除异步操作,我会看到合理的响应时间,并且没有错误.为什么这是观察到的行为,当实际触发响应时,在nodejs事件循环中项目排队的顺序是否不起作用,或者lambda只是等待事件队列在发送响应之前清空?如果是后者,则异步交互中的错误会导致502和504响应吗?

amazon-web-services node.js aws-lambda aws-api-gateway

2
推荐指数
1
解决办法
1476
查看次数

如何使用 AWS Cloudwatch 将实例名称元数据(来自标签)发送到 SNS?

我正在尝试创建一个 Cloudwatch 规则,该规则在实例终止时将 EC2 实例的名称(而不是 InstanceID)发送到 SNS。下面的代码片段是当我选择创建这个简单规则时 AWS 提供的默认事件模式,但我向“详细类型”对象添加了 1 个部分。此部分是“实例名称”。但这不起作用,因为我收到的 SNS 电子邮件仍然不包含实例的名称。它仅在消息中包含 InstanceID。

   {
  "source": [
    "aws.ec2"
  ],
  "detail-type": [
    "Instance Name",
    "EC2 Instance State-change Notification"
  ]
}
Run Code Online (Sandbox Code Playgroud)

到目前为止,我仅成功地从 Cloudwatch 规则获取了 InstanceID。是否可以通过 Cloudwatch 检索标签中的自定义元数据?

话虽这么说,如果无法通过 Cloudwatch,是否可以以某种方式将 SNS 主题发送到 Lambda,并使用 Lambda 函数将 instanceID 转换为实例名称?

我的项目的重点是,我可以使用 Lambda 运行一个脚本,一旦这些实例终止,该脚本就会从监控应用程序中删除这些实例。在 AWS 之外,我们使用他们的名称来识别他们,而不是他们的实例 ID。

amazon-ec2 amazon-web-services amazon-sns amazon-cloudwatch aws-lambda

2
推荐指数
1
解决办法
1854
查看次数

如何在aws lambda机器上安装ffmpeg?

我正在尝试在使用ffmpeg的aws lambda上运行节点js脚本.为此,我需要在机器上安装ffmpeg.

我看过文档,但我找不到如何连接到运行lambda的机器.

ffmpeg amazon-web-services aws-lambda

2
推荐指数
4
解决办法
3292
查看次数

通过 AWS Lambda 函数访问 EC2 实例服务

我有一个只有私有 IP 的 EC2 实例,并且我在 say 上运行的同一个实例上安装了 Apache Kafka 10.0.4.44:9092。现在,我创建了 AWS Lambda 函数,它从给定的 Bucket 读取文档并将文档正文发送到在 EC2 实例上运行的 Apache Kafka。

现在,AWS Lambda 无法访问 EC2 实例服务。

如何授予 Lambda 访问权限以访问 EC2 上的 Apache kafka 服务?

amazon-s3 amazon-ec2 amazon-web-services aws-lambda

2
推荐指数
1
解决办法
2536
查看次数

将域分配给RDS实例的坏主意?

我在我的多个网站上使用RDS.将子域指向该RDS服务器是不是一个坏/不安全的想法?这会对安全产生负面影响吗?

dns amazon-ec2 amazon-web-services amazon-rds

2
推荐指数
1
解决办法
193
查看次数

如何通过IP限制AWS Lambda或API网关?

我目前正在尝试使用S3静态网站,API Gateway和AWS Lambda设计无服务器应用程序。我想将此网站公开,所以每个用户没有API密钥。

我想防止将这些端点滥用到非常低的水平,例如给定的公共IP每5秒发出1个请求。

AWS Shield或其中任何一种服务都可能吗?

throttling amazon-web-services aws-lambda aws-api-gateway

2
推荐指数
2
解决办法
356
查看次数