我正在尝试创建一个工作流,其中AWS Glue ETL作业将从外部REST API拉取JSON数据,而不是从S3或其他任何AWS内部来源。 这是否可能? 有人这样做吗? 请帮忙!
我正在尝试创建一个工作流,其中AWS Glue ETL作业将从外部REST API拉取JSON数据,而不是从S3或其他任何AWS内部来源。 这是否可能? 有人这样做吗? 请帮忙!
是的,我确实从REST API(如Twitter、FullStory、Elasticsearch等)中提取数据。通常情况下,我使用Python Shell作业进行提取,因为它们速度更快(相对较小的冷启动)。完成后,它会触发一种类似于Spark的作业,仅读取我需要的json项。 我使用requests Python库。
为了将数据保存到S3,您可以像这样做
import boto3
import json
# Initializes S3 client
s3 = boto3.resource('s3')
tweets = []
//Code that extracts tweets from API
tweets_json = json.dumps(tweets)
obj = s3.Object("my-tweets", "tweets.json")
obj.put(Body=data)
是的,这是可能的。您可以使用Amazon Glue从REST API中提取数据。虽然没有直接的连接器可用于Glue连接到互联网世界,但您可以设置一个具有公共和私有子网的VPC。在私有子网中,您可以创建一个ENI,仅允许GLue进行出站连接以从API获取数据。在公共子网中,您可以安装一个NAT网关。
此外,您还可能需要设置安全组来限制入站连接。希望这回答了您的问题。