以下是一个使用AWS SDK for Python(Boto3)的示例代码,将Amazon EventBridge事件转发到加密的SQS队列(使用Amazon管理的密钥):
import boto3
def create_event_bridge_rule(source, detail_type, target_arn):
client = boto3.client('events')
response = client.put_rule(
Name='my-event-bridge-rule',
EventPattern={
'source': [source],
'detail-type': [detail_type]
},
State='ENABLED',
Description='My EventBridge rule',
)
response = client.put_targets(
Rule='my-event-bridge-rule',
Targets=[
{
'Id': '1',
'Arn': target_arn,
}
]
)
return response
def create_encrypted_sqs_queue(queue_name):
client = boto3.client('sqs')
response = client.create_queue(
QueueName=queue_name,
Attributes={
'KmsMasterKeyId': 'alias/aws/sqs',
'KmsDataKeyReusePeriodSeconds': '300'
}
)
return response['QueueUrl']
def add_permission_to_sqs_queue(queue_url, account_id):
client = boto3.client('sqs')
response = client.add_permission(
QueueUrl=queue_url,
Label='event-bridge',
AWSAccountId=[account_id],
Actions=['SQS:SendMessage']
)
return response
# 创建加密的SQS队列
queue_name = 'my-encrypted-sqs-queue'
queue_url = create_encrypted_sqs_queue(queue_name)
# 将事件桥规则与SQS队列关联
source = 'aws.ec2'
detail_type = 'EC2 Instance State-change Notification'
target_arn = queue_url
create_event_bridge_rule(source, detail_type, target_arn)
# 授予事件桥权限发送消息到SQS队列
account_id = boto3.client('sts').get_caller_identity().get('Account')
add_permission_to_sqs_queue(queue_url, account_id)
以上代码示例中,create_event_bridge_rule函数用于创建事件桥规则,create_encrypted_sqs_queue函数用于创建加密的SQS队列,add_permission_to_sqs_queue函数用于向SQS队列添加权限。
在使用代码示例之前,请确保已正确配置AWS CLI或AWS SDK,默认凭证提供程序和区域设置。