in workshop/post_build.py [0:0]
def main():
# Setup environment
region = os.environ['RT_REGION']
workshop_name = os.environ['WORKSHOP_NAME']
gql_endpoint = os.environ['GQL_ENDPOINT']
gql_assume_role = os.environ['GQL_ROLE']
# for now content handle only workshop, in future will be added delivery
content_id = workshop_name
content_structures = []
# Analize languages in toml file
dict_toml = toml.load(open('./config.toml'))
number_of_languages = len(dict_toml['Languages'])
for i, lang in enumerate(dict_toml['Languages']):
print('Load JSON structure\n')
if number_of_languages == 1:
index_location = "./public/index.json"
else:
index_location = "./public/" + lang +"/index.json"
with open(index_location, 'r') as j:
current_structure = json.load(j)
print('Finished Load JSON\n')
content_structures.append({"language": lang, "structure": current_structure})
# Change json format from Python to Javascript because GraphQL can only recognize Javascript type of Json object.
# Javascript Json object {key: "value"} ; Python Json object {"key":"value"}
# TODO: Json_keys is just hardcoded. It should find keys in JSON object.
json_keys = ["language", "structure", "pageTitle", "relativePagePath"]
structures_str = str(content_structures)
for key in json_keys:
target_key = "\'"+key+"\'"
structures_str = structures_str.replace(target_key, key)
structures_str = structures_str.replace("\'", "\"")
# AssumeRole
sts_client=boto3.client('sts')
assume_role=sts_client.assume_role(
RoleArn=gql_assume_role,
RoleSessionName='GraphQLExecuter'
)
access_key_id=assume_role['Credentials']['AccessKeyId']
secret_access_key=assume_role['Credentials']['SecretAccessKey']
session_token = assume_role['Credentials']['SessionToken']
# # Setting Sigv4
# uri = os.environ.get('AWS_CONTAINER_CREDENTIALS_RELATIVE_URI')
# credential = ContainerMetadataFetcher().retrieve_uri(uri)
# access_key_id = credential.get('AccessKeyId')
# secret_access_key = credential.get('SecretAccessKey')
# session_token = credential.get('Token')
auth = AWS4Auth(access_key_id, secret_access_key, region, 'appsync', session_token=session_token)
# Load latest version
body = {"query":""""
query ListContents{
listContents(
hostName: "%s",
limit: 1,
sortDirection: DESC
) {
items{
hostName
version
}
}
}