def main()

in rstudio_fargate/rstudio/ses/ses_custom_resource_handler.py [0:0]


def main(event, context):
    physical_id = "%s.%s" % (id_generator(6), id_generator(16))

    print(event)

    try:
        log.info("Input event: %s", event)

        # Check if this is a Create and we're failing Creates
        if event["RequestType"] == "Create" and event["ResourceProperties"].get(
            "FailCreate", False
        ):
            raise RuntimeError("Create failure requested")
        if event["RequestType"] in ["Create"]:
            client = boto3.client("ses")
            sm_client = boto3.client("secretsmanager")
            email_from = event["ResourceProperties"]["EmailFrom"]
            email_to = event["ResourceProperties"]["EmailTo"]
            subject = event["ResourceProperties"]["Subject"]
            message = event["ResourceProperties"]["Message"]
            secret_arn = event["ResourceProperties"]["SecretArn"]
            sresponse = sm_client.get_secret_value(SecretId=secret_arn)
            message = message.replace("<password>", escape(sresponse["SecretString"]))
            response = send_email(email_from, email_to, subject, message)

            attributes = {"Response": response}
            cfnresponse.send(
                event, context, cfnresponse.SUCCESS, attributes, physical_id
            )

        if event["RequestType"] in ["Delete", "Update"]:
            attributes = {"Response": "Delete/update performed"}
            cfnresponse.send(
                event, context, cfnresponse.SUCCESS, attributes, physical_id
            )
    except Exception as e:
        log.exception(e)
        cfnresponse.send(event, context, cfnresponse.FAILED, {}, physical_id)