예: 기존 AWS Lambda 함수에 AWS CodeCommit 대한 트리거 생성 - AWS CodeCommit

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

예: 기존 AWS Lambda 함수에 AWS CodeCommit 대한 트리거 생성

Lambda 함수를 호출하는 트리거를 생성하는 가장 쉬운 방법은 Lambda 콘솔에서 해당 트리거를 생성하는 것입니다. 이 내장된 통합 기능을 통해 함수를 실행하는 데 필요한 권한을 확보할 수 있습니다. CodeCommit 기존 Lambda 함수에 트리거를 추가하려면, Lambda 콘솔로 이동하여 해당 함수를 선택합니다. 해당 함수의 트리거 탭에서 트리거 추가의 단계를 따릅니다. 이 단계는 Lambda 함수 생성의 단계와 비슷합니다.

리포지토리에서 Lambda 함수에 대한 트리거를 생성할 수도 있습니다. CodeCommit 이렇게 하려면 간접 호출할 기존 Lambda 함수를 선택해야 합니다. 또한 함수를 실행하는 데 필요한 권한을 수동으로 CodeCommit 구성해야 합니다.

Lambda 함수를 실행할 수 CodeCommit 있도록 권한을 수동으로 구성

Lambda 함수를 CodeCommit 호출하는 트리거를 생성하는 경우 Lambda 함수를 실행할 수 있는 CodeCommit 권한을 수동으로 구성해야 합니다. 이러한 수동 구성을 피하려면, Lambda 콘솔에서 함수에 대한 트리거를 생성하는 것이 좋습니다.

Lambda 함수를 CodeCommit 실행하도록 허용하려면
  1. 일반 텍스트 편집기를 열고 다음과 같이 Lambda 함수 이름, CodeCommit 리포지토리의 세부 정보, Lambda에서 허용하려는 작업을 지정하는 JSON 파일을 생성합니다.

    { "FunctionName": "MyCodeCommitFunction", "StatementId": "1", "Action": "lambda:InvokeFunction", "Principal": "codecommit.amazonaws.com", "SourceArn": "arn:aws:codecommit:us-east-1:111122223333:MyDemoRepo", "SourceAccount": "111122223333" }
  2. 파일을 기억하기 쉬운 이름 (예: .json) 이 포함된 JSON 파일로 저장합니다. AllowAccessfromMyDemoRepo

  3. 터미널(Linux, macOS, Windows) 또는 명령줄에서 방금 생성한 JSON 파일로 aws lambda add-permissions 명령을 실행하여 Lambda 함수와 연결된 리소스 정책에 권한을 추가합니다.

    aws lambda add-permission --cli-input-json file://AllowAccessfromMyDemoRepo.json

    이 명령은 다음과 비슷하게 방금 추가한 정책 명령문의 JSON을 반환합니다.

    { "Statement": "{\"Condition\":{\"StringEquals\":{\"AWS:SourceAccount\":\"111122223333\"},\"ArnLike\":{\"AWS:SourceArn\":\"arn:aws:codecommit:us-east-1:111122223333:MyDemoRepo\"}},\"Action\":[\"lambda:InvokeFunction\"],\"Resource\":\"arn:aws:lambda:us-east-1:111122223333:function:MyCodeCommitFunction\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"codecommit.amazonaws.com\"},\"Sid\":\"1\"}" }

    Lambda 함수의 리소스 정책에 대한 자세한 내용은 사용 설명서의 풀/푸시 이벤트 모델을 AddPermission참조하십시오.AWS Lambda

  4. https://console.aws.amazon.com/iam/ 에서 AWS Management Console 로그인하고 IAM 콘솔을 엽니다.

  5. 대시보드 탐색 창에서 역할을 선택하고, 역할 목록에서 lambda_basic_execution을 선택합니다.

  6. 역할에 대한 요약 페이지에서 권한 탭을 선택하고, 인라인 정책에서 역할 정책 생성을 선택합니다.

  7. 권한 설정 페이지에서 정책 생성기를 선택한 후 선택을 선택합니다.

  8. 권한 편집 페이지에서 다음을 수행합니다.

    • 효과에서 허용을 선택합니다.

    • AWS 서비스에서 AWS CodeCommit을 선택합니다.

    • 작업에서 를 선택합니다 GetRepository.

    • Amazon 리소스 이름(ARN)에 리포지토리의 ARN을 입력합니다(예: arn:aws:codecommit:us-east-1:111122223333:MyDemoRepo).

    설명문 추가를 선택하고 다음 단계를 선택합니다.

  9. 정책 검토 페이지에서 정책 적용을 선택합니다.

    정책 명령문은 다음 예제와 비슷할 것입니다.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt11111111", "Effect": "Allow", "Action": [ "codecommit:GetRepository" ], "Resource": [ "arn:aws:codecommit:us-east-1:111122223333:MyDemoRepo" ] } ] }

리포지토리 (콘솔) 에서 CodeCommit Lambda 함수에 대한 트리거 생성

Lambda 함수를 생성한 후 지정한 리포지토리 이벤트에 대한 응답으로 함수를 실행하는 CodeCommit 트리거를 생성할 수 있습니다.

참고

예제에 대한 트리거를 성공적으로 테스트하거나 실행하려면 먼저 함수 호출과 Lambda 함수를 CodeCommit 호출하여 리포지토리에 대한 정보를 가져올 수 있는 정책을 구성해야 합니다. 자세한 정보는 Lambda 함수를 CodeCommit 실행하도록 허용하려면을 참조하세요.

Lambda 함수를 위한 트리거 생성
  1. https://console.aws.amazon.com/codesuite/codecommit/home 에서 CodeCommit 콘솔을 엽니다.

  2. 리포지토리에서, 리포지토리 이벤트 트리거를 생성하려는 리포지토리를 선택합니다.

  3. 리포지토리의 탐색 창에서 설정을 선택한 후 트리거를 선택합니다.

  4. 트리거 생성을 선택합니다.

  5. 트리거 생성에서 다음과 같이 합니다.

    • 트리거 이름에 트리거의 이름 (예: MyLambdaFunctionTrigger) 을 입력합니다.

    • 이벤트에서 Lambda 함수를 트리거할 리포지토리 이벤트를 선택합니다.

      모든 리포지토리 이벤트를 선택하면, 다른 이벤트는 선택할 수 없습니다. 이벤트의 하위 세트를 선택하려면 모든 리포지토리 이벤트를 취소한 후 목록에서 원하는 이벤트를 선택하면 됩니다. 예를 들어, 사용자가 저장소에서 태그나 분기를 만들 때만 트리거를 실행하도록 하려면 모든 CodeCommit 저장소 이벤트를 제거한 다음 분기 또는 태그 만들기를 선택합니다.

    • 트리거를 리포지토리의 모든 브랜치에 적용하려면, 브랜치에서 선택 항목을 비워 둡니다. 이 기본 옵션으로 트리거를 모든 브랜치에 자동으로 적용할 수 있기 때문입니다. 이 트리거를 특정 브랜치에만 적용하려면 리포지토리 브랜치 목록에서 브랜치 이름을 최대 10개까지 선택합니다.

    • 사용할 서비스 선택에서 AWS Lambda를 선택합니다.

    • Lambda 함수에서 목록의 함수 이름을 선택하거나 함수의 ARN을 입력합니다.

    • (선택 사항) 사용자 지정 데이터에서 Lambda 함수에 포함하려는 정보를 입력합니다(예: 리포지토리에서의 개발을 논의하기 위해 개발자들이 사용하는 IRC 채널의 이름). 이 필드는 문자열입니다. 동적 파라미터를 전달하는 데 사용할 수 없습니다.

  6. (선택 사항) 트리거 테스트를 선택합니다. 이 옵션을 선택하면 해당 리포지토리의 가장 최근 커밋 ID를 포함해 리포지토리에 대한 샘플 데이터로 함수 간접 호출을 시도합니다. (커밋 이력이 없으면 그 대신 0으로 이루어진 샘플 값이 생성됩니다.) 이를 통해 Lambda 함수 간에 CodeCommit 액세스가 올바르게 구성되었는지 확인할 수 있습니다.

  7. 트리거 생성을 선택하여 트리거 생성하기를 완료합니다.

  8. 트리거의 기능을 확인하려면 커밋을 만들어 트리거를 구성한 리포지토리에 푸시합니다. Lambda 콘솔의 해당 함수에 대한 모니터링 탭에 Lambda 함수의 응답이 표시되어야 합니다.

리포지토리의 Lambda 함수에 대한 CodeCommit 트리거 생성 ()AWS CLI

또한 명령줄을 사용하여 리포지토리 이벤트 (예: 저장소에 커밋을 CodeCommit 푸시하는 경우) 에 대한 응답으로 Lambda 함수에 대한 트리거를 생성할 수 있습니다.

