gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 18:06:00 26 4
gpt4 key购买 nike

我是 AWS 新手,正在寻找使用 vpc 端点连接到 AWS s3 的 java 示例。我在本地计算机上尝试了以下代码片段,但它不起作用。如果我使用相同的凭据并使用 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 是 <不是 Amazon S3 VPC 终端节点。它是名为 AWS Transer for SFTP 的服务的 VPC 终端节点它提供连接到 Amazon S3 存储桶的托管 SFTP 网关。

S3 VPC Endpoint不同,不需要客户端配置,并且没有特殊的端点主机名——这些是透明的,并且在 VPC 内创建和正确配置时自动使用。而且他们提供 REST 接口(interface),而不是 SFTP。

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

但严格来说,这并不是它不起作用的原因。您拥有的代码也无法在 VPC 内运行,问题的根源在于 AmazonS3 s3client = AmazonS3ClientBuilder 构建 S3 REST 客户端,而不是 SFTP 客户端。此客户端不能与 AWS Transfer for SFTP 终端节点一起使用,无论是面向 Internet 还是在 VPC 内,因为此类终端节点不是 AwsClientBuilder.EndpointConfiguration() 的设计用途。与 SDK 一起使用的端点是 found here 。对于 us-west-2,ipv4 连接的端点为 https://s3.us-west-2.amazonaws.com,对于 ipv4/ipv6 为 https://s3。 Dualstack.us-west-2.amazonaws.com

关于java - 使用 VPC 终端节点连接到 AWS S3 的示例 Java 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60558244/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com