如何通过 CloudFormation 为 lambda 函数配置 Alexa Skills Kit 触发器?

lex*_*ore 5 amazon-web-services aws-cloudformation alexa-skills-kit

我正在开发 Alexa 技能,并希望使用 CloudFormation 为我的技能部署基础设施。

到目前为止,IAM 角色、策略和 lambda 函数部署工作正常。我缺少的是 Alexa Skill Kit 中用于 lambda 函数的触发器。

目前我必须在 AWS 控制台中手动创建此触发器:

AWS 控制台 UI 为 lambda 函数添​​加 Alexa Skills Kit 触发器

或者通过 CLI:

aws lambda add-permission --function-name DeutscheDeklinationLambdaFunction --statement-id 1 --action lambda:invokeFunction --principal alexa-appkit.amazon.com --region eu-west-1
Run Code Online (Sandbox Code Playgroud)

但我更愿意通过 CloudFormation 配置此触发器。我认为应该是https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-eventsourcemapping.html,但我找不到如何为 Alexa Skills Kit 实现这一点。

lex*_*ore 3

经典,发布问题三分钟后我自己找到了答案。

在这种情况下,“trigger”实际上是 Alexa Skills Kit 调用的函数的 lambda 权限。所以可以这样配置:

  DeutscheDeklinationLambdaFunctionPermission:
    Type: AWS::Lambda::Permission
    Properties: 
      Action: 'lambda:InvokeFunction'
      FunctionName: !GetAtt DeutscheDeklinationLambdaFunction.Arn
      Principal: alexa-appkit.amazon.com
      EventSourceToken: !Ref AppId
Run Code Online (Sandbox Code Playgroud)

FunctionsName是函数的ARN,EventSourceToken是技能的id。