

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

# 이벤트를 사용하여 Lambda 함수 실행
<a name="configure-service-events-lambda-function"></a>

 이 예제에서는 CodeArtifact 리포지토리의 패키지 버전이 게시, 수정 또는 삭제될 때 AWS Lambda 함수가 시작되도록 EventBridge 규칙을 구성하는 방법을 보여줍니다.

자세한 내용은 *Amazon EventBridge 사용 설명서*의 [자습서: EventBridge를 사용하여 AWS Lambda 함수 예약](https://docs.aws.amazon.com/eventbridge/latest/userguide/run-lambda-schedule.html)을 참조하세요.

**Topics**
+ [EventBridge 규칙 생성](#configure-service-events-lambda-create-rule)
+ [EventBridge 규칙 대상 생성](#configure-service-events-lambda-create-rule-target)
+ [EventBridge 권한 구성](#configure-service-events-lambda-permissions)

## EventBridge 규칙 생성
<a name="configure-service-events-lambda-create-rule"></a>

 Lambda 함수를 시작하는 규칙을 생성하려면 `put-rule` 명령을 `--name` 및 `--event-pattern` 옵션과 함께 사용하세요. 다음 패턴은 `my_domain` 도메인 내 모든 리포지토리의 `@types` 범위에 npm 패키지를 지정합니다.

```
aws events put-rule --name "{{MyCodeArtifactRepoRule}}" --event-pattern \
  '{"source":["aws.codeartifact"],"detail-type":["CodeArtifact Package Version State Change"],
  "detail":{"domainName":["{{my_domain}}"],"domainOwner":["{{111122223333}}"],"packageNamespace":["types"],"packageFormat":["{{npm}}"]}}'
```

## EventBridge 규칙 대상 생성
<a name="configure-service-events-lambda-create-rule-target"></a>

 다음 명령은 이벤트가 규칙과 일치할 때 Lambda 함수를 실행하는 규칙에 대상을 추가합니다. `arn` 파라미터의 경우 Lambda 함수의 Amazon 리소스 이름(ARN)을 지정합니다.

```
aws events put-targets --rule {{MyCodeArtifactRepoRule}} --targets \
  Id=1,Arn=arn:aws:lambda:{{us-west-2}}:{{111122223333}}:function:{{MyLambdaFunction}}
```

## EventBridge 권한 구성
<a name="configure-service-events-lambda-permissions"></a>

 `add-permission` 명령을 사용하여, Lambda 함수를 호출할 수 있는 권한을 규칙에 부여합니다. `--source-arn` 파라미터의 경우 이 예제의 앞부분에서 생성한 규칙의 ARN을 지정합니다.

```
aws lambda add-permission --function-name {{MyLambdaFunction}} \\
  --statement-id {{my-statement-id}} --action 'lambda:InvokeFunction' \\
  --principal events.amazonaws.com \\
  --source-arn arn:aws:events:{{us-west-2}}:{{111122223333}}:rule/{{MyCodeArtifactRepoRule}}
```