Lambda 함수를 위한 트리거 생성
  1. 일반 텍스트 편집기를 열고 다음을 지정하는 JSON 파일을 생성합니다.

    • Lambda 함수의 이름입니다.

    • 이 트리거로 모니터링하려는 리포지토리와 브랜치. (브랜치를 지정하지 않는 경우 트리거가 리포지토리의 모든 브랜치에 적용됩니다.)

    • 이 트리거를 활성화하는 이벤트.

    파일을 저장합니다.

    예를 들어, main 및 MyDemoRepopreprod라는 두 브랜치에 대해 이름이 지정된 Lambda 함수에 모든 리포지토리 이벤트를 게시하는 MyCodeCommitFunction이름이 지정된 리포지토리에 대한 트리거를 생성하려는 경우:

    { "repositoryName": "MyDemoRepo", "triggers": [ { "name": "MyLambdaFunctionTrigger", "destinationArn": "arn:aws:lambda:us-east-1:111122223333:function:MyCodeCommitFunction", "customData": "", "branches": [ "main", "preprod" ], "events": [ "all" ] } ] }

    JSON에는 리포지토리의 각 트리거에 대한 트리거 블록이 있어야 합니다. 리포지토리에 대한 트리거를 두 개 이상 만들려면 JSON에 추가 블록을 포함합니다. 이 파일에 만든 모든 트리거는 지정된 리포지토리를 위한 것임을 기억하세요. 단일 JSON 파일에는 다수의 리포지토리에 대한 트리거를 생성할 수 없습니다. 예를 들어, 리포지토리에 대한 트리거를 두 개 생성하려는 경우 두 개의 트리거 블록이 있는 JSON 파일을 만들 수 있습니다. 다음 예제에서는 두 번째 트리거 블록에 지정된 브랜치가 없으므로, 해당 트리거는 모든 브랜치에 적용됩니다.

    { "repositoryName": "MyDemoRepo", "triggers": [ { "name": "MyLambdaFunctionTrigger", "destinationArn": "arn:aws:lambda:us-east-1:111122223333:function:MyCodeCommitFunction", "customData": "", "branches": [ "main", "preprod" ], "events": [ "all" ] }, { "name": "MyOtherLambdaFunctionTrigger", "destinationArn": "arn:aws:lambda:us-east-1:111122223333:function:MyOtherCodeCommitFunction", "customData": "", "branches": [], "events": [ "updateReference", "deleteReference" ] } ] }

    커밋이 리포지토리에 푸시되는 경우와 같이 지정한 이벤트에 대해 트리거를 만들 수 있습니다. 이벤트 유형에는 다음이 포함됩니다.

    • all - 지정된 리포지토리 및 브랜치의 모든 이벤트.

    • updateReference - 커밋이 지정된 리포지토리 및 브랜치로 푸시되는 경우.

    • createReference - 새 브랜치 또는 태그가 지정된 리포지토리에 생성되는 경우.

    • deleteReference - 브랜치 또는 태그가 지정된 리포지토리에서 삭제되는 경우.

    참고

    트리거에는 이벤트 유형을 두 개 이상 사용할 수 있습니다. 하지만 all을 지정하면 다른 이벤트를 지정할 수 없습니다.

    유효한 이벤트 유형의 전체 목록을 보려면 터미널 또는 명령 프롬프트에서 aws codecommit put-repository-triggers help를 입력합니다.

    또한 customData에 문자열을 포함할 수 있습니다(예: 개발자가 이 리포지토리에서의 개발을 논의할 때 사용하는 IRC 채널 이름). 이 필드는 문자열입니다. 동적 파라미터를 전달하는 데 사용할 수 없습니다. 이 문자열은 트리거에 대한 응답으로 반환된 CodeCommit JSON에 속성으로 추가됩니다.

  2. (선택 사항) 터미널 또는 명령 프롬프트에서 test-repository-triggers 명령을 실행합니다. 예를 들어 다음은 trigger.json이라는 JSON 파일이 유효하고 Lambda 함수를 CodeCommit 트리거할 수 있는지 테스트하는 데 사용됩니다. 이 테스트에서는 실제 데이터가 없는 경우 샘플 데이터를 사용하여 함수를 트리거합니다.

    aws codecommit test-repository-triggers --cli-input-json file://trigger.json

    이 명령이 제대로 실행되면 다음과 비슷한 정보를 반환합니다.

    { "successfulExecutions": [ "MyLambdaFunctionTrigger" ], "failedExecutions": [] }
  3. 터미널 또는 명령 프롬프트에서 명령을 실행하여 트리거를 생성합니다. put-repository-triggers CodeCommit 예를 들어 trigger.json이라는 JSON 파일을 사용하여 트리거를 생성하려면 다음과 같이 합니다.

    aws codecommit put-repository-triggers --cli-input-json file://trigger.json

    이 명령은 다음과 유사한 구성 ID를 반환합니다.

    { "configurationId": "0123456-I-AM-AN-EXAMPLE" }
  4. 트리거의 구성을 보려면, 리포지토리 이름을 지정하여 get-repository-triggers 명령을 실행합니다.

    aws codecommit get-repository-triggers --repository-name MyDemoRepo

    이 명령은 리포지토리에 대해 구성된 모든 트리거의 다음과 비슷한 구조를 반환합니다.

    { "configurationId": "0123456-I-AM-AN-EXAMPLE", "triggers": [ { "events": [ "all" ], "destinationArn": "arn:aws:lambda:us-east-1:111122223333:MyCodeCommitFunction", "branches": [ "main", "preprod" ], "name": "MyLambdaFunctionTrigger", "customData": "Project ID 12345" } ] }
  5. 트리거의 기능을 확인하려면 커밋을 만들어 트리거를 구성한 리포지토리에 푸시합니다. Lambda 콘솔의 해당 함수에 대한 모니터링 탭에 Lambda 함수의 응답이 표시되어야 합니다.