Azure Functions를 사용하여 서버리스 환경에서 nem2-sdk로 정기 송금 해보기

개요



Azure Functions에서 nem2-sdk를 사용하는 방법을 살짝 씁니다.

기본적으로 nem2-sdk를 사용할 수 없으므로 설치합니다. 그러나 Functions 버전이 v2가 아니면 라이브러리를 설치할 수 없습니다.

설치는 웹 화면의 콘솔에서 수행됩니다. 이 작업이 끝나면 함수를 만들고 코드를 입력합니다. 내용은 한 계정에서 다른 계정으로의 송금입니다.

함수는 트리거를 타이머로 만들고 정기적으로 시작합니다.

예를 들어, 점심시간이 되면 자동적으로 점심밥이 송금된다고 하는 사용법이 생길지도 모릅니다.

리소스 생성



  • 리소스 만들기
  • Compute
  • Function App




  • 품목
    설명


    앱 이름
    모든 이름

    구독
    선택할 수있는 사람 중 하나

    자원 그룹
    확실하지 않으면 새로 만들기

    OS
    우선 Windows

    위치
    선택

    스토리지
    확실하지 않으면 새로 만들기

    Application Insights
    켜짐

    Application Insights 위치
    선택


  • 리소스 그룹
  • (생성 된 리소스 그룹)을 클릭하십시오
  • 네 개의 리소스가 생성되었습니다



  • Functions App 설정



    이것을 클릭


  • (작성한 Function App)
  • 플랫폼 기능
  • 응용 프로그램 설정



  • 아래쪽으로 스크롤
    FUNCTIONS_EXTENSION_VERSIONbeta 로 한다.
    WEBSITE_NODE_DEFAULT_VERSION10.6.0라든지 8.11.1라든지, nem2-sdk가 요구하고 있어 Azure Functions가 대응하고 있는 Node.js의 버젼으로 한다.



    위쪽으로 스크롤

    저장하다



    Azure Functions가 지원하는 Node.js 버전


  • (작성한 Function App)
  • 플랫폼 기능
  • 고급 도구(Kudu)



  • 런타임 버전



    nem2-sdk 설치


  • 플랫폼 기능
  • 콘솔



  • 명령을 입력합니다.

    느립니다. 5 분 정도 걸립니다. 커피도 마시자.
    echo { "dependencies": { "nem2-sdk": "^0.10.1" } } > package.json
    npm install
    



    함수 만들기


  • 함수 옆의 + 마크
  • TimeTrigger JavaScript



  • 만들기



    또는이 화면이 나오면,
  • 함수 옆의 + 마크
  • 타이머
  • JavaScript
  • 이 함수 만들기



  • 이 부분에 다음 코드로 바꾸고 저장합니다.



    다음 코드
    module.exports = function (context, myTimer) {
        var timeStamp = new Date().toISOString();
    
        if(myTimer.isPastDue)
        {
            context.log('JavaScript is running late!');
        }
        context.log('JavaScript timer trigger function ran!', timeStamp);   
    
        const nem2Sdk = require("nem2-sdk");
    
        const Address = nem2Sdk.Address,
            Deadline = nem2Sdk.Deadline,
            Account = nem2Sdk.Account,
            UInt64 = nem2Sdk.UInt64,
            NetworkType = nem2Sdk.NetworkType,
            PlainMessage = nem2Sdk.PlainMessage,
            TransferTransaction = nem2Sdk.TransferTransaction,
            TransactionHttp = nem2Sdk.TransactionHttp,
            XEM = nem2Sdk.XEM;
    
        const recipientAddress = 'SB2Y5ND4FDLBIO5KHXTKRWODDG2QHIN73DTYT2PC';
    
        const transferTransaction = TransferTransaction.create(
            Deadline.create(),
            Address.createFromRawAddress(recipientAddress),
            [XEM.createRelative(1)],
            PlainMessage.create('Welcome To NEM'),
            NetworkType.MIJIN_TEST,
        );
    
        const privateKey = '7808B5B53ECF24E40BE17B8EC3D0EB5F7C3F3D938E0D95A415F855AD4C27B2A4';
        const account = Account.createFromPrivateKey(privateKey,NetworkType.MIJIN_TEST);
        const signedTransaction = account.sign(transferTransaction);
        context.log("hash: " + signedTransaction.hash);
    
        const transactionHttp = new TransactionHttp('http://catapult48gh23s.xyz:3000');
        transactionHttp.announce(signedTransaction).subscribe(
            x => {
                context.log(x);
                context.done();
                },
            err => {
                context.log.error(err);
                context.done();
            }
        );
    };
    

    함수 실행



    실행 버튼을 누르면 즉시 실행할 수 있습니다.

    완료까지 1분 정도 걸립니다.



    타이머 설정



    매분 시작



    결과





    계속 움직이는 것은 아닙니다.

    사용한 계정



    사용한 계정
      Sender:
        private: 7808B5B53ECF24E40BE17B8EC3D0EB5F7C3F3D938E0D95A415F855AD4C27B2A4
        public: 5D9513282B65A12A1B68DCB67DB64245721F7AE7822BE441FE813173803C512C
        address: SBWEUWON6IBHCW5IC4EI6V6SMTVJGCJWGLF57UGK
      Reciever:
        private: 31B96EEB0C7FD6F8FB6B4ED09A9EB142A42B194AFBEB9EB52F0B79889F22326E
        public: 3390BF02D2BB59C8722297FF998CE89183D0906E469873284C091A5CDC22FD57
        address: SB2Y5ND4FDLBIO5KHXTKRWODDG2QHIN73DTYT2PC
    

    사용한 네트워크

    사용한 수도꼭지

    좋은 웹페이지 즐겨찾기