我正在开发一个Alexa技能,并想使用CloudFormation来部署我的技能的基础设施。
到目前为止,IAM角色、策略和lambda功能部署工作正常。我遗漏的是Alexa Skill Kit对我的lambda函数的触发器。
目前,我必须在AWS控制台中手动创建此触发器:

或通过CLI:
aws lambda add-permission --function-name DeutscheDeklinationLambdaFunction --statement-id 1 --action lambda:invokeFunction --principal alexa-appkit.amazon.com --region eu-west-1但我更喜欢通过CloudFormation配置这个触发器。我认为应该是https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-eventsourcemapping.html,但我无法找到如何为Alexa Skills Kit实现这一点。
发布于 2019-09-08 21:04:48
一个经典的例子,在发布一个问题三分钟后,我自己找到了答案。
看起来这种情况下的“触发器”实际上是Alexa Skills Kit要调用的函数的lambda权限。因此可以按照如下方式进行配置:
DeutscheDeklinationLambdaFunctionPermission:
Type: AWS::Lambda::Permission
Properties:
Action: 'lambda:InvokeFunction'
FunctionName: !GetAtt DeutscheDeklinationLambdaFunction.Arn
Principal: alexa-appkit.amazon.com
EventSourceToken: !Ref AppIdFunctionsName是函数的ARN,EventSourceToken是技能的id。
发布于 2021-04-03 00:32:21
以下是如何在AWS CDK (云开发工具包)的typescript中执行此操作的示例。
import { ServicePrincipal } from '@aws-cdk/aws-iam';
...
MyLambda.addPermission('alexa-skills-kit-trigger', {
principal: new ServicePrincipal('alexa-appkit.amazon.com'),
action: 'lambda:invokeFunction',
});文档:
https://stackoverflow.com/questions/57842114
复制相似问题