AWS CodeCommit 는 더 이상 신규 고객이 사용할 수 없습니다. AWS CodeCommit 의 기존 고객은 정상적으로 서비스를 계속 이용할 수 있습니다. 자세히 알아보기
기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
예: AWS Lambda 함수에 대한 AWS CodeCommit 트리거 생성
CodeCommit 리포지토리의 이벤트가 Lambda 함수를 호출하도록 리포지토리에 대한 트리거를 생성할 수 있습니다. 이 예제에서는 리포지토리를 Amazon CloudWatch 로그에 복제하는 데 URL 사용되는를 반환하는 Lambda 함수를 생성합니다.
Lambda 함수 생성
Lambda 콘솔을 사용하여 함수를 생성할 때 Lambda 함수에 대한 트리거를 CodeCommit 생성할 수도 있습니다. 다음 절차에는 샘플 Lambda 함수가 포함되어 있습니다. 샘플은 JavaScript Python이라는 두 가지 언어로 제공됩니다. 함수는 리포지토리를 CloudWatch 로그에 복제하는 데 URLs 사용되는를 반환합니다.
Lambda 청사진을 사용하여 Lambda 함수를 생성하려면
에 로그인 AWS Management Console 하고에서 AWS Lambda 콘솔을 엽니다https://console.aws.amazon.com/lambda/
. -
Lambda 함수 페이지에서 함수 생성을 선택합니다. (이전에 Lambda를 사용해본 적이 없다면 지금 시작을 선택합니다.)
-
함수 생성 페이지에서 처음부터 새로 작성을 선택합니다. 함수 이름에 함수의 이름을 입력합니다. 예:
MyLambdaFunctionforCodeCommit
. 런타임에서 함수를 작성하는 데 사용할 언어를 선택한 다음 함수 생성을 선택합니다. -
구성 탭에서 트리거 추가를 선택합니다.
-
트리거 구성CodeCommit의 서비스 드롭다운 목록에서를 선택합니다.
-
리포지토리 이름에서, 리포지토리 이벤트에 반응하여 Lambda 함수를 사용하는 트리거를 구성하게 될 리포지토리의 이름을 선택합니다.
-
트리거 이름에 트리거 이름(예:
MyLambdaFunctionTrigger
)을 입력합니다. -
이벤트에서 Lambda 함수를 트리거할 리포지토리 이벤트를 선택합니다. 모든 리포지토리 이벤트를 선택하면, 다른 이벤트는 선택할 수 없습니다. 이벤트의 하위 세트를 선택하려면 모든 리포지토리 이벤트를 취소한 후 목록에서 원하는 이벤트를 선택하면 됩니다. 예를 들어 사용자가 AWS CodeCommit 리포지토리에서 태그 또는 브랜치를 생성할 때만 트리거를 실행하려면 모든 리포지토리 이벤트를 제거한 다음 브랜치 또는 태그 생성을 선택합니다.
-
해당 트리거가 리포지토리의 모든 브랜치에 적용되도록 하고 싶다면 브랜치에서 모든 브랜치를 선택하면 됩니다. 이를 원하지 않은 경우 특정 브랜치를 선택합니다. 리포지토리의 기본 브랜치는 기본적으로 추가됩니다. 이 기본 브랜치는 그대로 유지하거나 목록에서 삭제할 수 있습니다. 리포지토리 브랜치 목록에서 최대 10개의 브랜치 이름을 선택합니다.
-
(선택 사항) 사용자 지정 데이터에서 Lambda 함수에 포함하려는 정보(예: 개발자가 리포지토리에서 개발을 논의하는 데 사용하는 IRC 채널의 이름)를 입력합니다. 이 필드는 문자열입니다. 동적 파라미터를 전달하는 데 사용할 수 없습니다.
추가를 선택합니다.
-
-
구성 페이지의 함수 코드에 있는 코드 입력 유형에서 코드 인라인 편집을 선택합니다. 런타임에서 Node.js를 선택합니다. 샘플 Python 함수를 생성하려면 Python을 선택합니다.
-
코드 항목 유형에서 코드 인라인 편집을 선택한 후 hello world 코드를 다음 두 샘플 중 하나로 교체합니다.
Node.js의 경우:
import { CodeCommitClient, GetRepositoryCommand, } from "@aws-sdk/client-codecommit"; const codecommit = new CodeCommitClient({ region: "your-region" }); /** * @param {{ Records: { codecommit: { references: { ref: string }[] }, eventSourceARN: string }[]} event */ export const handler = async (event) => { // Log the updated references from the event const references = event.Records[0].codecommit.references.map( (reference) => reference.ref, ); console.log("References:", references); // Get the repository from the event and show its git clone URL const repository = event.Records[0].eventSourceARN.split(":")[5]; const params = { repositoryName: repository, }; try { const data = await codecommit.send(new GetRepositoryCommand(params)); console.log("Clone URL:", data.repositoryMetadata.cloneUrlHttp); return data.repositoryMetadata.cloneUrlHttp; } catch (error) { console.error("Error:", error); throw new Error( `Error getting repository metadata for repository ${repository}`, ); } };
Python의 경우:
import json import boto3 codecommit = boto3.client("codecommit") def lambda_handler(event, context): # Log the updated references from the event references = { reference["ref"] for reference in event["Records"][0]["codecommit"]["references"] } print("References: " + str(references)) # Get the repository from the event and show its git clone URL repository = event["Records"][0]["eventSourceARN"].split(":")[5] try: response = codecommit.get_repository(repositoryName=repository) print("Clone URL: " + response["repositoryMetadata"]["cloneUrlHttp"]) return response["repositoryMetadata"]["cloneUrlHttp"] except Exception as e: print(e) print( "Error getting repository {}. Make sure it exists and that your repository is in the same region as this function.".format( repository ) ) raise e
-
권한 탭의 Execution role(실행 역할)에서 IAM 콘솔에서 열 역할을 선택합니다. 트리거를 사용할 리포지토리에 대한
GetRepository
권한을 추가하도록 연결된 정책을 편집합니다.
AWS CodeCommit 리포지토리에서 Lambda 함수에 대한 트리거 보기
Lambda 함수를 생성했으면 AWS CodeCommit에서 해당 트리거를 확인하고 테스트할 수 있습니다. 트리거를 테스트하면 지정한 리포지토리 이벤트에 반응하여 함수가 실행됩니다.
Lambda 함수에 대한 트리거를 조회하고 테스트하려면
-
https://console.aws.amazon.com/codesuite/codecommit/home
에서 CodeCommit 콘솔을 엽니다. -
리포지토리에서 트리거를 보려는 리포지토리를 선택합니다.
-
리포지토리의 탐색 창에서 설정을 선택한 후 트리거를 선택합니다.
-
리포지토리의 트리거 목록을 검토합니다. Lambda 콘솔에서 생성한 트리거가 보일 것입니다. 목록에서 트리거를 선택한 후 트리거 테스트를 선택합니다. 이 옵션을 선택하면 해당 리포지토리의 가장 최근 커밋 ID를 포함해 리포지토리에 대한 샘플 데이터로 함수 간접 호출을 시도합니다. (커밋 이력이 없으면 그 대신 0으로 이루어진 샘플 값이 생성됩니다.) 이렇게 하면 AWS CodeCommit 및 Lambda 함수 간에 액세스를 올바르게 구성했는지 확인할 수 있습니다.
-
트리거의 기능을 좀 더 확인하려면 커밋을 만들어 트리거를 구성한 리포지토리에 푸시합니다. Lambda 콘솔의 해당 함수에 대한 모니터링 탭에 Lambda 함수의 응답이 표시되어야 합니다. 모니터링 탭에서 로그인 보기를 CloudWatch 선택합니다. CloudWatch 콘솔이 새 탭에서 열리고 함수에 대한 이벤트가 표시됩니다. 커밋을 푸시한 시점에 상응하는 로그 스트림을 목록에서 선택합니다. 다음과 유사한 이벤트 데이터가 출력되어야 합니다.
START RequestId: 70afdc9a-EXAMPLE Version: $LATEST 2015-11-10T18:18:28.689Z 70afdc9a-EXAMPLE References: [ 'refs/heads/
main
' ] 2015-11-10T18:18:29.814Z 70afdc9a-EXAMPLE Clone URL: https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo
END RequestId: 70afdc9a-EXAMPLE REPORT RequestId: 70afdc9a-EXAMPLE Duration: 1126.87 ms Billed Duration: 1200 ms Memory Size: 128 MB Max Memory Used: 14 MB