async getMetadataToken()

in src/ecs_ram_role_credential.ts [38:54]


  async getMetadataToken(): Promise<string> {
    if (this.needToRefresh()) {
      let tmpTime = new Date().getTime() + this.metadataTokenDuration * 1000;
      const response = await httpx.request(SECURITY_CRED_TOKEN_URL, {
        headers: {
          'X-aliyun-ecs-metadata-token-ttl-seconds': `${this.metadataTokenDuration}`
        },
        method: "PUT"
      });
      if (response.statusCode !== 200) {
        throw new Error(`Failed to get token from ECS Metadata Service. HttpCode=${response.statusCode}`);
      }
      this.staleTime = tmpTime;
      return (await httpx.read(response, 'utf8')) as string;
    }
    return this.metadataToken;
  }