Exemple #1
0
async def create_up_solution(dsg_arn):
    solution_response = personalize.create_solution(
        name=SOLUTION_NAME_UP,
        datasetGroupArn=dsg_arn,
        recipeArn='arn:aws:personalize:::recipe/aws-user-personalization')

    solution_arn = solution_response['solutionArn']
    PersistentValues[SOLUTION_UP] = solution_arn
    write(PersistentValues)

    await util.wait_until_status_async(
        lambdaToGetStatus=lambda _="": personalize.describe_solution(
            solutionArn=solution_arn)['solution']["status"],
        messagePrefix="Creating a up solution...",
        expectedStatus="ACTIVE")

    solution_version_response = personalize.create_solution_version(
        solutionArn=solution_arn)
    solution_version_arn = solution_version_response['solutionVersionArn']

    PersistentValues[SOLUTION_VERSION_UP] = solution_version_arn
    write(PersistentValues)

    await util.wait_until_status_async(
        lambdaToGetStatus=lambda _="": personalize.describe_solution_version(
            solutionVersionArn=solution_version_arn)['solutionVersion'][
                'status'],
        messagePrefix="Creating a up solution version...",
        expectedStatus="ACTIVE")
Exemple #2
0
def create_app():
    logging.info('Create Pinpoint. Application name : {}, region: {}'.format(
        APPLICATION_NAME, REGION))
    app_response = pinpoint.create_app(
        CreateApplicationRequest={'Name': APPLICATION_NAME})
    app_id = app_response['ApplicationResponse']['Id']
    PersistentValues[APPLICATION_NAME] = app_id
    write(PersistentValues)
Exemple #3
0
def create_app():

    app_response = pinpoint.create_app(
        CreateApplicationRequest={'Name': APPLICATION_NAME})
    logger.info('Creating Pinpoint Application({}) >> Success'.format(
        APPLICATION_NAME))
    app_id = app_response['ApplicationResponse']['Id']
    PersistentValues[APPLICATION_NAME] = app_id
    write(PersistentValues)
Exemple #4
0
def create_filter(dsg_arn):
    filer_response = personalize.create_filter(
        name='FILTER_USER_PERSONALIZATION',
        datasetGroupArn=dsg_arn,
        filterExpression=
        'EXCLUDE itemId WHERE INTERACTIONS.event_type in ("title-read")')

    filter_arn = filer_response['filterArn']
    PersistentValues[FILTER_UP] = filter_arn
    write(PersistentValues)
Exemple #5
0
def create_dataset_group():
    response = personalize.create_dataset_group(name=DSG_NAME)
    dsg_arn = response['datasetGroupArn']

    PersistentValues[DSG] = dsg_arn
    write(PersistentValues)

    logging.info("Dataset group has been created. ARN: " + dsg_arn)

    util.wait_until_status(lambda _="": personalize.describe_dataset_group(
        datasetGroupArn=dsg_arn)["datasetGroup"]["status"],
                           "Creating dataset group...",
                           "ACTIVE")
Exemple #6
0
def create_import_job():

    segment_response = pinpoint.create_import_job(
        ApplicationId=PersistentValues[APPLICATION_NAME],
        ImportJobRequest={
            'Format': 'CSV',
            'RoleArn': PersistentValues[ROLE_NAME],
            'S3Url': f's3://{BUCKET_NAME}{SEGMENT_PATH}',
            'SegmentName': SEGEMENT_NAME
        })
    logger.info('Creating Segment({}) >> Success'.format(SEGEMENT_NAME))
    segment_id = segment_response['Definition']['SegmentId']
    PersistentValues[SEGEMENT_NAME] = segment_id
    write(PersistentValues)
