Я пытаюсь опубликовать sh в AWS -IoT Topi c из лямбды, написанной с использованием Spring-boot. Я использую следующие зависимости:
<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 topi c.
@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, он длится до publi sh и никогда не получает ответ более 40 секунд, и лямбда в конечном итоге истекает. К лямбда-роли прикреплены политики AWSIoTFullAccess, AWSLambdaVPCAccessExecutionRole. Таким образом, любое руководство здесь будет оценено. Спасибо.
Вот группа исходящей безопасности моего VP C. К нему также прикреплен IGW. IGW также связан с подсетями, в которых работает лямбда.