자습서: Lambda 호출 작업과 함께 변수 사용 - AWS CodePipeline

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

자습서: Lambda 호출 작업과 함께 변수 사용

Lambda 호출 작업은 입력의 일부로 다른 작업의 변수를 사용하고 출력과 함께 새로운 변수를 반환할 수 있습니다. 의 작업 변수에 대한 자세한 내용은 CodePipeline 을 참조하십시오Variables.

이 자습서의 마지막에서는 다음 항목을 갖게 됩니다.

  • 다음과 같은 Lambda 호출 작업:

    • CodeCommit 소스 CommitId 액션의 변수를 사용합니다.

    • dateTime, testRunIdregion의 세 가지 새 변수 출력

  • Lambda 호출 작업의 새 변수를 사용하여 테스트 URL 및 테스트 실행 ID를 제공하는 수동 승인 작업

  • 새 작업으로 업데이트된 파이프라인

필수 조건

시작하기 전에 다음을 완비해야 합니다.

1단계: Lambda 함수 생성

Lambda 함수 및 Lambda 실행 역할을 만들려면 다음 단계를 따르세요. Lambda 함수를 만든 후 파이프라인에 Lambda 작업을 추가합니다.

Lambda 함수 및 실행 역할을 생성하려면
  1. 에 AWS Management Console 로그인하고 https://console.aws.amazon.com/lambda/ 에서 AWS Lambda 콘솔을 엽니다.

  2. 함수 생성을 선택합니다. Author from scratch(새로 작성)를 선택합니다.

  3. Function name(함수 이름)myInvokeFunction과 같은 함수 이름을 입력합니다. Runtime(실행 시간)에서 기본 옵션을 선택된 상태로 둡니다.

  4. 실행 역할 선택 또는 생성을 확장합니다. 기본 Lambda 권한을 가진 새 역할 생성을 선택합니다.

  5. 함수 생성을 선택합니다.

  6. 다른 작업의 변수를 사용하려면 이 변수를 Lambda 호출 작업 구성에서 UserParameters에 전달해야 합니다. 자습서의 뒷부분에서 파이프라인에 작업을 구성하지만 변수가 전달될 것으로 가정하여 코드를 추가합니다.

    const commitId = event["CodePipeline.job"].data.actionConfiguration.configuration.UserParameters;

    새 변수를 생성하려면 입력에서 outputVariables라는 속성을 putJobSuccessResult로 설정합니다. putJobFailureResult의 일부로 변수를 생성할 수 없습니다.

    const successInput = { jobId: jobId, outputVariables: { testRunId: Math.floor(Math.random() * 1000).toString(), dateTime: Date(Date.now()).toString(), region: lambdaRegion } };

    새 함수에서 Edit code inline(코드 인라인 편집)을 선택된 상태로 두고 index.js에 다음 예제 코드를 붙여 넣습니다.

    var AWS = require('aws-sdk'); exports.handler = function(event, context) { var codepipeline = new AWS.CodePipeline(); // Retrieve the Job ID from the Lambda action var jobId = event["CodePipeline.job"].id; // Retrieve the value of UserParameters from the Lambda action configuration in CodePipeline, // in this case it is the Commit ID of the latest change of the pipeline. var params = event["CodePipeline.job"].data.actionConfiguration.configuration.UserParameters; // The region from where the lambda function is being executed. var lambdaRegion = process.env.AWS_REGION; // Notify CodePipeline of a successful job var putJobSuccess = function(message) { var params = { jobId: jobId, outputVariables: { testRunId: Math.floor(Math.random() * 1000).toString(), dateTime: Date(Date.now()).toString(), region: lambdaRegion } }; codepipeline.putJobSuccessResult(params, function(err, data) { if(err) { context.fail(err); } else { context.succeed(message); } }); }; // Notify CodePipeline of a failed job var putJobFailure = function(message) { var params = { jobId: jobId, failureDetails: { message: JSON.stringify(message), type: 'JobFailed', externalExecutionId: context.invokeid } }; codepipeline.putJobFailureResult(params, function(err, data) { context.fail(message); }); }; var sendResult = function() { try { console.log("Testing commit - " + params); // Your tests here // Succeed the job putJobSuccess("Tests passed."); } catch (ex) { // If any of the assertions failed then fail the job putJobFailure(ex); } }; sendResult(); };
  7. 저장을 선택합니다.

  8. 화면 상단에 있는 Amazon 리소스 이름(ARN)을 복사합니다.

  9. 마지막 단계로 https://console.aws.amazon.com/iam/ 에서 AWS Identity and Access Management (IAM) 콘솔을 엽니다. Lambda 실행 역할을 수정하여 다음 정책을 추가합니다. AWSCodePipelineCustomActionAccess Lambda 실행 역할을 생성하거나 역할 정책을 수정하는 단계는 2단계: Lambda 함수 생성 단원을 참조하십시오.

2단계: 파이프라인에 Lambda 호출 작업 및 수동 승인 작업 추가

이 단계에서는 파이프라인에 Lambda 호출 작업을 추가합니다. [Test(테스트)]라는 단계의 일부로 작업을 추가합니다. 작업 유형은 호출 작업입니다. 그런 다음 호출 작업 후 수동 승인 작업을 추가합니다.

파이프라인에 Lambda 작업 및 수동 승인 작업을 추가하는 방법
  1. https://console.aws.amazon.com/codepipeline/ 에서 CodePipeline 콘솔을 엽니다.

    AWS 계정과 연결된 모든 파이프라인의 이름이 표시됩니다. 작업을 추가할 파이프라인을 선택합니다.

  2. 파이프라인에 Lambda 테스트 작업을 추가합니다.

    1. 파이프라인을 편집하기 위해 편집을 선택합니다. 기존 파이프라인에서 소스 작업 이후에 단계를 추가합니다. 단계 이름을 입력합니다(예:Test).

    2. 새 단계에서 아이콘을 선택하여 작업을 추가합니다. Action name(작업 이름)에 호출 작업의 이름을 입력합니다(예: Test_Commit).

    3. 작업 공급자에서 AWS Lambda을 선택합니다.

    4. Input artifacts(입력 아티팩트)에서 소스 작업의 출력 아티팩트 이름을 선택합니다(예: SourceArtifact).

    5. 함수 이름에서 생성한 Lambda 함수의 이름을 선택합니다.

    6. 사용자 매개변수에 CodeCommit 커밋 ID의 변수 구문을 입력합니다. 그러면 파이프라인이 실행될 때마다 커밋을 검토하고 승인하도록 하는 출력 변수가 생성됩니다.

      #{SourceVariables.CommitId}
    7. Variable namespace(변수 네임스페이스)TestVariables와 같은 네임스페이스 이름을 추가합니다.

    8. 완료를 선택합니다.

  3. 파이프라인에 수동 승인 작업을 추가합니다.

    1. 파이프라인이 편집 모드 상태인 경우, 호출 작업 후에 단계를 추가합니다. 단계 이름을 입력합니다(예:Approval).

    2. 새 단계에서 아이콘을 선택하여 작업을 추가합니다. Action name(작업 이름)에 승인 작업의 이름을 입력합니다(예:Change_Approval).

    3. Action provider(작업 공급자)에서 수동 승인을 선택합니다.

    4. URL for review(검토할 URL)에서 region 변수와 CommitId 변수에 대한 변수 구문을 추가하여 URL을 구성합니다. 출력 변수를 제공하는 작업에 할당되는 네임스페이스를 사용해야 합니다.

      이 예제의 경우 CodeCommit 작업에 대한 변수 구문이 있는 URL에는 기본 네임스페이스가 SourceVariables 있습니다. Lambda 리전 출력 변수의 네임스페이스는 TestVariables입니다. URL은 다음과 같습니다.

      https://#{TestVariables.region}.console.aws.amazon.com/codesuite/codecommit/repositories/MyDemoRepo/commit/#{SourceVariables.CommitId}

      Comments(설명)에서 testRunId 변수에 대한 변수 구문을 추가하여 승인 메시지 텍스트를 구성합니다. 이 예제의 경우 Lambda testRunId 출력 변수에 대한 변수 구문을 사용하는 URL의 네임스페이스는 TestVariables입니다. 다음 메시지를 입력합니다.

      Make sure to review the code before approving this action. Test Run ID: #{TestVariables.testRunId}
  4. Done(완료)을 선택하여 작업에 대한 편집 화면을 닫은 다음 Done(완료)을 선택하여 해당 단계의 편집 화면을 닫습니다. 파이프라인을 저장하려면 Done(완료)을 선택합니다. 이제 완료된 파이프라인에는 소스, 테스트, 승인 및 배포 단계로 구성된 구조가 포함됩니다.

    Release change(변경 사항 배포)를 선택하여 파이프라인 구조를 통해 최신 변경 사항을 실행합니다.

  5. 파이프라인이 수동 승인 단계에 도달하면 Review(검토)를 선택합니다. 해결된 변수는 커밋 ID의 URL로 나타납니다. 승인자는 커밋을 볼 URL을 선택할 수 있습니다.

  6. 파이프라인이 성공적으로 실행되면 작업 실행 기록 페이지에서 변수 값을 볼 수도 있습니다.