Condividi tramite


Guida introduttiva: Aggiornare le opzioni di runtime del motore di esecuzione JavaScript in una risorsa CCF gestita di Azure

A volte è necessario aggiornare le opzioni di runtime dell'interprete JavaScript CCF per estendere la durata dell'esecuzione della richiesta o aggiornare le dimensioni dell'heap o dell'allocazione dello stack. In questa guida si apprenderà come aggiornare le impostazioni di runtime. Questa esercitazione si basa sulla risorsa CCF gestita di Azure creata nella guida introduttiva: Creare una risorsa CCF gestita di Azure usando l'esercitazione portale di Azure.

Prerequisiti

  • Python 3+.
  • Installare la versione più recente del pacchetto Python CCF.

Scaricare l'identità del servizio

Una risorsa CCF gestita di Azure ha un'identità univoca denominata identità del servizio. È rappresentato da un certificato e viene creato durante la creazione della risorsa. Ogni singolo nodo che fa parte della risorsa CCF gestita di Azure ha il certificato autofirmato, approvato dall'identità del servizio, che stabilisce l'attendibilità su di esso.

I clienti sono consigliati per scaricare il certificato di identità del servizio e usarlo per stabilire una connessione TLS durante l'interazione con il servizio. Il comando seguente scarica il certificato e lo salva in service_cert.pem.

curl https://identity.confidential-ledger.core.azure.com/ledgerIdentity/confidentialbillingapp --silent | jq ' .ledgerTlsCertificate' | xargs echo -e > service_cert.pem

Aggiornare le opzioni di runtime

Nota

Quando si eseguono i comandi in un Mac, sostituire date -Is con date +%FT%T%z.

  1. Preparare un file set_js_runtime_options.json e inviarlo usando questo comando:
    $ cat set_js_runtime_options.json
    {
      "actions": [
        {
          "name": "set_js_runtime_options",
          "args": {
            "max_heap_bytes": 1024,
            "max_stack_bytes": 1024,
            "max_execution_time_ms": 5000, // increase the request execution time
            "log_exception_details": false,
            "return_exception_details": false
          }
        }
      ]
    }
    
    $ proposal_id=$( (ccf_cose_sign1 --content set_js_runtime_options.json --signing-cert member0_cert.pem --signing-key member0_privk.pem --ccf-gov-msg-type proposal --ccf-gov-msg-created_at `date -Is` | curl https://confidentialbillingapp.confidential-ledger.azure.com/gov/proposals -H 'Content-Type: application/cose' --data-binary @- --cacert service_cert.pem | jq -r ‘.proposal_id’) )
    
  2. Il passaggio successivo consiste nell'accettare la proposta inviando un voto.
    cat vote_accept.json
    {
      "ballot": "export function vote (proposal, proposerId) { return true }"
    }
    
    ccf_cose_sign1 --content vote_accept.json --signing-cert member0_cert.pem --signing-key member0_privk.pem --ccf-gov-msg-type ballot --ccf-gov-msg-created_at `date -Is` --ccf-gov-msg-proposal_id $proposal_id | curl https://confidentialbillingapp.confidential-ledger.azure.com/gov/proposals/$proposal_id/ballots -H 'Content-Type: application/cose' --data-binary @- --cacert service_cert.pem
    
  3. Ripetere il passaggio precedente per ogni membro nella risorsa CCF gestita.
  4. Dopo aver accettato la proposta, le opzioni di runtime verranno applicate alle richieste successive.

Passaggi successivi