기능 플래그 탐색 AWS AppConfig 사용
이번 주에는 AWS AppConfig, 특히 Feature Flag에 대해 배웠습니다. Trunk Based Development 을 사용하기 때문에 내 애플리케이션에 대한 기능 플래그가 필요합니다. 계속합시다.
AWS AppConfig 설정
이를 사용하여 AWS AppConfig를 설정할 수 있습니다official guide. 가이드의 6단계를 따라야 합니다.
이 기사에서는 6단계와 코드에 중점을 둘 것입니다.
AWS AppConfig에서 기능 플래그 검색
기능 플래그를 검색하기 전에 적절한 액세스 권한이 있는
AWS_ACCESS_KEY_ID
및 AWS_SECRET_ACCESS_KEY
가 필요합니다. 기능 플래그를 호출하고 AWS SDK for Javascript을 사용하기 위해 "작은 라이브러리"를 만들었습니다.import {
AppConfigDataClient,
BadRequestException,
GetLatestConfigurationCommand,
StartConfigurationSessionCommand,
} from "@aws-sdk/client-appconfigdata";
const client = new AppConfigDataClient({});
let existingToken: string;
const getToken = async (): Promise<string> => {
const getSession = new StartConfigurationSessionCommand({
ApplicationIdentifier: process.env.APP_CONFIG_APP_IDENTIFIER,
ConfigurationProfileIdentifier:
process.env.APP_CONFIG_CONFIG_PROFILE_IDENTIFIER,
EnvironmentIdentifier: process.env.APP_CONFIG_ENVIRONMENT_IDENTIFIER,
});
const sessionToken = await client.send(getSession);
return sessionToken.InitialConfigurationToken || "";
};
const featureFlag = async (flag: string): Promise<boolean> => {
if (!existingToken) {
existingToken = await getToken();
console.log(existingToken);
}
try {
const command = new GetLatestConfigurationCommand({
ConfigurationToken: existingToken,
});
const response = await client.send(command);
let flags: any = {};
if (response.Configuration) {
let str = "";
for (let i = 0; i < response.Configuration.length; i++) {
str += String.fromCharCode(response.Configuration[i]);
}
const allFlag = JSON.parse(str);
console.log(allFlag);
flags = Object.assign({}, allFlag);
}
return Boolean(flags[flag]?.enabled);
} catch (err) {
if (err instanceof BadRequestException) {
existingToken = await getToken();
console.log(existingToken);
// recall
return featureFlag(flag);
} else {
throw err;
}
}
};
export default featureFlag;
코드 설명: 내 기능 플래그를 가져오려면
GetLatestConfiguration
API를 호출해야 합니다. 해당 API를 호출하기 전에 구성 세션 토큰을 가져와야 합니다(getToken
사용). 내 코드를 확인하고 싶다면. Github의 코드와 라이브러리를 NPM에 게시했습니다.베르비안톨레오 / 기능 플래그
AWS AppConfig를 사용하여 기능 플래그 탐색
기능 플래그
AWS AppConfig를 사용하여 기능 플래그 탐색
환경 변수
AWS_REGION="ap-southeast-1"
AWS_ACCESS_KEY_ID=""
AWS_SECRET_ACCESS_KEY=""
APP_CONFIG_APP_IDENTIFIER=""
APP_CONFIG_CONFIG_PROFILE_IDENTIFIER=""
APP_CONFIG_ENVIRONMENT_IDENTIFIER=""
시도하는 방법?
- Setup Environment
- Modify
demo/index.ts
with your flag.
- Run
npm install
or yarn
- Run
yarn dev
or npm run dev
특허
demo/index.ts
with your flag.npm install
or yarn
yarn dev
or npm run dev
MIT
MIT License
Copyright (c) 2022 Bervianto Leo Pratama
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED
…
Note: Please don't use this for production. This library is still in heavy development and experimental. I want to improve this library before becoming production-ready.
내 도서관에 전화하는 방법?
- Promise then/catch
import featureFlag from '@berviantoleo/feature-flag';
featureFlag('try_feature_flag').then((result) => {
console.log(result);
});
async
/await
방식도 사용할 수 있습니다.
Welcome to contribute to my small library/project. :) If you have any inputs, feel free to add them here too.
무엇 향후 계획?
.NET용으로 유사한 라이브러리/프로젝트를 만들 예정입니다. 계속 지켜봐주세요!
고맙습니다
출처unsplash
Reference
이 문제에 관하여(기능 플래그 탐색 AWS AppConfig 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/aws-builders/exploring-feature-flag-use-aws-appconfig-9f9텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)