Ari*_*dam 2 java amazon-web-services spring-boot gitlab-ci
目前我的技术栈是Java、Spring Boot。
我正在使用 application-dev.properties 来保存 AWS 访问密钥和秘密密钥。
在 application-dev.properties 中注入密钥我有:
#This property provide access key details
com.abc.sqs.accesskey = AWS_ACCESS_KEY
#This property provide secret key details
com.abc.sqs.secretkey = AWS_SECRET_KEY
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试对应用程序 .jar 进行冒烟测试时,来自 GitLab CICD .gitlab-ci.yml 文件,我有类似这样的东西(阶段是冒烟测试)-
smoke test:
stage: smoke-test
image: openjdk:12-alpine
before_script:
- apk add --update curl && rm -rf /var/cache/apk/*
script:
- ls -la ./app-service/target/
- sed -i "s/AWS_ACCESS_KEY/$AWS_ACCESS_KEY_ID/" ./app-service/src/main/resources/application-dev.properties
- sed -i "s/AWS_SECRET_KEY/$AWS_SECRET_ACCESS_KEY/" ./app-service/src/main/resources/application-dev.properties
- java -jar -Dspring.profiles.active=dev ./app-service/target/app-service.jar &
- sleep 30
- curl http://localhost:5000/actuator/health | grep "UP"
- curl -i -X POST http://localhost:5000/actuator/shutdown
Run Code Online (Sandbox Code Playgroud)
在这里,我从 GitLab CICD 环境变量中引入 $AWS_ACCESS_KEY_ID 和 $AWS_SECRET_ACCESS_KEY ,并尝试替换属性文件的 AWS_ACCESS_KEY 和 AWS_SECRET_KEY 。但这样我就无法在服务器启动期间注入。
在尝试测试 jar 时出现以下异常:
原因:com.amazonaws.services.sqs.model.AmazonSQSException:请求中包含的安全令牌无效。(服务:AmazonSQS;状态代码:403;错误代码:InvalidClientTokenId;
请需要您的建议。提前致谢。
如果您想覆盖属性文件中的属性,sed您可以简单地声明一个环境变量或具有相似名称的 JVM 变量,而不是使用 。它将优先于文件中声明的属性。例如:
com.abc.sqs.accesskey = AWS_ACCESS_KEY
Run Code Online (Sandbox Code Playgroud)
可以与 JVM 变量一起变为:
java -jar -Dspring.profiles.active=dev -Dcom.abc.sqs.accesskey=$AWS_ACCESS_KEY_ID ./app-service/target/app-service.jar
Run Code Online (Sandbox Code Playgroud)
这将覆盖属性文件的值,并且这将在应用程序启动时可用。
| 归档时间: |
|
| 查看次数: |
4175 次 |
| 最近记录: |