AWS Lambda - AWS CodePipeline

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

AWS Lambda

Lambda 함수를 파이프라인의 작업으로 실행할 수 있습니다. 이 함수에 대한 입력인 이벤트 객체를 사용하면 함수가 작업 구성, 입력 아티팩트 위치, 출력 아티팩트 위치, 및 아티팩트에 액세스하는 데 필요한 기타 정보에 액세스할 수 있습니다. Lambda 호출 함수에 전달되는 예제 이벤트는 예제 JSON 이벤트 단원을 참조하십시오. Lambda 함수 구현의 일환으로 PutJobSuccessResult API 또는 PutJobFailureResult API에 대한 호출이 있어야 합니다. 그렇지 않으면 작업이 시간 초과될 때까지 이 작업의 실행이 중단됩니다. 작업에 대한 출력 아티팩트를 지정하면 함수 구현의 일환으로 해당 아티팩트를 S3 버킷에 업로드해야 합니다.

중요

CodePipeline이 Lambda로 전송하는 JSON 이벤트를 기록하지 마십시오. 이렇게 하면 사용자 보안 인증이 CloudWatch Logs에 기록될 수 있기 때문입니다. CodePipeline 역할은 JSON 이벤트를 사용하여 artifactCredentials 필드의 Lambda에 임시 보안 인증을 전달합니다. 예제 이벤트는 예제 JSON 이벤트을 참조하세요.

작업 유형

  • 범주: Invoke

  • 소유자: AWS

  • 공급자: Lambda

  • 버전: 1

구성 파라미터

FunctionName

필수 항목 여부: 예

FunctionName은 Lambda에서 생성된 함수의 이름입니다.

UserParameters

필수 항목 여부: 아니요

Lambda 함수에서 입력으로 처리할 수 있는 문자열입니다.

입력 아티팩트

  • 아티팩트 수: 0 to 5

  • 설명: Lambda 함수에서 사용할 수 있도록 할 아티팩트 세트입니다.

출력 아티팩트

  • 아티팩트 수: 0 to 5

  • 설명: Lambda 함수에서 출력으로 생성한 아티팩트 세트입니다.

출력 변수

이 작업을 수행하면 PutJobSuccessResult API 요청의 outputVariables 섹션에 포함된 모든 키-값 페어가 변수로 생성됩니다.

CodePipeline의 변수에 대한 자세한 내용은 Variables 단원을 참조하십시오.

예제 작업 구성

YAML
Name: Lambda Actions: - Name: Lambda ActionTypeId: Category: Invoke Owner: AWS Provider: Lambda Version: '1' RunOrder: 1 Configuration: FunctionName: myLambdaFunction UserParameters: 'http://192.0.2.4' OutputArtifacts: [] InputArtifacts: [] Region: us-west-2
JSON
{ "Name": "Lambda", "Actions": [ { "Name": "Lambda", "ActionTypeId": { "Category": "Invoke", "Owner": "AWS", "Provider": "Lambda", "Version": "1" }, "RunOrder": 1, "Configuration": { "FunctionName": "myLambdaFunction", "UserParameters": "http://192.0.2.4" }, "OutputArtifacts": [], "InputArtifacts": [], "Region": "us-west-2" } ] },

예제 JSON 이벤트

Lambda 작업은 작업 ID, 파이프라인 작업 구성, 입력 및 출력 아티팩트 위치, 아티팩트에 대한 모든 암호화 정보가 포함된 JSON 이벤트를 전송합니다. 작업자가 이 세부 정보에 액세스하여 Lambda 작업을 완료합니다. 자세한 내용은 작업 세부 정보를 참조하십시오. 다음은 이벤트 예제입니다.

