# Init boto config

BOTO_CONFIG = json.loads(os.environ['botoConfig'])
CONFIG = Config(**BOTO_CONFIG)

logger = logging.getLogger(__name__)
# Initialise the helper, all inputs are optional, this example shows the defaults

helper = CfnResource(json_logging=False,
                     log_level='INFO',
                     boto_level='CRITICAL')
try:
    ## Init code
    pass
except Exception as e:
    helper.init_failure(e)


@helper.create
def create(event, context):
    logger.info("Got Create")
    logger.info(event)
    # Optionally return an ID that will be used for the resource PhysicalResourceId,
    # if None is returned an ID will be generated. If a poll_create function is defined
    # return value is placed into the poll event as event['CrHelperData']['PhysicalResourceId']
    #
    # To add response data update the helper.Data dict
    # If poll is enabled data is placed into poll event as event['CrHelperData']
    """
    Get FSx DNS Name
    """
from crhelper import CfnResource

# Setup Default Logger
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
logger.setLevel(os.environ.get("LOG_LEVEL", logging.ERROR))

# Initialize the helper
helper = CfnResource(json_logging=False,
                     log_level="DEBUG",
                     boto_level="CRITICAL")

try:
    ds_client = boto3.client("ds")
except Exception as error:
    helper.init_failure(error)

if TYPE_CHECKING:
    from typing import List, Tuple, Union


def get_directory_alias_and_sso_enabled_status(
        directory_id: str) -> Union[Tuple[str, bool], None]:
    """Get the existing directory alias, if configured, and get the current directory SSO state.

    Args:
        directory_id: Directory ID

    Returns:
        existing directory alias and current directory SSO state
    """
import requests
from ruamel import yaml
from datetime import date, datetime
from crhelper import CfnResource
from time import sleep

logger = logging.getLogger(__name__)
helper = CfnResource(json_logging=True, log_level='DEBUG')

try:
    s3_client = boto3.client('s3')
    kms_client = boto3.client('kms')
    ec2_client = boto3.client('ec2')
    s3_scheme = re.compile(r'^s3://.+/.+')
except Exception as init_exception:
    helper.init_failure(init_exception)


def s3_get(url):
    try:
        return str(
            s3_client.get_object(Bucket=url.split('/')[2],
                                 Key="/".join(
                                     url.split('/')[3:]))['Body'].read())
    except Exception as e:
        raise RuntimeError(
            f"Failed to fetch CustomValueYaml {url} from S3. {e}")


def http_get(url):
    try:
Example #4
0
    )
    return new_component

  def update_component(ib, platform, component_config):
    existing_component = get_existing_component(ib, platform, component_config)
    return create_component(ib, platform, component_config)

  def create_components(ib, compent_list):
    for component in component_def:
      create_component(ib, platform, component_config)

  def create_ib_client():
    return boto3.client('imagebuilder')

except Exception as e:
    custom_resource_helper.init_failure(e)

@custom_resource_helper.create
def create(event, context):
    logger.info("Got Create")
    if not event.get('ResourceProperties').get('Platform') and not event.get('ResourceProperties').get('Version'):
      raise ValueError("Component must include the properties Platform and Version")
    ib = create_ib_client()
    platform = event.get('ResourceProperties').get('Platform')
    version = event.get('ResourceProperties').get('Version')
    component_yaml = event.get('ResourceProperties').get('ComponentTemplate')
    if version:
      component_yaml.update({"version": version})
    component = create_component(ib, platform, component_yaml)
    custom_resource_helper.Data.update({"component": component})
    return component.get('componentBuildVersionArn')