我正在尝试从 AWS Glue 作业连接到在 VPC(私有子网)内运行的服务和数据库。私有资源不应公开(例如,移动到公共子网或设置公共负载平衡器)。
不幸的是,AWS Glue 似乎不支持在用户定义的 VPC 内运行。AWS 确实提供了一种称为Glue 数据库连接的东西,当与 Glue SDK 一起使用时,它会在指定的 VPC 内为 Glue/Spark 工作程序节点神奇地设置弹性网络接口。然后,网络接口将流量从 Glue 隧道传输到 VPC 内的特定数据库。但是,这需要特定数据库的位置和凭据,并且不清楚其他流量(例如,对服务的 REST 调用)是否以及何时通过 VPC 进行隧道传输。
是否有一种可靠的方法来设置 Glue -> VPC 连接,该连接将通过 VPC 传输所有流量?
amazon-web-services amazon-vpc aws-glue aws-glue-data-catalog
AWS Step Functions 允许调用 AWS Glue 作业,如下所述:https : //docs.aws.amazon.com/step-functions/latest/dg/connect-glue.html
我想运行作业并(在将结果保存到 S3 之后)将作业期间产生的一些元数据(如行数或过滤行数)返回到 Step 函数流。
我们可以将参数从 Step 函数传递给 Glue 作业,如下所示:
"RunGlueJob": {
"Type": "Task",
"Resource": "arn:aws:states:::glue:startJobRun.sync",
"Parameters": {
"JobName": "MyJobName",
"Arguments": {
"--param1.$": "$.param1",
"--param2.$": "$.param2"
}
},
"Next": "NextState"
},
Run Code Online (Sandbox Code Playgroud)
但是 Glue 作业如何将输出返回到 Step Function 工作流?我尝试从 (Scala) Glue 作业中的 main() 函数返回一个字符串,但它没有出现在返回到步骤函数流的 JSON 中:
{
"AllocatedCapacity": 3,
"Arguments": {
"--param1.$": "$.param1",
"--param2.$": "$.param2"
},
"Attempt": 0,
"CompletedOn": 1570114802442,
"ExecutionTime": 39,
"GlueVersion": "0.9",
"Id": "jr_some_id",
"JobName": "MyJobName",
"JobRunState": "SUCCEEDED",
"LastModifiedOn": 1570114802442, …Run Code Online (Sandbox Code Playgroud)