{ "CodePipeline.job": { "id": "11111111-abcd-1111-abcd-111111abcdef", "accountId": "111111111111", "data": { "actionConfiguration": { "configuration": { "FunctionName": "MyLambdaFunction", "UserParameters": "input_parameter" } }, "inputArtifacts": [ { "location": { "s3Location": { "bucketName": "bucket_name", "objectKey": "filename" }, "type": "S3" }, "revision": null, "name": "ArtifactName" } ], "outputArtifacts": [], "artifactCredentials": { "secretAccessKey": "secret_key", "sessionToken": "session_token", "accessKeyId": "access_key_ID" }, "continuationToken": "token_ID", "encryptionKey": { "id": "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "type": "KMS" } } } }

JSON 이벤트는 CodePipeline의 Lambda 작업에 대한 다음과 같은 작업 세부 정보를 제공합니다.

  • id: 작업의 고유한 시스템 생성 ID입니다.

  • accountId: 작업과 연결된 AWS 계정 ID입니다.

  • data: 작업자가 작업을 완료하는 데 필요한 기타 정보입니다.

    • actionConfiguration: Lambda 작업에 대한 작업 파라미터입니다. 정의는 구성 파라미터 단원을 참조하십시오.

    • inputArtifacts: 작업에 제공된 아티팩트입니다.

      • location: 아티팩트 스토어 위치입니다.

        • s3Location: 작업에 대한 입력 아티팩트 위치 정보입니다.

          • bucketName: 작업에 대한 파이프라인 아티팩트 스토어의 이름입니다(예: 이름이 codepipeline-us-east-2-1234567890인 Amazon S3 버킷).

          • objectKey: 애플리케이션 이름입니다(예: CodePipelineDemoApplication.zip).

        • type: 위치에서 아티팩트의 유형입니다. 현재 유효한 아티팩트 유형은 S3뿐입니다.

      • revision: 아티팩트의 개정 ID입니다. 객체 유형에 따라 커밋 ID(GitHub) 또는 개정 ID(Amazon Simple Storage Service)일 수 있습니다. 자세한 내용은 ArtifactRevision을 참조하십시오.

      • name: 작업할 아티팩트의 이름입니다(예: MyApp).

    • outputArtifacts: 작업의 출력입니다.

      • location: 아티팩트 스토어 위치입니다.

        • s3Location: 작업에 대한 출력 아티팩트 위치 정보입니다.

          • bucketName: 작업에 대한 파이프라인 아티팩트 스토어의 이름입니다(예: 이름이 codepipeline-us-east-2-1234567890인 Amazon S3 버킷).

          • objectKey: 애플리케이션 이름입니다(예: CodePipelineDemoApplication.zip).

        • type: 위치에서 아티팩트의 유형입니다. 현재 유효한 아티팩트 유형은 S3뿐입니다.

      • revision: 아티팩트의 개정 ID입니다. 객체 유형에 따라 커밋 ID(GitHub) 또는 개정 ID(Amazon Simple Storage Service)일 수 있습니다. 자세한 내용은 ArtifactRevision을 참조하십시오.

      • name: 아티팩트의 출력 이름입니다(예: MyApp).

    • artifactCredentials: Amazon S3 버킷에서 입력 및 출력 아티팩트에 액세스하는 데 사용되는 AWS 세션 자격 증명입니다. 이러한 자격 증명은 AWS Security Token Service(AWS STS)에서 발급한 임시 자격 증명입니다.

      • secretAccessKey: 세션에 대한 보안 액세스 키입니다.

      • sessionToken: 세션에 대한 토큰입니다.

      • accessKeyId: 세션에 대한 보안 액세스 키입니다.

    • continuationToken: 작업에서 생성하는 토큰입니다. 향후 작업에서는 이 토큰을 사용하여 실행 중인 작업 인스턴스를 식별합니다. 작업이 완료되면 구성 토큰이 제공되지 않아야 합니다.

    • encryptionKey: 아티팩트 스토어에서 데이터를 암호화하는 데 사용되는 암호화 키입니다(예: AWS KMS 키). 정의하지 않으면 Amazon Simple Storage Service의 기본 키가 사용됩니다.

      • id: 키를 식별하는 데 사용되는 ID입니다. AWS KMS 키의 경우 키 ID, 키 ARN 또는 별칭 ARN을 사용할 수 있습니다.

      • type: 암호화 키의 유형입니다(예: AWS KMS 키).

이 작업을 수행할 때 참조할 수 있는 관련 리소스는 다음과 같습니다.