从AWS CodePipeline中调用AWS Lambda函数时拒绝权限
问题描述:
我已经将管道设置为调用AWS Lamba函数。 10分钟的运行时间后,这是错误我得到:从AWS CodePipeline中调用AWS Lambda函数时拒绝权限
行动执行失败的AWS lambda函数addAMIToAutoScalingLC 未能返回结果。检查函数以验证它具有调用PutJobSuccessResult操作的 权限,并且它调用了PutJobSuccessResult的 。
日志本身不包含相关信息。
我觉得我的IAM权限设置正确:AWSLambdaFullAccess
,AWSCodePipelineFullAccess
:
- lambda函数与具有一定作用运行。
- 的CodePipeline是我觉得跟有作用
AWS-CodePipeline-Service
运行:AWSLambdaFullAccess
我认为我的脚本可以调用PutJobSuccessResult
因为当我测试脚本,我收到了Execution result: succeeded
。
我的脚本不需要任何参数,所以我没有在CodePipeline中提供任何用户参数。
我该怎么做才能进一步调查?
答
找到了答案。问题不是来自许可,而是因为没有致电PutJobSuccessResult
: 管道不知道lambda函数已完成,所以一直等到超时。
的代码块解决了这个问题(蟒蛇):
def lambda_handler(event, context):
# stuff
response = pipeline.put_job_success_result(
jobId=event['CodePipeline.job']['id']
)
return response
您使用这里什么样的认证? IAM或基于资源? – kosa
我使用IAM(我描述的规则) – Nicorr