2017-04-21 136 views
2

我已经将管道设置为调用AWS Lamba函数。 10分钟的运行时间后,这是错误我得到:从AWS CodePipeline中调用AWS Lambda函数时拒绝权限

行动执行失败的AWS lambda函数addAMIToAutoScalingLC 未能返回结果。检查函数以验证它具有调用PutJobSuccessResult操作的 权限,并且它调用了PutJobSuccessResult的 。

日志本身不包含相关信息。

我觉得我的IAM权限设置正确:AWSLambdaFullAccessAWSCodePipelineFullAccess

  • lambda函数与具有一定作用运行。
  • 的CodePipeline是我觉得跟有作用AWS-CodePipeline-Service运行:AWSLambdaFullAccess

我认为我的脚本可以调用PutJobSuccessResult因为当我测试脚本,我收到了Execution result: succeeded

我的脚本不需要任何参数,所以我没有在CodePipeline中提供任何用户参数。

我该怎么做才能进一步调查?

+1

您使用这里什么样的认证? IAM或基于资源? – kosa

+0

我使用IAM(我描述的规则) – Nicorr

回答

2

找到了答案。问题不是来自许可,而是因为没有致电PutJobSuccessResult: 管道不知道lambda函数已完成,所以一直等到超时。

的代码块解决了这个问题(蟒蛇):

def lambda_handler(event, context): 

    # stuff 

    response = pipeline.put_job_success_result(
     jobId=event['CodePipeline.job']['id'] 
    ) 
    return response