赞
踩
应用系统需要处理海量数据,数据发送方和数据消费方是通过什么方式来无缝集成消费数据的,AWS 提供 SQS 消息队列服务来解决这个无缝通讯问题,使得应用之间解耦,异步,可靠,灵活和可维护性。
AWS SQS(Amazon Simple Queue Service)是一种由 Amazon Web Services 提供的完全托管的消息队列服务。它允许分布式应用程序的各个组件之间异步传输消息,而无需丢失消息或需要其他服务始终可用。以下是 AWS SQS 的主要特点和功能:
在 AWS SQS 中,访问策略(Access Policy)用于控制对 SQS 队列的访问权限。访问策略可以定义谁(即哪些用户或服务)可以访问队列,以及他们能够执行的操作。访问策略是基于 JSON 格式的策略文档,通常通过 AWS Identity and Access Management (IAM) 实现。以下是有关 SQS 访问策略的主要概念和示例。
{
"Version": "2012-10-17",
"Id": "ExamplePolicy",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::111122223333:root"
},
"Action": "sqs:SendMessage",
"Resource": "arn:aws:sqs:us-east-1:444455556666:MyQueue"
}
]
}
下面是一个包含条件的策略示例,它只允许从指定的 IP 地址范围内访问 SQS 队列:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "sqs:SendMessage", "Resource": "arn:aws:sqs:us-east-1:444455556666:MyQueue", "Condition": { "IpAddress": { "aws:SourceIp": "192.168.1.0/24" } } } ] }
要为 DataLake Subscription 配置 Amazon SQS,您需要执行以下步骤:
详细步骤
import boto3 # 创建 SQS 客户端 sqs = boto3.client('sqs') # 创建队列 response = sqs.create_queue( QueueName='MyDataLakeQueue', Attributes={ 'DelaySeconds': '0', 'MessageRetentionPeriod': '86400' } ) queue_url = response['QueueUrl'] print(f"Queue created: {queue_url}")
例如下面创建一个订阅,所有 collection “SMOKE2” 的 Create 事件都会发送到 target 为 arn:aws:sqs:us-east-1:123456789012:MyDataLakeQueue 的 SQS 队列
{ "subscription-name": "my-userdoc-subscriptionsqs", "filter": { "event-name": [ "Object::Create" ], "collection-id": [ "SMOKE2" ] }, "targets": [ { "type": "sqs", "value": "arn:aws:sqs:us-east-1:123456789012:MyDataLakeQueue" } ], "schema-version": [ "v2" ] }
例如下面配置只有来自这个 resource “arn:aws:iam::123456789012:role/release-DataLake-EventPublish” 才有权限发送到这个 SQS。
{ "Id": "AllowDataLakeEventsAccess", "Version": "2012-10-17", "Statement": [ { "Sid": "AllowDataLakeEventsAccess", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "sqs:SendMessage", "Resource": "<EndpointARN>", "Condition": { "ArnEquals": { "aws:PrincipalArn": [ "arn:aws:iam::123456789012:role/release-DataLake-EventPublish" ] } } } ] }
将上述策略附加到您的 SQS 队列。您可以在 AWS 管理控制台中编辑队列的访问策略,或者使用 AWS SDK 更新队列的访问策略。
完成这些步骤后,您的 DataLake 订阅将被配置为将事件发送到指定的 SQS 队列。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。