无权承担提供的角色

Hon*_*iao 6 javascript node.js aws-lambda aws-step-functions

我正在关注AWS Step Functions 教程。整个状态机流程是这样的。

在此处输入图片说明

我有一个名为step_functions_basic_execution的角色,带有 policy AWSLambdaRole。我的 Step 函数状态机正在使用这个角色。

我的步骤功能是

{
  "Comment": "A simple AWS Step Functions state machine that automates a call center support session.",
  "StartAt": "Open Case",
  "States": {
    "Open Case": {
      "Type": "Task",
      "Resource": "arn:aws:lambda:us-west-2:829495130000:function:OpenCaseFunction",
      "Next": "Assign Case"
    }, 
    ...
}
Run Code Online (Sandbox Code Playgroud)

对应的Open Case Lambda 函数是

exports.handler = (event, context, callback) => {
    // Create a support case using the input as the case ID, then return a confirmation message   
   var myCaseID = event.inputCaseID;
   var myMessage = "Case " + myCaseID + ": opened...";   
   var result = {Case: myCaseID, Message: myMessage};
   callback(null, result);    
};
Run Code Online (Sandbox Code Playgroud)

当我尝试运行它时,它在第一步Open Case失败了。

输入是

{
  "inputCaseID": "001"
}
Run Code Online (Sandbox Code Playgroud)

它抛出错误:

状态.任务失败

全球服务主体 states.amazonaws.com 和区域服务主体均无权承担所提供的角色。

知道如何修复它吗?谢谢

Hon*_*iao 5

感谢 Joel Kinzel 的指导。这是我的错误。

我在步骤 2c 中做错了。

在 Create Roles 屏幕上,选择 AWS Service,选择 Step Functions

我选择了Lambda而不是Step Functions,即使我仍然添加了下一页AWSLambdaRole,但它没有帮助并导致问题。