

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用事件来运行 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)。

**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 函数的规则，请使用带有 `--name` 和 `--event-pattern` 选项的 `put-rule` 命令。以下模式在 `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}}
```