问题标签 [aws-java-sdk-2.x]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1811 浏览

java - AWS Java SDK 2 S3 复制对象

在版本 1 SDK 中,发出复制请求很简单:

在版本 2 SDK 中,BuilderforCopyObjectRequest没有明确的方法来设置源与目标。有一种copySource(copySource)接受完整路径的方法,但没有明显的方法来设置目标存储桶或目标密钥或正常设置源存储桶和源密钥(无需构建完整路径并处理 URL 编码)。

他们的新 S3 示例简单地忽略了新副本的工作原理,并且他们的JavaDocCopyObjectRequest没有这方面的真实信息。

0 投票
1 回答
157 浏览

javascript - 如何使用 javascript 获取通过 SAM 创建的 AWS API 网关的端点

我正在从 SAM 模板创建一个 api 网关。我需要一个单独的网页来使用 javascript 向 api 发出 get 请求。但是,如果我不知道端点,我不确定如何发出请求,因为端点是在部署时动态创建的。

有没有办法以某种方式将端点发送到网页或让网页在不知情的情况下访问端点。

我知道我可以使用 SAM 模板命名 API,但我希望一切都由 AWS 创建,这样就不会与多个部署发生冲突。

0 投票
1 回答
585 浏览

java - AWS API 与 Cloudwatch 集成返回空白数据点

我目前正在尝试创建一个可以通过 AWS Java SDK 调用和引用 Amazon AWS API 的 Java 应用程序。我已经能够直接调用 S3 和 EC2 等服务,但是当我尝试从 Cloudwatch 提取数据时,我无法获取任何数据点。

我尝试过调整不同的变量(维度、调整时间变量),并尝试通过 CLI 提取数据。当我通过 CLI 请求数据时,我能够获取数据点,但 Java 应用程序没有获取相同的数据。这是我的 CLI 代码:

这是我在 Java 端使用的。变量命名空间等于字符串“AWS/S3”,变量区域设置为 Region.US_EAST_1

设置 CloudWatch 客户端

调用数据

当调用该方法并运行 print 方法时,我得到:

GetMetricStatisticsResponse(Label=BucketSizeBytes, Datapoints=[])

关于为什么它在 Java 应用程序中返回空白而不是 CLI 的任何想法?

0 投票
1 回答
603 浏览

amazon-web-services - 使用 ec2 角色或默认凭据链创建 aws 客户端的 java 代码?

下面的代码创建 AWS 凭证,其中明确提供了访问和密钥。

但是这种方法的问题是在生产中我不能使用它。那么什么是等效的 java 代码,它将自动从 aws 凭证链获取凭证并创建凭证对象或某些 EC2 客户端。

0 投票
1 回答
360 浏览

amazon-web-services - 使用 Java SDK v2 以编程方式获取 AWS S3 存储桶网站静态站点 URL

https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteEndpoints.html上的文档说,有两种主要的基于地区的形式:

  • bucket-name.s3-website-region.amazonaws.com
  • bucket-name.s3-website.region.amazonaws.com

(注意破折号与之前的点region。)https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_website_region_endpoints上的列表似乎证实了这一点。

我正在使用 AWS Java SDK v2。我正在以编程方式创建一些存储桶,而其他存储桶仅S3Client.getBucketWebsite()用于获取存储桶网站信息。但GetBucketWebsiteResponse似乎与此无关。

我宁愿不在我的代码中硬编码映射到他们使用的特定 URL 样式的区域列表。有没有办法可以使用 AWS 开发工具包检索存储桶的静态网站 URL?

请注意,我知道如何通过 API 获取 AWS S3 网站终端节点 URL?,但该问题与 RESTful API 端点有关,而不是存储桶静态网站托管,正如答案https://stackoverflow.com/a/39468126/421049及其评论所指出的那样。

(有趣的是,从我的实验来看,一个记录使用该表单bucket-name.s3-website-region.amazonaws.com的区域也可以使用该表单访问bucket-name.s3-website.region.amazonaws.com,因此 AWS 可能正在尝试标准化点表单。不过,最好消除所有疑问并在某些情况下依赖 SDK首选形式,除非有一些官方文件保证点形式将适用于所有地区。)

0 投票
1 回答
409 浏览

java - 如何解决跨区域 CopySnapshotRequest 的“协议不得为空”

我正在尝试将 EC2 快照从一个区域移动到另一个区域。

创建基本 Ec2 快照副本并将其复制到第二个区域时,我得到错误协议不能为空。当您到达需要主机的代码点时,主机似乎也是空的。据我了解,在复制未加密的快照时,我不需要提供协议(http/https)或主机详细信息。AWS 代码似乎应该在幕后执行此操作。

在我的脑海中,这似乎是一个 aws 问题,但是对于 Java V2 的 AWS 开发工具包还没有太多反馈,因为我在这里和 github 都检查过。

程序异常: java.lang.NullPointerException:协议不能为空

我尝试将destinationRegion 添加到构建器,但这也会导致相同的错误。

执行环境是 Amazon Java 11.0.3 我已经尝试使用 software.amazon.awssdk 版本 2.7.11 一直到 2.7.29

基本代码片段

堆栈跟踪如下

我希望将快照复制到指定的新区域,没有错误,也没有加密。

作为旁注,我已通过我的支持系统将此提交给亚马逊,我正在等待他们的回复。一旦他们回复我的请求,我将更新这篇文章。

0 投票
1 回答
1600 浏览

amazon-s3 - AWS SDK Java 版本 2 - 是否有与版本 1 中的 doesObjectExist() 等效的版本?

AWS Java SDK 版本 1 中的 S3 客户端具有检查存储桶中是否存在对象的方法

在 SDK 的第 2 版中,我没有看到任何类似的东西,但我想看看我是否遗漏了任何东西。

我唯一的想法是尝试使用

S3Client.getObject(GetObjectRequest) 如果对象不存在,它将抛出 NoSuchKeyExcecption。我讨厌使用这样的异常。

0 投票
1 回答
487 浏览

amazon-web-services - 如何使用 java-sdk 获取任何 EC2 实例的成本

我想使用 Cost Explorer API 获取我的 EC2 实例的使用情况和成本。

我能够成功获得使用量和成本,但成本和使用量包括 EC2 实例和 EBS 卷完成的使用量,所以我想使用usage_type_group诸如EC2 :Running Hours但每当我通过时我没有得到任何价值. 如果我删除它,我会得到总使用量和成本的价值。

0 投票
1 回答
26 浏览

aws-java-sdk-2.x - 在将代码从 1.11 迁移到 2.x 版本时,我无法在 AWS java 2.x 版本中找到 PEM 的替代品

您能否建议 PEM 读取私钥的替代课程。代码如下:

0 投票
1 回答
1347 浏览

amazon-sqs - AWS JDK 2 创建队列并订阅主题

我正在使用 SNS / SQS 在 AWS 上工作,并且正在尝试在 SQS 主题上创建 SNS 订阅。我正在使用 AWS Java SDK 2。我可以正确创建主题和队列,我面临的问题是在创建主题和队列之间的订阅时出现错误。以下是我的代码片段:

以下是我得到的错误:

有人可以指出我做错了什么吗?