能否通过Amazon AppFlow从GitHub获取原始文件内容?对应对象是什么?
关于Amazon AppFlow集成GitHub获取原始文件内容的问题
核心结论
目前Amazon AppFlow的GitHub连接器不支持直接提取仓库文件的原始内容,它仅能同步仓库、分支、提交、拉取请求这类元数据对象,无法实现你通过GitHub Repository Contents API拿到文件实际内容的效果。
原因分析
你尝试的Repository、Branch、Commit等对象,都是AppFlow GitHub连接器提供的元数据类对象,这些对象返回的只有仓库基本信息、分支信息、提交记录这类元数据,不会包含文件里的实际数据——这就是你导出的CSV里只有元数据的原因。
可行替代方案
既然AppFlow本身做不到,你可以用这些方式实现需求:
- AWS Lambda + GitHub API:写一个Lambda函数,定期调用GitHub Repository Contents API(就像你用cURL的方式)获取文件原始内容,然后直接上传到S3。如果需要触发式同步,还可以配置GitHub Webhook,当仓库文件更新时触发Lambda执行。
- GitHub Actions + S3:用GitHub Actions的S3同步插件,在仓库文件更新时自动把文件上传到AWS S3,后续再在AWS内处理数据。
- 中转到CodeCommit:先用工具把GitHub仓库同步到AWS CodeCommit(比如用CodeCommit的镜像功能),再通过AppFlow或者其他工具从CodeCommit提取文件内容到S3,不过这个方案多了一层中转,适合需要全AWS生态内操作的场景。
你提到的GitHub API示例(验证可行性)
你用cURL调用GitHub API能成功获取文件内容,命令如下:
curl \ -H "Accept: application/vnd.github.raw+json" \ -H "Authorization: Bearer TOKEN"\ -H "X-GitHub-Api-Version: 2022-11-28" \ https://api.github.com/repos/ystoneman/hotel-bookings/contents/hotel_bookings.csv
返回的原始文件内容示例:
City Hotel,0,34,2017,August,35,31,2,5,2,0,0,BB,DEU,Online TA,TA/TO,0,0,0,D,D,0,No Deposit,9,NULL,0,Transient,157.71,0,4,Check-Out,2017-09-07 City Hotel,0,109,2017,August,35,31,2,5,2,0,0,BB,GBR,Online TA,TA/TO,0,0,0,A,A,0,No Deposit,89,NULL,0,Transient,104.4,0,0,Check-Out,2017-09-07 City Hotel,0,205,2017,August,35,29,2,7,2,0,0,HB,DEU,Online TA,TA/TO,0,0,0,A,A,0,No Deposit,9,NULL,0,Transient,151.2,0,2,Check-Out,2017-09-07
内容的提问来源于stack exchange,提问作者Yann Stoneman
相关产品推荐
相关产品推荐

