content/lab_assets/start/lab4/cfn-project/lambda_functions/source/SurveySubmit/survey_submit.py [6:42]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
def acc_id_from_arn(arn):
    return arn.split(":")[4]


def region_from_arn(arn):
    return arn.split(":")[3]


def table_name_from_arn(arn):
    return arn.split("/")[1]


def get_ddb_table(local_acc):
    arn = os.environ['TABLE_ARN']
    ddb_acc = acc_id_from_arn(arn)
    ddb_region = region_from_arn(arn)
    table_name = table_name_from_arn(arn)
    if ddb_acc == local_acc:
        session = boto3.Session()
    else:
        sts_client = boto3.client("sts")
        creds = sts_client.assume_role(
            RoleArn=f"arn:aws:iam::{ddb_acc}:role/team_{local_acc}_role",
            RoleSessionName="survey"
        )['Credentials']
        session = boto3.Session(
            aws_access_key_id=creds['AccessKeyId'],
            aws_secret_access_key=creds['SecretAccessKey'],
            aws_session_token=creds['SessionToken']
        )
    dynamodb = session.resource('dynamodb', region_name=ddb_region)
    return dynamodb.Table(table_name)


def lambda_handler(event, context):
    account_id = acc_id_from_arn(context.invoked_function_arn)
    table = get_ddb_table(account_id)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



content/lab_assets/start/lab5/cfn-project/lambda_functions/source/SurveySubmit/survey_submit.py [7:43]:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
def acc_id_from_arn(arn):
    return arn.split(":")[4]


def region_from_arn(arn):
    return arn.split(":")[3]


def table_name_from_arn(arn):
    return arn.split("/")[1]


def get_ddb_table(local_acc):
    arn = os.environ['TABLE_ARN']
    ddb_acc = acc_id_from_arn(arn)
    ddb_region = region_from_arn(arn)
    table_name = table_name_from_arn(arn)
    if ddb_acc == local_acc:
        session = boto3.Session()
    else:
        sts_client = boto3.client("sts")
        creds = sts_client.assume_role(
            RoleArn=f"arn:aws:iam::{ddb_acc}:role/team_{local_acc}_role",
            RoleSessionName="survey"
        )['Credentials']
        session = boto3.Session(
            aws_access_key_id=creds['AccessKeyId'],
            aws_secret_access_key=creds['SecretAccessKey'],
            aws_session_token=creds['SessionToken']
        )
    dynamodb = session.resource('dynamodb', region_name=ddb_region)
    return dynamodb.Table(table_name)


def lambda_handler(event, context):
    account_id = acc_id_from_arn(context.invoked_function_arn)
    table = get_ddb_table(account_id)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -



