oro*_*ome 7 amazon-web-services alexa aws-lambda aws-iot
我有一个 Python Lambda 函数,可以同时响应 IoT Button 和 Alexa 技能。
有没有办法读取event或context传递给处理程序函数以识别哪个服务触发了该函数(Alexa 或 IoT)?
小智 6
希望 AWS 现在已经简化了这一点,但遗憾的是事实并非如此。没有任何一个参数可供您检查以确定所有 AWS 服务中的事件类型。
然而,在这里找到了这个很好的表达
function getLambdaEventSource(event) {
if (event.Records && event.Records[0].cf) return 'isCloudfront';
if (event.configRuleId && event.configRuleName && event.configRuleArn) return 'isAwsConfig';
if (event.Records && (event.Records[0].eventSource === 'aws:codecommit')) return 'isCodeCommit';
if (event.authorizationToken === "incoming-client-token") return 'isApiGatewayAuthorizer';
if (event.StackId && event.RequestType && event.ResourceType) return 'isCloudFormation';
if (event.Records && (event.Records[0].eventSource === 'aws:ses')) return 'isSes';
if (event.pathParameters && event.pathParameters.proxy) return 'isApiGatewayAwsProxy';
if (event.source === 'aws.events') return 'isScheduledEvent';
if (event.awslogs && event.awslogs.data) return 'isCloudWatchLogs';
if (event.Records && (event.Records[0].EventSource === 'aws:sns')) return 'isSns';
if (event.Records && (event.Records[0].eventSource === 'aws:dynamodb')) return 'isDynamoDb';
if (event.records && event.records[0].approximateArrivalTimestamp) return 'isKinesisFirehose';
if (event.records && event.deliveryStreamArn && event.deliveryStreamArn.startsWith('arn:aws:kinesis:')) return 'isKinesisFirehose';
if (event.eventType === 'SyncTrigger' && event.identityId && event.identityPoolId) return 'isCognitoSyncTrigger';
if (event.Records && event.Records[0].eventSource === 'aws:kinesis') return 'isKinesis';
if (event.Records && event.Records[0].eventSource === 'aws:s3') return 'isS3';
if (event.operation && event.message) return 'isMobileBackend';
}
Run Code Online (Sandbox Code Playgroud)
没有办法可靠地实现这一点。您能得到的最接近的结果是熟悉不同服务生成的各种事件的内容,并(希望)识别出您感兴趣的每个系列中存在的可靠唯一密钥,然后您可以在代码中检查该密钥,例如与
if 'distinctKey' in event.keys():
# ...
Run Code Online (Sandbox Code Playgroud)
然而,这并不是一个可靠的方法,因为它要求您
| 归档时间: |
|
| 查看次数: |
3870 次 |
| 最近记录: |