[AWS System Manager] Spring boot نسخه 3 را با Parameter Store ادغام کنید
1. معرفی
AWS Parameter Store سرویسی است که توسط خدمات وب آمازون (AWS) ارائه می شود که به ما کمک می کند پارامترها و اسرار برنامه های خود را ذخیره و مدیریت کنیم. این یک مکان امن و متمرکز برای ذخیره و دسترسی به داده های حساس مانند اعتبار پایگاه داده، کلیدهای API و داده های پیکربندی فراهم می کند.
بنابراین ما می توانیم از این سرویس برای مدیریت چندین فایل ویژگی استقرار برای یک برنامه Spring Boot استفاده کنیم.
2. اجرا
2.1. دسترسی به محیط توسعه را فراهم کنید
برای دسترسی به ویژگی Parameter Store باید کلید دسترسی و کلید مخفی را برای IDE ارائه کنیم (من از Eclipse استفاده خواهم کرد). می توانید به این پست AWS Toolkit برای Eclipse مراجعه کنید و این مراحل را برای نصب AWS Toolkit برای Eclipse IDE دنبال کنید.
پس از نصب با موفقیت، باید جفت کلید را به AWS Toolkit اضافه کنیم. می توانید روی نماد AWS Toolkit در هدر کلیک کرده و Preferences را انتخاب کنید. اگر قبلاً یک کلید دسترسی در رایانه خود داشته اید، به این صورت نمایش داده می شود.
اگر نمیخواهید از این کلید استفاده کنید، میتوانید با فشار دادن دکمه پلاس در کنار پیکربندی جهانی، کلید دیگری را به صورت دستی اضافه کنید.
2.2. یک پروژه بهار بوت ایجاد کنید
ما میتوانیم از Spring Starter Project از Spring Tool Suite (میتوان آن را در Eclipse Marketplace پیدا کرد) یا Spring Initializer برای ایجاد یک پروژه بوت Spring با بوت بهار نسخه 3
سپس، باید مقداری وابستگی اضافه کنیم که باید از آن برای ادغام با Parameter Store استفاده کنیم.
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-aws-parameter-store-config</artifactId>
<version>2.2.6.RELEASE</version>
</dependency>
به دقت بررسی کنید که دقیقاً این وابستگی ها را اضافه کرده اید. چون برای Spring Boot نسخه 3 باید استفاده کنیم فنر-ابر-استارتر-بوت استرپ برای کار با Parameter Store. اگر از آن استفاده نکنید، مشکلات مربوط به نسخه عدم تطابق ممکن است رخ دهد. و در نهایت، ما باید استفاده کنیم بهار-ابر-وابستگی ها زیرا Parameter Store روی Spring Cloud کار می کند.
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>2022.0.1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
2.3. پارامتر را از Parameter Store بخوانید
باید نام برنامه را در فایل application.properties تعریف کنیم. به عنوان مثال است spring.application.name=my-app
. به طور پیشفرض، اسپرینگ سینتکس را برای کار با پارامتر در Parameter Store با فرمت تعریف کرد:/config/<name-of-the-spring-application>_<profile>/<parameter-name>
اگر قرارداد پارامتر پیش فرض با نیازهای ما مطابقت نداشته باشد. ما می توانیم یک ایجاد کنیم bootstrap.properties
نادیده گرفتن.
aws.paramstore.enabled=true
aws.paramstore.prefix=/demo
aws.paramstore.name=my-app
aws.paramstore.profileSeparator=
اکنون مقداری پارامتر ایجاد می کنیم و کدی برای آزمایش اضافه می کنیم.
در کنسول AWS از AWS System Manager، می توانید پارامتر را انتخاب کرده و روی دکمه ایجاد پارامتر کلیک کنید.
من قبلاً برخی از پارامترها را در آنجا دارم، بنابراین دیگر ایجاد نمی کنم. شما می توانید با ورودی نام پارامتر ایجاد کنید.
نوع را انتخاب کنید، برای SecureString توصیه کنید.
و در نهایت مقدار این پارامتر را وارد کنید.
برای هدف آزمایش، @Value
حاشیه نویسی برای تعیین مقدار پارامترها استفاده خواهد شد. ما انتظار داریم port
متغیر دارای مقدار خواهد بود /demo/my-app/spring.port
و message
متغیر مربوط به /demo/my-app/spring.message
.
@SpringBootApplication
@Slf4j
public class DemoApplication implements CommandLineRunner {
@Value("${spring.port}")
private String port;
@Value("${spring.message}")
private String message;
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@Override
public void run(String... args) throws Exception {
log.info("Resolved message port: {}", port);
log.info("Resolved message parameter: {}", message);
}
}
با شروع برنامه و مشاهده در گزارش کنسول، میتوانیم مقداری را که در AWS Parameter Store ایجاد کردهایم ببینیم.
3. خلاصه
با استفاده از Parameter Store با اپلیکیشن Spring Boot، میتوانیم ارزش ویژگیها را به راحتی مدیریت کنیم. می تواند شبیه به خواندن مقادیر از کار کند application.properties
فایل توسط @Value
حاشیه نویسی همچنین به کاهش مشکلات عدم تطابق بین پردازش توسعه در محیط محلی و استقرار پردازش در AWS Cloud کمک کنید.
پیاده سازی همه این نمونه ها را می توان در GitHub من یافت
کد نویسی مبارک 🙂