首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过CloudFormation配置lambda函数的Alexa技能包触发器?

如何通过CloudFormation配置lambda函数的Alexa技能包触发器?
EN

Stack Overflow用户
提问于 2019-09-08 20:50:10
回答 2查看 477关注 0票数 4

我正在开发一个Alexa技能,并想使用CloudFormation来部署我的技能的基础设施。

到目前为止,IAM角色、策略和lambda功能部署工作正常。我遗漏的是Alexa Skill Kit对我的lambda函数的触发器。

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

或通过CLI:

代码语言:javascript
复制
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实现这一点。

EN

回答 2

Stack Overflow用户

发布于 2019-09-08 21:04:48

一个经典的例子,在发布一个问题三分钟后,我自己找到了答案。

看起来这种情况下的“触发器”实际上是Alexa Skills Kit要调用的函数的lambda权限。因此可以按照如下方式进行配置:

代码语言:javascript
复制
  DeutscheDeklinationLambdaFunctionPermission:
    Type: AWS::Lambda::Permission
    Properties: 
      Action: 'lambda:InvokeFunction'
      FunctionName: !GetAtt DeutscheDeklinationLambdaFunction.Arn
      Principal: alexa-appkit.amazon.com
      EventSourceToken: !Ref AppId

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

票数 2
EN

Stack Overflow用户

发布于 2021-04-03 00:32:21

以下是如何在AWS CDK (云开发工具包)的typescript中执行此操作的示例。

代码语言:javascript
复制
import { ServicePrincipal } from '@aws-cdk/aws-iam';
...
MyLambda.addPermission('alexa-skills-kit-trigger', {
  principal: new ServicePrincipal('alexa-appkit.amazon.com'),
  action: 'lambda:invokeFunction',
});

文档:

@aws-cdk/aws-iam

@aws-cdk_aws-lambda.Permission

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57842114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档