AWS SDK for Java为Amazon Web Services提供了Java API。使用SDK,您可以轻松构建适用于Amazon S3,Amazon EC2,DynamoDB等的Java应用程序。
我尝试通过 Lambda 函数调用将一些数据发布到 SNS,但它似乎不起作用。我的功能代码是 - 公共类 Handler 实现 RequestHandler 我尝试通过 Lambda 函数调用将一些数据发布到 SNS,但它似乎不起作用。我的功能代码是 - public class Handler implements RequestHandler<DynamodbEvent, Void> { private static final String SNS_TOPIC_ARN = "arn:aws:sns:us-west-2:account_number:function_name"; @Override public Void handleRequest(DynamodbEvent dynamodbEvent, Context context) { LambdaLogger logger = context.getLogger(); AmazonSNSClient snsClient = new AmazonSNSClient(new DefaultAWSCredentialsProviderChain()); snsClient.setRegion(Region.getRegion(Regions.US_WEST_2)); for (DynamodbStreamRecord record : dynamodbEvent.getRecords()) { Map<String, AttributeValue> newImage = record.getDynamodb().getNewImage(); if (newImage == null) { continue; } String sensorId = newImage.get("sensorID").getS(); long timestamp = Long.parseLong(newImage.get("timestamp").getS()); double temperature = Double.parseDouble(newImage.get("payload").getM().get("temp").getN()); String data = sensorId + " " + timestamp + " " + temperature; logger.log(data); PublishRequest publishRequest = new PublishRequest(SNS_TOPIC_ARN, data); PublishResult publishResult = snsClient.publish(publishRequest); logger.log("Publish Successful " + publishResult.getMessageId()); } snsClient.shutdown(); return null; } } 此调用会导致超时(10 秒)并且 lambda 调用失败。如果我注释掉 SNS 发布部分,即如果我只记录从 DynamoDB 收到的数据,它就可以正常工作。一旦添加SNS发布代码,就会超时。 CloudWatch 中记录的超时消息是 - START RequestId: 8db74187-459b-42c5-8a06-b3a74873b236 Version: $LATEST END RequestId: 8db74187-459b-42c5-8a06-b3a74873b236 REPORT RequestId: 8db74187-459b-42c5-8a06-b3a74873b236 Duration: 10001.66 ms Billed Duration: 10000 ms Memory Size: 128 MB Max Memory Used: 37 MB Task timed out after 10.00 seconds 我拥有所有适当的权限,并且我可以使用在我的 PC 上运行的以下代码发布到 SNS - PublishRequest publishRequest = new PublishRequest(SNS_TOPIC_ARN, data); PublishResult publishResult = snsClient.publish(publishRequest); System.out.println("Publish Successful " + publishResult.getMessageId()); 我也尝试过使用 AmazonSNSAsyncClient 而不是 AmazonSNSClient,它给出了相同的结果。 我在这里缺少什么? 好吧,既然评论我问题的人都没有回答,那我自己来回答吧。 将内存使用量增加到 256 MB,并将超时时间增加到 30 秒似乎已经解决了问题。 增加为 Lambda 操作分配的内存量。 增加分配给 lambda 函数的内存也对我有用(此设置位于 lambda 控制台的基本设置下)。 这让我抓狂 - 我对 2 个具有相同配置的不同 lambda 函数使用相同的 JAR 文件,并且 SNS 调用对其中一个有效,但对另一个超时。令人抓狂! 就我而言,问题是网络问题。如果 VPC 缺少 NAT 网关,VPC 中的 lambda 通常无法访问网络。这阻止了 SNS 的触发。 您可以通过为 Amazon SNS 创建 Amazon VPC 终端节点来解决此问题: 在 Amazon VPC 控制台中,创建一个新终端节点 选择 AWS 服务 com.amazonaws..sns 选择您的 lambda vpc、所有子网、安全组 建立此 AWS PrivateLink 后,来自我的 Lambda 函数的 SNS 通知立即生效,无需对 SNS 或 Lambda 本身进行进一步更改。
任何人都可以帮助理解AWS SDK中`needsConnectionLeftOpen`方法的使用吗?
我正在使用 AWS SDK 来调用 appsync 终端节点。但是,我无法理解此javadoc中的needsConnectionLeftOpen的重要性:https://docs.aws.amazon.com/AWSJavaSDK/latest/
AWSSecurityTokenServiceException:访问被拒绝。用户无权执行 sts:AssumeRole
我是AWS新手。我想为 aws 调用生成临时凭证。为此,我使用使用 IAM 用户临时凭证发出请求 - AWS SDK for Java 中的示例 我经过的地方 字符串
我想在获取 AWS SecurityHub 结果时以编程方式将 AWS 资源类型映射到 AWS 服务。例如,如果 AWS SecurityHub 结果表明受影响的资源为 AwsS3...
是否可以使用 sdk-for-java 从 AWS 账单中下载发票?如果可以,如何下载?
我一直在查看适用于 Java 的 AWS 开发工具包的文档,并且正在尝试查找如何使用此开发工具包下载每月发票。这有可能吗,还是我在这里追我的尾巴?...
AWS Route53-如何设置路由策略-使用Java API
当我使用 Java API 创建记录时,默认路由策略似乎是“延迟”。我还没有找到将此策略设置为“简单”的明显方法,例如,。李...
有没有办法使用全局二级索引从 DynamoDB 中的表执行批量加载? batchLoad API 只接受 HashKeys,而 queryPage API 只允许你传入一个键。
springboot 3 reactive cassandra 键空间 DataStax 配置尝试连接本地主机
我正在尝试通过我的 spring-boot-3 多模块软件连接到 amazon-keyspace AWS Casandra,但它尝试连接 localhost / endPoint=/127.0.0.1:9042。 这是我的一些构建 gradle
如何在 Java AWS SDK 中接收 Cognito 自定义电子邮件发件人触发事件?
我尝试用 JavaScript 编写一个 customEmailSender 函数,似乎该事件包含一个代码参数,该参数包含验证码或临时密码,具体取决于
VPC 端点创建失败,带有 aws-java-sdk 的 InvalidServiceName
我正在尝试使用 aws-java-sdk“com.amazonaws.services.ec2.model.CreateVpcEndpointRequest”API 创建 VPC 端点。这会因以下问题而失败。这是在私人
AWS Cognito 是否有禁用用户池的选项? 当我查看 AWS 控制台时,我没有看到任何类似的东西,尽管如此,我在文档中发现它是用户池的一个属性。
使用 aws java sdk v2 获取 s3select 的部分 json 响应
我正在尝试在 spring boot 应用程序中实现 s3select 以查询 s3 存储桶中的镶木地板文件,我只从 s3select 输出中获得部分结果,请帮助确定问题,我已经使用了...
我想从AWS S3对象存储中读取一个文本文件(然后通过http发送至客户端)。我有AWS CLI命令,它可以将文件复制到本地,但我如何通过SDK做到这一点?我想通过SDK读取...
我使用AWSSimpleSystemsManagementAsync启动一个会话,如下所示。地图 > parameters = new HashMap<>(); parameters.put("portNumber", Arrays.asList("80")); ...
向SQS发布信息时出现错误。亚马逊SQS; 状态码: 403; 错误代码。RequestThrottled
从我的API网关,我正在发布JSON有效载荷到我的一个SQS FIFO队列中,从这个队列中再次被消耗并发布到另一个FIFO队列中。当我从API发布JSON有效载荷时...。
我使用下一段代码来获取uploadUrl的上传指令: public UploadInstruction getUploadUrl() { final var objectKey = getObjectKey(generateUniqueFileKey()); final var url = ...
面临JAVA sdk中quickSight的CreateDataSource方法中DataSourceId参数的问题。
所以我使用quick sight java SDK来整合s3和quicksight,为此,我使用了CreateDataSource.所以当使用这个方法时,我必须在这个方法中传递一个参数DataSourceId。
我使用AWS SDK发送短信到手机号码,通过短信发送OTP。我所面临的问题是,根据印度标准,短信只能在白天发送。
我试图从DynamoDB表中获取项目,并将其放入csv文件中。以下是代码。ArrayList ids = new ArrayList (); ScanResult result = null; ...
AmazonClientException:读取的数据多于预期
[当我尝试将对象添加到s3时,它给出了AmazonClientException:读取的数据长度与预期的长度不同。但问题是预期长度显示比实际大小大32位。 ...