簡體   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