Я пытаюсь использовать Spring-Cloud-Function , чтобы написать kotlin AWS Lambda. Когда я пытаюсь запустить его как лямбду AWS как на AWS, так и на Sam , все свойства, которые я добавляю с помощью @Value и которые находятся в resources / application.yaml , не разрешаются.
В соответствии с документацией я могу включить следующую зависимость для запуска предоставляемой функции как автономного веб-приложения:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-function-web</artifactId>
<version>${spring-cloud-function.version}</version>
</dependency>
Это оказалось очень полезным для локального запуска перед использованием sam и хорошо для отладки. С тех пор я использовал его, чтобы убедиться, что свойства взяты из application.yaml при запуске в качестве отдельного приложения. Так что нет ничего плохого в моей файловой структуре и коде.
application.yaml
aws:
region: us-east-1
bucket:
directory : "myFiles"
Пример класса, который использует свойство:
@Configuration
class AwsConfig(
@Value("\${aws.region}")
private val region: String
) {
@Bean
fun s3Client(): AmazonS3 = AmazonS3Client.builder()
.withClientConfiguration(awsConfig())
.withRegion(region)
.build()
private fun awsConfig(): ClientConfiguration = ClientConfiguration()
}
Структура проекта:
.
├── pom.xml
├── serverless.yaml
└── src
└── main
├── kotlin
└── resources
└── application.yaml
Это известный недостаток Spring-Cloud-Function или что-то еще не так?