1.确保您的队列完全配置正确,包括正确的ARN。您需要通过在 Amazon SQS 控制台中选择队列来获取信息,然后使用以下代码示例将ARN添加到您等待触发Matillion作业的SNS主题中:
import boto3 sqs = boto3.resource('sqs') queue = sqs.get_queue_by_name(QueueName='myqueue') response = queue.attributes['QueueArn'] print response
2.将Lambda函数与带有所有必需代码的SNS主题配置为触发Matillion作业。以下是发回正确的JSON消息时的Python代码示例,以触发Matillion作业:
import boto3 lmbda = boto3.client('lambda') lmbda.invoke( FunctionName='myFunction', InvocationType='Event', Payload='{ "job": "myJob" }' )
注意:其中FunctionName是Lambda函数的名称,Payload包含向该作业传递的任何参数。
3.如果Matillion作业没有触发,请确保SNS主题的访问策略允许在SNS主题上发布消息。您可以在Amazon SNS控制台中找到访问策略并必要时进行更改,如下所示:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "SNS:Publish", "Resource": "arn:aws:sns:us-west-2:123456789012:mytopic", "Condition": { "ArnEquals": { "aws:SourceArn": "arn:aws:sqs:us-west-2:123456789012:myqueue" } } } ] }
4.最后,请确保将Matillion作业链接到AWS Lambda函数。只需在AWS Lambda控制台中输入相应的函数名称,然后转到触发器选项卡即可完成。