import json import sys import time import jwt from common import EXECUTION, ISSUER, PROJECT, SANDBOX, SUB_PREFIX, kid_of, load_key audience = sys.argv[1] if len(sys.argv) > 1 else "sts.amazonaws.com" lifetime = int(sys.argv[2]) if len(sys.argv) > 2 else 900 key = load_key() now = int(time.time()) claims = { "iss": ISSUER, "sub": f"{SUB_PREFIX}{SANDBOX}/{EXECUTION}", "aud": audience, "iat": now, "nbf": now, "exp": now + lifetime, "project_id": PROJECT, "sandbox_id": SANDBOX, "execution_id": EXECUTION, } token = jwt.encode(claims, key, algorithm="ES256", headers={"kid": kid_of(key), "typ": "JWT"}) print(token) print(json.dumps({"header": jwt.get_unverified_header(token), "claims": claims}, indent=2), file=sys.stderr)