Skip to content

Instantly share code, notes, and snippets.

@avoidik
Created July 31, 2021 16:24
Show Gist options
  • Save avoidik/3ba2f31b98cb92103cdeaffd32d4924f to your computer and use it in GitHub Desktop.
Save avoidik/3ba2f31b98cb92103cdeaffd32d4924f to your computer and use it in GitHub Desktop.
Retrieve AWS EKS token using Python
import base64
import boto3
import re
from botocore.signers import RequestSigner
def get_bearer_token(cluster_id, region):
STS_TOKEN_EXPIRES_IN = 60
session = boto3.session.Session()
client = session.client('sts', region_name=region)
service_id = client.meta.service_model.service_id
signer = RequestSigner(
service_id,
region,
'sts',
'v4',
session.get_credentials(),
session.events
)
params = {
'method': 'GET',
'url': 'https://sts.{}.amazonaws.com/?Action=GetCallerIdentity&Version=2011-06-15'.format(region),
'body': {},
'headers': {
'x-k8s-aws-id': cluster_id
},
'context': {}
}
signed_url = signer.generate_presigned_url(
params,
region_name=region,
expires_in=STS_TOKEN_EXPIRES_IN,
operation_name=''
)
base64_url = base64.urlsafe_b64encode(signed_url.encode('utf-8')).decode('utf-8')
# remove any base64 encoding padding:
return 'k8s-aws-v1.' + re.sub(r'=*', '', base64_url)
print(get_bearer_token('eksworkshop-eksctl', 'eu-west-1'))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment