适用于AWS Codepipeline的AWS Lamda函数

时间:2020-01-15 09:56:35

标签: c# amazon-web-services .net-core aws-lambda aws-codepipeline

由于Windows docker在docker内部未提供DIND或docker命令,因此我尝试设置CI环境有所不同。

我需要在管道中调用一个lambda函数。为此,我创建了一个lambda并将其设置在代码管道中。但是,不是我的成功,而是管道显示为超时。

我没有找到任何合适的文章或博客文章来在点网核心中使用Lamda作为示例。以下是我的Lamda代码:

    public class Function
{
    public class CodePipelineInput
    {
        [JsonProperty("CodePipeline.job")]
        public Job job { get; set; }
    }
    public async Task FunctionHandler(CodePipelineInput source, ILambdaContext context)
    {
        var codepipeline = new AmazonCodePipelineClient();
            var putJobSuccessRequestResult = new PutJobSuccessResultRequest()
            {
                JobId = source.job.Id
            };
            await codepipeline.PutJobSuccessResultAsync(putJobSuccessRequestResult);
    }
}

请指导我或分享一些与此相关的博客/文章

1 个答案:

答案 0 :(得分:0)

请检查两件事:

  1. Lambda函数执行角色应具有我们的文档[1]中所述的“ codepipeline:PutJobSuccessResult”和“ codepipeline:PutJobFailureResult”权限。
  2. Lambda函数应具有将作业结果返回给CodePipeline的代码。请在[2]处找到PutJobSuccessResultRequest方法的描述,并在[3]处找到C#的代码示例。

参考:

[1] https://docs.aws.amazon.com/codepipeline/latest/userguide/actions-invoke-lambda-function.html#actions-invoke-lambda-function-create-function

[2] https://docs.aws.amazon.com/sdkfornet/v3/apidocs/index.html?page=CodePipeline/MCodePipelinePutJobSuccessResultPutJobSuccessResultRequest.html

[3] https://github.com/PaulDMendoza/aws-unzip-codepipeline-output-lambda/blob/master/Function.cs