

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 事件來執行 Lambda 函數
<a name="configure-service-events-lambda-function"></a>

 此範例說明如何設定 EventBridge 規則，在 CodeArtifact 儲存庫中的套件版本發佈、修改或刪除時啟動 AWS Lambda 函數。

如需詳細資訊，請參閱《Amazon [ EventBridge 使用者指南》中的教學課程：使用 EventBridge 排程 AWS Lambda 函數](https://docs.aws.amazon.com/eventbridge/latest/userguide/run-lambda-schedule.html)。 * EventBridge * 

**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 Resource Name (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}}
```