Amazon web services 在Amazon lex中获得错误

Amazon web services 在Amazon lex中获得错误,amazon-web-services,lambda,aws-lambda,chatbot,amazon-lex,Amazon Web Services,Lambda,Aws Lambda,Chatbot,Amazon Lex,我们在Amazon lex中创建了一个聊天机器人。bot在尝试访问lambda函数时显示以下错误 发生错误:调用lambda函数时拒绝访问。请检查用于创建bot的IAM策略上的权限 您能否帮助我们修复此错误。看起来此问题的根源在于与您的Lex Bot关联的IAM角色。Lex在调用Lambda函数时承担此角色,并且需要1)允许角色调用Lambda的策略,以及2)允许Amazon Lex代表您承担该角色的信任策略。从您看到的错误消息中,我认为这是可以在Bot角色上配置的信任策略 1。在IAM角色的权

我们在Amazon lex中创建了一个聊天机器人。bot在尝试访问lambda函数时显示以下错误

发生错误:调用lambda函数时拒绝访问。请检查用于创建bot的IAM策略上的权限


您能否帮助我们修复此错误。

看起来此问题的根源在于与您的Lex Bot关联的IAM角色。Lex在调用Lambda函数时承担此角色,并且需要1)允许角色调用Lambda的策略,以及2)允许Amazon Lex代表您承担该角色的信任策略。从您看到的错误消息中,我认为这是可以在Bot角色上配置的信任策略

1。在IAM角色的权限选项卡中,选择内联策略,然后附加以下自定义策略

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
        { 
            "Action": [ 
            "lambda:InvokeFunction",
            "polly:SynthesizeSpeech"
            ], 
        "Effect": "Allow", 
        "Resource": "*" 
        } 
     ] 
}
2.在信任关系选项卡中,选择编辑信任关系,并指定Amazon Lex服务主体(“Lex.amazonaws.com”)。更新的策略应如图所示:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "lex.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
请参阅入门文档()中的第2项作为参考


充分披露:我作为产品经理在Amazon Lex上工作

看起来这个问题的根源在于与您的Lex机器人相关的IAM角色。Lex在调用Lambda函数时承担此角色,并且需要1)允许角色调用Lambda的策略,以及2)允许Amazon Lex代表您承担该角色的信任策略。从您看到的错误消息中,我认为这是可以在Bot角色上配置的信任策略

1。在IAM角色的权限选项卡中,选择内联策略,然后附加以下自定义策略

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
        { 
            "Action": [ 
            "lambda:InvokeFunction",
            "polly:SynthesizeSpeech"
            ], 
        "Effect": "Allow", 
        "Resource": "*" 
        } 
     ] 
}
2.在信任关系选项卡中,选择编辑信任关系,并指定Amazon Lex服务主体(“Lex.amazonaws.com”)。更新的策略应如图所示:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "lex.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
请参阅入门文档()中的第2项作为参考

充分披露:我作为产品经理在Amazon Lex工作

参见

Lex使用推送模型触发lambda函数,基于每个意图函数策略

“使用Lambda AddPermission函数启用OrderFlowers以调用Lambda Invoke操作。”

遗憾的是,无法通过aws控制台编辑资源策略。

请参阅

Lex使用推送模型触发lambda函数,基于每个意图函数策略

“使用Lambda AddPermission函数启用OrderFlowers以调用Lambda Invoke操作。”


遗憾的是,无法通过aws控制台编辑资源策略。

与lexbot关联的iam角色是服务链接的。在控制台中尝试编辑此角色时,顶部有一条注释:“无法在IAM中修改此服务链接角色。您可以从依赖于此角色的AWS服务中修改此角色”。由于相同的原因,无法附加内联策略、无法修改信任以及无法编辑附加的策略(策略仅用于服务链接角色)。当使用控制台配置bot时,您会注意到,lex被授予了通过lambda函数触发策略按意图触发lambda函数的权限(lambda aws控制台中的触发器选项卡)。不幸的是,您只能使用cli编辑该选项卡…与lexbot关联的iam角色是服务链接的。当尝试在控制台中编辑它时,顶部有一条说明:“无法在iam中修改此服务链接角色。您可以从依赖于此角色的aws服务中修改此角色”。由于相同的原因,无法附加内联策略,无法修改信任,也无法编辑附加的策略(策略仅用于服务链接角色)。使用控制台配置bot时,您会注意到,lex被授予了通过lambda函数触发策略按意图触发lambda函数的权限(lambda aws控制台中的触发器选项卡)。不幸的是,您只能使用cli。。。