使用VPC端点连接到AWS S3的示例Java代码

使用VPC端点连接到AWS S3的示例Java代码,java,amazon-s3,Java,Amazon S3,我是AWS新手,正在寻找使用vpc端点连接到AWSS3的java示例。我试着从我的本地机器下载下面的代码片段,但它不工作。如果我使用相同的creds并使用SFTP客户端(WinSCP)登录,我就能够登录。 我想使用S3从中流式处理文件,这样我可以在代码中更快地处理文件。此外,此代码不会在EC2实例中运行 AWSCredentials credentials = new BasicAWSCredentials("*****", "*******"); ClientConfiguration

我是AWS新手,正在寻找使用vpc端点连接到AWSS3的java示例。我试着从我的本地机器下载下面的代码片段,但它不工作。如果我使用相同的creds并使用SFTP客户端(WinSCP)登录,我就能够登录。 我想使用S3从中流式处理文件,这样我可以在代码中更快地处理文件。此外,此代码不会在EC2实例中运行

AWSCredentials credentials = new BasicAWSCredentials("*****", "*******");
    ClientConfiguration clientConfig = new ClientConfiguration().withRequestTimeout(50000);
    clientConfig.setUseTcpKeepAlive(true);
    AmazonS3 s3client = AmazonS3ClientBuilder
            .standard()
            .withCredentials(new AWSStaticCredentialsProvider(credentials))
            .withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration("vpce-************-*******.server.transfer.us-west-2.vpce.amazonaws.com", Regions.US_WEST_2.toString()))
            .withPathStyleAccessEnabled(true)
            .withClientConfiguration(clientConfig)
            .build();
我的团队中的人正在用新的S3 VPC端点替换旧的sftp连接细节,并使用旧的代码上载文件。但我不认为我们这样做是在充分利用s3特性。
在此感谢专家的帮助。

您的问题中提供的信息存在多个问题

vpce-************-********.server.transfer.us-west-2.vpce.amazonaws.com
不是亚马逊S3专有网络端点。它是一个名为的服务的VPC端点,该服务提供一个连接到AmazonS3存储桶的托管SFTP网关

不同的是,不需要客户端配置,也没有特殊的端点主机名——这些是透明的,在VPC中创建并正确配置时会自动使用。它们提供了一个REST接口,而不是SFTP

在这两种情况下,只能从VPC内部使用VPC端点,因此在任何情况下都无法从EC2外部访问AWS Transar for SFTP端点


但严格来说,这并不是它不起作用的原因。您拥有的代码也无法在专有网络中工作,问题的根源在于
AmazonS3 s3client=AmazonS3ClientBuilder
构建了一个S3REST客户端,而不是SFTP客户端。此客户端不能与面向Internet或VPC内部的AWS Transfer for SFTP端点一起使用,因为此类端点不是
AwsClientBuilder.EndpointConfiguration()
设计用于的端点。与SDK一起使用的端点是。对于us-west-2,ipv4连接的端点为
https://s3.us-west-2.amazonaws.com
对于ipv4/ipv6是
https://s3.dualstack.us-west-2.amazonaws.com

问题中提供的信息存在多个问题

vpce-************-********.server.transfer.us-west-2.vpce.amazonaws.com
不是亚马逊S3专有网络端点。它是一个名为的服务的VPC端点,该服务提供一个连接到AmazonS3存储桶的托管SFTP网关

不同的是,不需要客户端配置,也没有特殊的端点主机名——这些是透明的,在VPC中创建并正确配置时会自动使用。它们提供了一个REST接口,而不是SFTP

在这两种情况下,只能从VPC内部使用VPC端点,因此在任何情况下都无法从EC2外部访问AWS Transar for SFTP端点


但严格来说,这并不是它不起作用的原因。您拥有的代码也无法在专有网络中工作,问题的根源在于
AmazonS3 s3client=AmazonS3ClientBuilder
构建了一个S3REST客户端,而不是SFTP客户端。此客户端不能与面向Internet或VPC内部的AWS Transfer for SFTP端点一起使用,因为此类端点不是
AwsClientBuilder.EndpointConfiguration()
设计用于的端点。与SDK一起使用的端点是。对于us-west-2,ipv4连接的端点为
https://s3.us-west-2.amazonaws.com
对于ipv4/ipv6是
https://s3.dualstack.us-west-2.amazonaws.com

对不起,您是在寻求如何最好地替换SFTP的建议,还是在代码方面有特殊问题?此代码是否在与VPC端点位于同一子网的Amazon EC2实例上运行?请随意编辑您的问题以添加更多详细信息,包括您面临的问题。编辑我的问题您的实际业务需求仍不清楚。您到底想要实现什么?对不起,您是在征求关于如何最好地替换SFTP的建议,还是在代码方面有特殊问题?此代码是否在与VPC端点位于同一子网的Amazon EC2实例上运行?请随意编辑您的问题以添加更多详细信息,包括您面临的问题。编辑我的问题您的实际业务需求仍不清楚。您真正想要实现什么?感谢您澄清了S3 VPC端点与SFTP AWS传输的VPC端点。感谢您澄清了SFTP AWS传输的S3 VPC端点与VPC端点。。