接入教程
1. 登录 AWS 控制台并导航到 EventBridge。
2. 创建事件总线或使用默认总线接收事件。
3. 定义规则以筛选特定事件模式。
4. 设置目标(如 Lambda 函数)来处理匹配的事件。
5. 激活规则并测试事件流。
6. 监控事件处理日志以优化配置。
使用Python发送事件到EventBridge
import boto3
import json
# 初始化EventBridge客户端
events_client = boto3.client('events', region_name='us-east-1', aws_access_key_id='YOUR_API_KEY', aws_secret_access_key='YOUR_SECRET_KEY')
# 准备事件详情
event_detail = {
'source': 'my.application',
'detail-type': 'UserSignup',
'detail': json.dumps({'username': 'john_doe', 'plan': 'premium'})
}
# 发送事件到EventBridge
try:
response = events_client.put_events(
Entries=[
{
'Source': event_detail['source'],
'DetailType': event_detail['detail-type'],
'Detail': event_detail['detail'],
'EventBusName': 'default'
}
]
)
print('Event sent:', response['Entries'][0]['EventId'])
except Exception as e:
print('Error sending event:', e)
使用PHP将事件发布到EventBridge
<?php
require 'vendor/autoload.php';
use Aws\EventBridge\EventBridgeClient;
use Aws\Exception\AwsException;
// 配置EventBridge客户端
$client = new EventBridgeClient([
'version' => 'latest',
'region' => 'us-east-1',
'credentials' => [
'key' => 'YOUR_API_KEY',
'secret' => 'YOUR_SECRET_KEY'
]
]);
// 构建事件参数
$params = [
'Entries' => [
[
'Source' => 'my.application',
'DetailType' => 'OrderPlaced',
'Detail' => json_encode(['orderId' => '12345', 'amount' => 99.99]),
'EventBusName' => 'default'
]
]
];
// 发送事件
try {
$result = $client->putEvents($params);
echo 'Event ID: ' . $result->get('Entries')[0]['EventId'] . "\n";
} catch (AwsException $e) {
echo 'Error: ' . $e->getMessage() . "\n";
}
?>
使用JavaScript通过EventBridge发送事件
const AWS = require('aws-sdk');
// 配置AWS SDK
AWS.config.update({
region: 'us-east-1',
accessKeyId: 'YOUR_API_KEY',
secretAccessKey: 'YOUR_SECRET_KEY'
});
const eventbridge = new AWS.EventBridge();
// 定义事件参数
const params = {
Entries: [
{
Source: 'my.application',
DetailType: 'FileUploaded',
Detail: JSON.stringify({ filename: 'report.pdf', size: 2048 }),
EventBusName: 'default'
}
]
};
// 发送事件
eventbridge.putEvents(params, (err, data) => {
if (err) {
console.log('Error:', err);
} else {
console.log('Event sent, ID:', data.Entries[0].EventId);
}
});
常见问题
EventBridge 支持哪些类型的事件源?
EventBridge 支持多种事件源,包括亚马逊云服务(如 EC2、S3、Lambda)、SaaS 合作伙伴(如 Datadog、PagerDuty)以及自定义应用程序。您可以通过 API 或控制台配置事件规则来匹配这些事件。
如何设置 EventBridge 规则来过滤事件?
您可以在 EventBridge 中创建规则,指定事件模式(如来源、详情类型或具体属性)来过滤事件。匹配的事件会被路由到目标(如 Lambda 函数或 SQS 队列)。规则可通过 API、CLI 或控制台管理。
EventBridge 的事件传递保证是什么?
EventBridge 提供至少一次的事件传递保证,确保事件至少被传递一次到目标。在极少数情况下,事件可能重复传递,因此建议目标服务设计为幂等操作以处理重复事件。
Aitishiku.com