繁体   English   中英

发布到 AWS IoT 时 Java Lambda 函数卡住

[英]Java Lambda Function stuck when publishing to AWS IoT

我正在尝试从使用 Spring-boot 编写的 Lambda 发布到 AWS-IoT 主题。 我正在使用以下依赖项,

<dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-java-sdk-core</artifactId>
        <version>1.11.710</version>
    </dependency>
    <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-java-sdk-iot</artifactId>
        <version>1.11.710</version>
    </dependency>

这是必要的配置

@Bean
public AWSIotData awsIotDataClient() {
    return AWSIotDataClient.builder().standard()
            .withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration("https://<my-account-specific>.iot.us-west-1.amazonaws.com", Regions.US_WEST_1.getName()))
            .withCredentials(DefaultAWSCredentialsProviderChain.getInstance())
            .build();
}

这是我将数据发布到 aws-Iot 主题的实现。

    @Autowired
    private AWSIotData awsIotDataClient;

    @Autowired
    private ObjectMapper objectMapper;

    @Override
    public void publish(String topic, MyObject response) throws JsonProcessingException {
        logger.info("Publishing to topic: {} and payload : {}", topic, response);

PublishRequest publishRequest = new PublishRequest().withPayload(
                ByteBuffer.wrap(objectMapper.writeValueAsBytes(response))).withQos(1).withTopic(topic);

        PublishResult result = awsIotDataClient.publish(publishRequest);
        logger.info("Successfully published message to topic: {} and payload: {}, with result: ", topic, response, result);
    }

当我在本地运行时,此实现工作正常。 但是当我在 AWS-Lambda 中运行它时,它会一直运行到发布并且在超过 40 秒的时间内从未收到响应,并且 lambda 最终超时。 lambda 角色附加了 AWSIoTFullAccess、AWSLambdaVPCAccessExecutionRole 策略。 因此,这里的任何指导将不胜感激。 谢谢你。

这是我的 VPC 的出站安全组。 它还附有一个 IGW。 IGW 还与运行 lambda 的子网相关联。 在此处输入图片说明

VPC 中的 Lambda 函数不能直接使用 Internet 网关,因为 Lambda 函数永远不会分配公有 IP 地址。 VPC 中的 Lambda 函数必须位于具有到 NAT 网关的路由的 VPC 的私有子网中,才能访问 Internet。 由于 VPC 终端节点尚不支持 AWS IoT 服务,如果 Lambda 函数必须驻留在 VPC 中,您唯一的选择是使用 NAT 网关。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM