(已开源)泥潭自己搞个nt_tool(小修了一下,还有待进一步修复)

可以的

Log加粗部分是Local Run也会print out的message
接着应该print(“Hello World”),但是不管AWS怎么Run都没有“Hello World” Message

刚刚试着用cloudwatch-scheduled-event作为Test event也没有“Hello World” Message,自动发的email内容还是空白

OpenBLAS WARNING - could not determine the L2 cache size on this system, assuming 256k
OpenBLAS WARNING - could not determine the L2 cache size on this system, assuming 256k
START RequestId: 566e5055-f2b5-4f05-8e55-8b62738da7b0 Version: $LATEST
Search for FlightQuery(id=‘90186863’, flight_queries=‘90186863’, origin=‘ICN’, destination=‘PVG’, date=‘2023-12-11’, num_passengers=Decimal(‘1’), cabin_class=‘ECO’, max_stops=Decimal(‘0’), max_duration=Decimal(‘5’), max_aa_points=Decimal(‘30000’), max_ac_points=Decimal(‘50000’), max_dl_points=Decimal(‘50000’), exact_airport=True, email=‘[email protected]’, last_run=Decimal(‘1684223367’))
Sending email for ICN-PVG on 2023-12-11
END RequestId: 566e5055-f2b5-4f05-8e55-8b62738da7b0
REPORT RequestId: 566e5055-f2b5-4f05-8e55-8b62738da7b0 Duration: 25167.16 ms Billed Duration: 25168 ms Memory Size: 256 MB Max Memory Used: 107 MB

你有把你要搜的路线加到DynamoDB吗?我写的cron只是借用了一部分搜票和解析的library,manage路线日期等等我用了一个单独的方法,你看一下cron/run_local.py这个文件,底下有一个地方是加路线到DynamoDB。Lambda会去读DynamoDB来搜票,Lambda的入口是app.py那个文件,不会看run_local.py

感谢大佬的codes有详细的comments :100: :100: :100:

我完全按照其操作

还在local Test run Lambda function 运行完美

run_local.py

handler(1, 1)

local Test run 去 DynamoDB读取路线,然后运行搜索引擎,得到结果后SNS发送的邮件,邮件正文能显示搜索结果。

可是加载了Docker Image 的Lambda Function在AWS Test Run后,自动发送的邮件,邮件正文内容为空白。

Email有subject吗?按说你用IAM user在local run和lambda上run应该是一样的。

1 个赞

有subject,就是" Reward Ticket Found for ICN-PVG on 2023-12-11"

嗯嗯,我也觉得应该是

唯一区别是:
local run environment: python 3.7, pandas 1.3.5
lambda run environment: python 3.9, pandas 1.5.3
我试了lambda run environment: python 3.8还是一样的问题

那唯一可能出问题的就是这一行了

'Data': "\n".join([str(x) for x in air_bound.to_flatted_list()])

你把他print出来看看好了,按说这里应该没啥区别。

我这边用了@severolf 大佬的cron, 也遇到@xmsley 大佬的情况,debug出来显示DL API No response,连status_code都没有。但是AA和AC都没问题。我这边是AWS us-east-2
同样的codes在Windows Local,因为用的是个人IP Post Request, DL、AA和AC都没问题。

请教@severolf 大佬, 如果我换成 us-west-2,会不会改变服务器的IP?也许DL API就可以用了?

同时请教@xmsley 大佬, 你的服务器部署,现在能爬到DL的数据了吗?

1 个赞

那也有可能,我的lambda也从来没搜出过DL的票

因为Containerized Image很难debug,把github clone到AWS EC2后debug,关于DL API,终于以下更详细的exceptioin msg:

requests.exceptions.TooManyRedirects: Exceeded 30 redirects.

I’m afraid.DL may be blocking requests from the AWS IP range.

不知道有没有方法在AWS设置VPN?

说不定换个region能行

那得migration了,又是一顿操作 :yaoming:

@xmsley
不知道可否在顶楼里面提醒一下其他的家人,如果在server deploy大神你们的工具,在setup AWS时候,region避免使用us-west-2和us-east-2

试试其他region,希望得到更多的dp :pray::pray::pray:

就把lambda换过去就行,别的按说不用改

不是要把AWS一整套的EventBridge+Lambda+ECR+DynamoDB+SES都换Region吗?

单单lambda换应该没法访问到DynamoDB吧? :person_shrugging:

生成dybamo resource的时候可以加上us-west-2,这样强制访问这个region的dynamodb(默认是同region的)。这样可能会产生一点cross region data transfer的cost

用EC2试了us-east-1, sa-east-1, ap-northeast-1, ap-southeast-2, eu-north-1都不行

现在account被AWS Blocked了 :yaoming:

同一Region,不知道Lambda 的IP是否和EC2的IP在一个很接近的range?

按说不应该啊,用亚洲的ec2竟然都被封了

不管哪个region都是同样的err msg:

requests.exceptions.TooManyRedirects: Exceeded 30 redirects.

google了一下,delta用Akamai 去block web crawlers,很多VPN都被block了

关于这个我测试过,我使用腾讯云的轻量级服务器,直接curl请求是有结果的,挂载python脚本没有结果,十分迷惑

1 个赞

curl和python的header完全一样? 看看default header

常规header吧,应该没什么改动。需要的话私我