Синхронизация параметров AWS SSM и приложения Spring Boot 3JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Синхронизация параметров AWS SSM и приложения Spring Boot 3

Сообщение Anonymous »

У меня есть приложение Java 17/Spring Boot 3/Gradle. Я развертываю его на экземплярах AWS ECS Fargate, и мне нужно использовать параметры SSM, но я не могу их правильно внедрить (см. ошибку ниже). Я пробовал искать решения, но пока мне ничего не помогло. Я считаю, что что-то не так с моими конфигурациями, но я не уверен, что именно.
Не могли бы вы посоветовать решение?
Вот мой application.yml (вероятно, слишком много настроек, но я пробовал разные подходы шаг за шагом):
spring:
application:
name: my_app_name
cloud:
aws:
parameterstore:
enabled: true
prefix: ""
config:
import: "optional:aws-parameterstore:"

groupname:
init: ${ssm:/my_app_name/groupname/init}
session: ${ssm:/my_app_name/groupname/session}
checkInterval: ${ssm:/my_app_name/groupname/checkInterval}

Класс Java:
@Component
@ConfigurationProperties(prefix = "groupname")
public class SomeProperties {
private String init;
private String session;
private long checkInterval;

//getters and setters

build.gradle зависимости:
dependencies {
implementation 'org.springframework.boot:spring-boot-starter'
implementation 'org.json:json:20231013'
implementation 'org.projectlombok:lombok:1.18.28'
implementation 'io.awspring.cloud:spring-cloud-starter-aws-parameter-store-config:2.4.4'
annotationProcessor 'org.projectlombok:lombok:1.18.28'
annotationProcessor "org.springframework.boot:spring-boot-configuration-processor"

testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

Параметры SSM, которые у меня есть в AWS Systems Manager/Хранилище параметров/Мои параметры:
/my_app_name /groupname/init
/my_app_name/groupname/session
/my_app_name/groupname /checkInterval
Разрешения роли задачи:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ssm:GetParameter",
"ssm:GetParameters",
"ssm:GetParameters",
"ssm:GetParametersByPath",
"kms:Decrypt",
"ssm:GetParameterHistory"
],
"Resource": "arn:aws:ssm::**:parameter/my_app_name/groupname/*"
}
]
}

Когда я запускаю приложение, я вижу следующую ошибку в журналах:
***************************
APPLICATION FAILED TO START
***************************
Description:
Failed to bind properties under 'groupname.check-interval' to long:
Property: groupname.check-interval
Value: "${ssm:/my_app_name/groupname/checkInterval}"
Origin: class path resource [application.yml] from app.jar - 15:18
Reason: failed to convert java.lang.String to long (caused by java.lang.NumberFormatException: For input string: "/my_app_name/groupname/checkInterval")
Action:
Update your application's configuration

Насколько я понимаю, основная причина заключается в том, что Spring интерпретирует значение параметра как значение из файла application.yml, преобразуя его в строку, но не преобразуя его в фактический параметр SSM. значение.
ОБНОВЛЕНИЕ:
Я изменил зависимость на:
implementation 'io.awspring.cloud:spring-cloud-aws-starter-parameter-store:3.0.1'

следующая документация: https://docs.awspring.io/spring-cloud-a ... cloud-aws- хранилище параметров
И application.yml для:
spring:
application:
name: my_app_name
config:
import: optional:aws-parameterstore:/my_app_name/groupname

farm:
init: ${/init}
session: ${/session}
checkInterval: 500000

chekInterval жестко запрограммирован для целей тестирования.
После этого приложение запускается, но сталкивается со следующей проблемой:
December 23, 2024 at 11:21 (UTC+1:00)
2024-12-23T10:21:39.815Z WARN 1 --- [ main] .a.c.a.c.p.ParameterStorePropertySources : Unable to load AWS parameter from /my_app_name/groupname. Unable to load credentials from any of the providers in the chain AwsCredentialsProviderChain(credentialsProviders=[SystemPropertyCredentialsProvider(), EnvironmentVariableCredentialsProvider(), WebIdentityTokenCredentialsProvider(), ProfileCredentialsProvider(profileName=default, profileFile=ProfileFile(profilesAndSectionsMap=[])), ContainerCredentialsProvider(), InstanceProfileCredentialsProvider()]) : [SystemPropertyCredentialsProvider(): Unable to load credentials from system settings. Access key must be specified either via environment variable (AWS_ACCESS_KEY_ID) or system property (aws.accessKeyId)., EnvironmentVariableCredentialsProvider(): Unable to load credentials from system settings. Access key must be specified either via environment variable (AWS_ACCESS_KEY_ID) or system property (aws.accessKeyId)., WebIdentityTokenCredentialsProvider(): Either the environment variable AWS_WEB_IDENTITY_TOKEN_FILE or the javaproperty aws.webIdentityTokenFile must be set., ProfileCredentialsProvider(profileName=default, profileFile=ProfileFile(profilesAndSectionsMap=[])): Profile file contained no credentials for profile 'default': ProfileFile(profilesAndSectionsMap=[]), ContainerCredentialsProvider(): Cannot fetch credentials from container - neither AWS_CONTAINER_CREDENTIALS_FULL_URI or AWS_CONTAINER_CREDENTIALS_RELATIVE_URI environment variables are set., InstanceProfileCredentialsProvider(): Failed to load credentials from IMDS.]


Подробнее здесь: https://stackoverflow.com/questions/793 ... pplication
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Синхронизация параметров AWS SSM и приложения Spring Boot 3
    Anonymous » » в форуме JAVA
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Как правильно/безопасно получить доступ к параметрам из хранилища параметров AWS SSM для моего скрипта Python в экземпля
    Anonymous » » в форуме Python
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Можем ли мы присвоить значения параметров ssm допустимым значениям в Swagger
    Anonymous » » в форуме JAVA
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • В программе C# отсутствует ссылка на SSM из AWS SDK
    Anonymous » » в форуме C#
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • AWS – использование SSM для отправки команд терминала
    Anonymous » » в форуме Linux
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»