Source code for airflow.providers.amazon.aws.links.base_aws
## Licensed to the Apache Software Foundation (ASF) under one# or more contributor license agreements. See the NOTICE file# distributed with this work for additional information# regarding copyright ownership. The ASF licenses this file# to you under the Apache License, Version 2.0 (the# "License"); you may not use this file except in compliance# with the License. You may obtain a copy of the License at## http://www.apache.org/licenses/LICENSE-2.0## Unless required by applicable law or agreed to in writing,# software distributed under the License is distributed on an# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY# KIND, either express or implied. See the License for the# specific language governing permissions and limitations# under the License.from__future__importannotationsfromtypingimportTYPE_CHECKING,ClassVarfromairflow.modelsimportBaseOperatorLink,XComifTYPE_CHECKING:fromairflow.modelsimportBaseOperatorfromairflow.models.taskinstancekeyimportTaskInstanceKeyfromairflow.utils.contextimportContext
[docs]defformat_link(self,**kwargs)->str:""" Format AWS Service Link. Some AWS Service Link should require additional escaping in this case this method should be overridden. """try:returnself.format_str.format(**kwargs)exceptKeyError:return""
[docs]defget_link(self,operator:BaseOperator,*,ti_key:TaskInstanceKey,)->str:""" Link to Amazon Web Services Console. :param operator: airflow operator :param ti_key: TaskInstance ID to return link for :return: link to external system """conf=XCom.get_value(key=self.key,ti_key=ti_key)returnself.format_link(**conf)ifconfelse""
@classmethod
[docs]defpersist(cls,context:Context,operator:BaseOperator,region_name:str,aws_partition:str,**kwargs)->None:"""Store link information into XCom."""ifnotoperator.do_xcom_push:returnoperator.xcom_push(context,key=cls.key,value={"region_name":region_name,"aws_domain":cls.get_aws_domain(aws_partition),**kwargs,},)