3 c):_@sfddlZddlZddlZddlZddlZddljZdddZ dddZ dd d Z d d Z dddZ dS)NcCsd}xz||kr~y |}WnPtk rh}z4|jdddkrJtjddStjd||Sd}~XnXtj|||7}qWdS)NrErrorCodeZResourceNotFoundExceptionzSuccessful delete zDeletion failed: ) Exceptionresponselogginginfotimesleep)callbackZ check_timetimeout elapsed_timeouter@/home/ec2-user/SageMaker/forecasting-workshop/util/fcst_utils.pywait_till_delete s    rcCs|d}tj||}d}x@|dkr\|d}tj|||7}tdddd|dkrPqW|dkrjd}|rrd nd }tdtjd |d || S) NStatusTZACTIVE.)endflushZ CREATE_FAILEDFfailedsuccessz Finished in z seconds with status )r r printrr )r Z time_intervalZ last_statusrZ is_failedZ job_statusrrrwaits$      rFcCs<tj|dd}dddg|_|r*dddg|_|j|d|kS)N)headeritem_id timestamptarget)pdread_csvcolumnsloc)fnamerZis_schema_permexactrrrload_exact_sol0s   r(c Cstjd}d}ddddiddgd }d}y$|j|tj|d }|d d }Wn:|jjk rtd |dtjdj |j }YnXd}|j ||d|j d|dt j dt||S)NiamZForecastDemoRolez 2012-10-17ZAllowServicezforecast.amazonaws.comzsts:AssumeRole)ZEffectZ PrincipalAction)Version Statement)RoleNameZAssumeRolePolicyDocumentRoleZArnz The role zexists, ignore to create itz0arn:aws:iam::aws:policy/AmazonForecastFullAccess)r. PolicyArnz*arn:aws:iam::aws:policy/AmazonS3FullAccess)r0r.r)boto3clientZ create_rolejsondumps exceptionsZEntityAlreadyExistsExceptionrresourcer/arnZattach_role_policyr r )r) role_nameZassume_role_policy_documentrole_arnZcreate_role_responseZ policy_arnrrrget_or_create_role_arn8s2  r:1HPc Cs0tj|ddd}tj|ddd}tj|ddd}|djdd}|d } |d jd d} tj| | d|d j| dd dtj||djddtj|dj|dj|djdddtjtj| ddddtjtj| ||dddddtj ddtj ddgdddS)NZForecastZ Predictionsp10p50p90 TimestampcSs tj|S)N)r"rA)xrrrgsz plot_forecasts..rr cSs tj|S)N)r"rA)rBrrrrCisr!r)colorValuekbg333333?)rEalphagdashed)rB linewidthrElsr)rotationZTargetz lower left)r%) r" DataFrameapplypltplotvalues fill_betweenaxvlinerAxtickslegend) Zfcstsr'freqZforecastHorizonZ time_backr>r?r@Zpred_intZfcst_start_dateZtime_intrrrplot_forecastscs&     r[)rr)r)F)r;r<r=)r r1r3pandasr"rmatplotlib.pyplotpyplotrSrrr(r:r[rrrrs    +