首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java Lambda函数在发布到亚马逊网络服务IoT时卡住

问Java Lambda函数在发布到亚马逊网络服务IoT时卡住
EN

Stack Overflow用户
提问于 2020-01-23 07:12:32
回答 1查看 184关注 0票数 1

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

代码语言:javascript
复制
<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>

以下是必要的配置

代码语言:javascript
复制
@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主题的实现。

代码语言:javascript
复制
    @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策略。因此,这里的任何指导都将不胜感激。谢谢。

这里是我的私有网络的出站安全组。它还附加了一个IGW。IGW还与lambda在其中运行的子网相关联。

​

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-23 08:36:53

私有网络中的Lambda函数不能直接使用公网网关,因为Lambda函数永远不会分配公网IP地址。私有网络中的Lambda函数必须位于私有网络的内网中,并具有通往NAT网关的路由,才能访问Internet。由于VPC端点尚不支持亚马逊网络服务IoT服务,因此如果Lambda功能必须驻留在VPC中,您唯一的选择就是使用NAT网关。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59869550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档