Exemple #7
0
def create_function():
    logging.info('Create Lambda. Function name : {}'.format(FUNCTION_NAME))
    function_response = function.create_function(
        FunctionName=FUNCTION_NAME,
        Runtime='python3.8',
        Role=PersistentValues[LAMBDA_ROLE_NAME],
        Handler='lambda_function.lambda_handler',
        Code={
            'S3Bucket': BUCKET_NAME,
            'S3Key': LAMBDA_PATH
        })
    function_arn = function_response['FunctionArn']
    PersistentValues[FUNCTION_NAME] = function_arn
    write(PersistentValues)
Exemple #8
0
def register_schema():
    json_file_paths = util.get_file_paths_recursively(DATA_DIRECTORY, "json")

    for p in json_file_paths:
        with open(p) as f:
            schema_name = p.split("/")[1]
            createSchemaResponse = personalize.create_schema(name=schema_name,
                                                             schema=f.read())

        schema_arn = createSchemaResponse['schemaArn']
        logging.info('Schema Name: {}, ARN: {}'.format(schema_name,
                                                       schema_arn))
        PersistentValues[schema_name] = schema_arn

    write(PersistentValues)
Exemple #9
0
async def create_up_campaign(solutionVersionArn):
    response = personalize.create_campaign(
        name=CAMPAIGN_NAME_UP,
        solutionVersionArn=solutionVersionArn,
        minProvisionedTPS=1)

    arn = response['campaignArn']
    PersistentValues[CAMPAIGN_UP] = arn
    write(PersistentValues)

    await util.wait_until_status_async(
        lambdaToGetStatus=lambda _="": personalize.describe_campaign(
            campaignArn=arn)['campaign']['status'],
        messagePrefix="Creating a up campaign...",
        expectedStatus="ACTIVE")
Exemple #10
0
def create_import_job():
    logging.info('Create Segment. Segment name : {}'.format(SEGEMENT_NAME))
    segment_response = pinpoint.create_import_job(
        ApplicationId=PersistentValues[APPLICATION_NAME],
        ImportJobRequest={
            'DefineSegment': True,
            'Format': 'CSV',
            'RoleArn': PersistentValues[S3_ROLE_NAME_FOR_PINPOINT],
            'S3Url': f's3://{BUCKET_NAME}/{SEGMENT_PATH}',
            'SegmentName': SEGEMENT_NAME
        })
    time.sleep(10)  # 10초를 기다리지 않으면 SegmentId가 생성되지 않음...
    segment_id = segment_response['ImportJobResponse']['Definition'][
        'SegmentId']
    PersistentValues[SEGEMENT_NAME] = segment_id
    write(PersistentValues)
Exemple #11
0
def create_lambda_role():
    logging.info("Creating a role for Lambda. Role name: " + LAMBDA_ROLE_NAME)

    role_arn = iam_client.create_role(RoleName=LAMBDA_ROLE_NAME,
                                      AssumeRolePolicyDocument='''{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "lambda.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}''')['Role']['Arn']

    new_policy = iam_client.create_policy(PolicyName=LAMBDA_POLICY_NAME,
                                          PolicyDocument=f'''{{
    "Version": "2012-10-17",
    "Id": "{LAMBDA_POLICY_NAME}",
    "Statement": [
        {{
            "Effect": "Allow",
            "Action": "logs:CreateLogGroup",
            "Resource": "arn:aws:logs:{REGION}:{ACCOUNT_ID}:*"
        }},
        {{
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogStream",
                "logs:PutLogEvents"
            ],
            "Resource": [
                "arn:aws:logs:{REGION}:{ACCOUNT_ID}:log-group:/aws/lambda/{FUNCTION_NAME}:*"
            ]
        }}
    ]
}}''')
    new_policy_arn = new_policy['Policy']['Arn']

    policy = iam_resource.Policy(new_policy_arn)
    policy.attach_role(RoleName=LAMBDA_ROLE_NAME)

    PersistentValues[LAMBDA_ROLE_NAME] = role_arn
    PersistentValues[LAMBDA_POLICY_NAME] = new_policy_arn
    write(PersistentValues)
Exemple #12
0
def create_recommender_configuration():
    logging.info('Create ML Model. Recommender name : {}'.format(ML_NAME))
    model_response = pinpoint.create_recommender_configuration(
        CreateRecommenderConfiguration={
            'Attributes': {
                'Recommendations.Title': 'Title'
            },
            'Name': ML_NAME,
            'RecommendationProviderIdType': 'PINPOINT_USER_ID',
            'RecommendationProviderRoleArn': PersistentValues[ML_ROLE_NAME],
            'RecommendationProviderUri': PersistentValues[CAMPAIGN_UP],
            'RecommendationTransformerUri': FUNCTION_NAME,
            'RecommendationsPerMessage': 5
        })
    model_id = model_response['RecommenderConfigurationResponse']['Id']
    PersistentValues[ML_NAME] = model_id
    write(PersistentValues)
Exemple #13
0
def create_s3_role():
    logging.info("Creating a role for Personalize. Role name: " +
                 S3_ROLE_NAME_FOR_PERSONALIZE)

    role_arn = iam_client.create_role(RoleName=S3_ROLE_NAME_FOR_PERSONALIZE,
                                      AssumeRolePolicyDocument='''{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "personalize.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}''')['Role']['Arn']

    new_policy = iam_client.create_policy(
        PolicyName=S3_POLICY_NAME_FOR_ROLE_FOR_PERSONALIZE,
        PolicyDocument=f'''{{
    "Version": "2012-10-17",
    "Id": "{S3_POLICY_NAME_FOR_ROLE_FOR_PERSONALIZE}",
    "Statement": [
        {{
            "Sid": "{S3_POLICY_NAME_FOR_ROLE_FOR_PERSONALIZE}",
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": [
                "arn:aws:s3:::{BUCKET_NAME}",
                "arn:aws:s3:::{BUCKET_NAME}/*"
            ]
        }}
    ]
}}''')
    new_policy_arn = new_policy['Policy']['Arn']

    policy = iam_resource.Policy(new_policy_arn)
    policy.attach_role(RoleName=S3_ROLE_NAME_FOR_PERSONALIZE)

    PersistentValues[S3_ROLE_NAME_FOR_PERSONALIZE] = role_arn
    PersistentValues[S3_POLICY_NAME_FOR_ROLE_FOR_PERSONALIZE] = new_policy_arn
    write(PersistentValues)
Exemple #14
0
def create_campaign():
    logging.info('Create Campaign. Campaign name : {}'.format(CAMPAIGN_NAME))
    campaign_response = pinpoint.create_campaign(
        ApplicationId=PersistentValues[APPLICATION_NAME],
        WriteCampaignRequest={
            'Name': CAMPAIGN_NAME,
            'SegmentId': PersistentValues[SEGEMENT_NAME],
            'TemplateConfiguration': {
                'EmailTemplate': {
                    'Name': EMAIL_NAME
                }
            },
            'Schedule': {
                'StartTime': 'IMMEDIATE'
            }
        })
    campaign_id = campaign_response['CampaignResponse']['Arn']
    PersistentValues[CAMPAIGN_NAME] = campaign_id
    write(PersistentValues)
Exemple #15
0
def create_ml_role():
    logging.info("Creating a role for Lambda. Role name: " + ML_ROLE_NAME)

    role_arn = iam_client.create_role(RoleName=ML_ROLE_NAME,
                                      AssumeRolePolicyDocument='''{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "pinpoint.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}''')['Role']['Arn']

    new_policy = iam_client.create_policy(PolicyName=ML_POLICY_NAME,
                                          PolicyDocument=f'''{{
    "Version": "2012-10-17",
    "Id": "{ML_POLICY_NAME}",
    "Statement": [
        {{
            "Effect": "Allow",
            "Action": [
                "personalize:*"
            ],
            "Resource": [
                "{PersistentValues[CAMPAIGN_UP]}",
                "{PersistentValues[SOLUTION_UP]}"
            ]
        }}
    ]
}}''')
    new_policy_arn = new_policy['Policy']['Arn']

    policy = iam_resource.Policy(new_policy_arn)
    policy.attach_role(RoleName=ML_ROLE_NAME)

    PersistentValues[ML_ROLE_NAME] = role_arn
    PersistentValues[ML_POLICY_NAME] = new_policy_arn
    write(PersistentValues)
Exemple #16
0
def create_role():

    ASSUME_POLICY = '''{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "pinpoint.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}'''
    role_response = iam.creat_role(RoleName=ROLE_NAME,
                                   AssumeRolePolicyDocument=ASSUME_POLICY,
                                   PermissionsBoundary=POLICY_NAME)
    logger.info('Creating IAM Role({}) >> Success'.format(ROLE_NAME))
    role_arn = role_response['Role']['Arn']
    PersistentValues[ROLE_NAME] = role_arn
    write(PersistentValues)
Exemple #17
0
def create_campaign():

    campaign_response = pinpoint.create_campaign(
        ApplicationId=PersistentValues[APPLICATION_NAME],
        WriteCampaignRequest={
            'Name': CAMPAIGN_NAME,
            'SegmentId': PersistentValues[SEGEMENT_NAME],
            'TemplateConfiguration': {
                'EmailTemplate': {
                    'Name': EMAIL_NAME
                }
            },
            'Schedule': {
                'StartTime': 'IMMEDIATE',
                'Timezone': 'UTC+09'
            }
        })
    logger.info('Creating Campaign({}) >> Success'.format(CAMPAIGN_NAME))
    campaign_arn = campaign_response['campaignArn']
    PersistentValues[CAMPAIGN_NAME] = campaign_arn
    write(PersistentValues)
Exemple #18
0
def create_dataset(datasetGroupArn, titleSchemaArn, userSchemaArn,
                   titleReadSchemaArn):
    dataset_arn = 'datasetArn'

    title_dataset = personalize.create_dataset(name=TITLE,
                                               schemaArn=titleSchemaArn,
                                               datasetGroupArn=datasetGroupArn,
                                               datasetType="Items")
    logging.info("titleDatasetArn: " + title_dataset[dataset_arn])
    PersistentValues[TITLE_DATASET] = title_dataset[dataset_arn]
    write(PersistentValues)

    user_dataset = personalize.create_dataset(name=USER,
                                              schemaArn=userSchemaArn,
                                              datasetGroupArn=datasetGroupArn,
                                              datasetType="Users")
    logging.info("userDatasetArn: " + user_dataset[dataset_arn])
    PersistentValues[USER_DATASET] = user_dataset[dataset_arn]
    write(PersistentValues)

    title_read_dataset = personalize.create_dataset(
        name=TITLE_READ,
        schemaArn=titleReadSchemaArn,
        datasetGroupArn=datasetGroupArn,
        datasetType="Interactions")
    logging.info("titleReadDatasetArn: " + title_read_dataset[dataset_arn])
    PersistentValues[TITLE_READ_DATASET] = title_read_dataset[dataset_arn]
    write(PersistentValues)
Exemple #19
0
def create_policy():

    POLICY = f'''{{
    "Version": "2012-10-17",
    "Id": {POLICY_NAME},
    "Statement": [
        {{
            "Effect": "Allow",
            "Action": "s3:*"
            "Resource": [
                "arn:aws:s3:::{BUCKET_NAME}",
                "arn:aws:s3:::{BUCKET_NAME}/*"
            ]
        }}
    ]
}}'''
    policy_response = iam.create_policy(PolicyName=POLICY_NAME,
                                        PolicyDocument=POLICY)
    logger.info('Creating IAM Policy({}) >> Success'.format(POLICY_NAME))
    policy_arn = policy_response['Policy']['Arn']
    PersistentValues[POLICY_NAME] = policy_arn
    write(PersistentValues)