我有一个EMR无服务器应用程序,无法连接到另一个地区的S3桶。有解决这个问题的方法吗?可能是在提交新作业时要在作业参数或Spark参数中设置的参数。错误如下:
ExitCode: 1. Last few exceptions: Caused by: java.net.SocketTimeoutException: connect timed out Caused by: com.amazon.ws.emr.hadoop.fs.shaded.org.apache.http.conn.ConnectTimeoutException
为了连接其他区域的S3桶或访问外部服务,需要在VPC中创建EMR Serverless应用。
这在注意事项页中提到:
在没有VPC连接的情况下,作业可以访问同一AWS区域内的部分AWS服务端点。这些服务包括Amazon S3、AWS Glue、Amazon DynamoDB、Amazon CloudWatch、AWS KMS和AWS Secrets Manager。
下面是一个在VPC中创建应用程序的示例AWS CLI命令-您需要提供子网id和安全组id列表。可以在配置VPC访问中找到更多详细信息。
aws emr-serverless create-application
--type SPARK
--name etl-jobs
--release-label "emr-6.6.0"
--network-configuration '{
"subnetIds": ["subnet-01234567890abcdef","subnet-01234567890abcded"],
"securityGroupIds": ["sg-01234566889aabbcc"]
}'