機能フラグの使用


皆さんこんにちは!
今週、私はAWS appconfigについて学びました.私はTrunk Based Developmentを使用して以来、私のアプリケーションの機能フラグが必要です.動きましょう.

AWSの設定


あなたのAWS AppConfigを設定することができます.ガイドから6ステップに従う必要があります.
  • AWS appconfigアプリケーションを作成する
  • 環境
  • を作成する
  • は、構成プロフィールと特徴旗
  • をつくります
  • 展開戦略を作成する
  • 設定を展開する
    の設定を取得する
    この記事では、ステップ6とコードに焦点を合わせます.

    オフィシャルガイド AWS appconfigから機能フラグを取得する


    機能フラグを取得する前に、適切なアクセスでAWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYが必要になります.私は、機能フラグを呼び出して、 を使用する「小さな図書館」をつくりました.
    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と図書館でAWS SDK for Javascriptにコードを発表しました.

    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=""

    どうやって?

    1. Setup Environment
    2. Modify demo/index.ts with your flag.
    3. Run npm install or yarn
    4. Run 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アプローチを使用することができます.
  • 例の出力
  • feature-flag

    Welcome to contribute to my small library/project. :) If you have any inputs, feel free to add them here too.


    次は何ですか。


    私は同様のライブラリ/プロジェクトを作成するつもりです.ネットそれで、調整されてください!

    ありがとう



    からの源