Skip to content

import_component

import_component(
    name: ResourceName,
    semantic_version: VersionNumber,
    type: ComponentType,
    format: ComponentFormat,
    platform: Platform,
    client_token: ClientToken,
    *,
    config_overrides: Optional[imagebuilderClientConfig] = None,
    description: Optional[NonEmptyString] = None,
    change_description: Optional[NonEmptyString] = None,
    data: Optional[NonEmptyString] = None,
    uri: Optional[Uri] = None,
    kms_key_id: Optional[NonEmptyString] = None,
    tags: Optional[TagMap] = None,
) -> ImportComponentResponse

Imports a component and transforms its data into a component document. For the SHELL format, Image Builder wraps your script in a component document with a single step that runs the script.

Parameters:

  • name (ResourceName) –

    The name of the component. Image Builder generates the component ARN from a normalized form of the name, so names that differ only in case, spaces, or underscores count as the same name. If a component with the same name and semantic version already exists in your account in the same Amazon Web Services Region, the request creates a new build version for it. If the content is also identical to the latest build version, the request fails because the component already exists.

  • semantic_version (VersionNumber) –

    The semantic version of the component. This version follows the semantic version syntax.

    The semantic version has four nodes: ../. You can assign values for the first three, and can filter on all of them.

    Assignment: For the first three nodes, you can assign any positive integer value, including zero. The upper limit is 2^30-1, or 1073741823, for each node. Image Builder automatically assigns the build number to the fourth node.

    Patterns: You can use any numeric pattern that adheres to the assignment requirements for the nodes that you can assign. For example, you might choose a software version pattern, such as 1.0.0, or a date, such as 2021.01.01.

  • description (Optional[NonEmptyString], default: None ) –

    The description of the component. Describes the contents of the component.

  • change_description (Optional[NonEmptyString], default: None ) –

    The change description of the component. This description indicates the change that has been made in this version, or what makes this version different from other versions of the component.

  • type (ComponentType) –

    The type of the component denotes whether the component is used to build the image, or only to test it.

  • format (ComponentFormat) –

    The format of the resource that you want to import as a component.

  • platform (Platform) –

    The platform of the component.

  • data (Optional[NonEmptyString], default: None ) –

    The data of the component. For the SHELL format, this is the plain script content. You must specify exactly one of the data or uri properties. For scripts that exceed the inline length constraint, use the uri property.

  • uri (Optional[Uri], default: None ) –

    The uri of the component. Must be an Amazon S3 URL and you must have permission to access the Amazon S3 bucket. If you use Amazon S3, you can specify component content up to your service quota. Either data or uri can be used to specify the data within the component.

  • kms_key_id (Optional[NonEmptyString], default: None ) –

    The Amazon Resource Name (ARN) of the KMS key that is used to encrypt this component. This can be either the Key ARN or the Alias ARN. For more information, see Key identifiers (KeyId) in the Key Management Service Developer Guide. If you don't specify a key, Image Builder encrypts the component data with a KMS key that Image Builder owns.

  • tags (Optional[TagMap], default: None ) –

    The tags of the component.

  • client_token (ClientToken) –

    A unique, case-sensitive identifier you provide to ensure that the operation runs no more than one time. If you retry a request with the same client token, Image Builder returns the original response without running the operation again. For more information, see Ensuring idempotency in the Amazon EC2 API Reference.

Raises:

  • CallRateLimitExceededException –

    You have exceeded the permitted request rate for the Amazon EC2 APIs that Image Builder calls on your behalf. Retry with an increasing or variable delay between requests.

  • ClientException –

    A generic client error. This error usually indicates that the request failed a validation check, such as when a downstream service rejects a configured value.

  • ForbiddenException –

    You are not authorized to perform the requested operation.

  • IdempotentParameterMismatchException –

    You have specified a client token for an operation using parameter values that differ from a previous request that used the same client token.

  • InvalidParameterCombinationException –

    You have specified a combination of parameters that isn't valid. For example, two mutually exclusive parameters, or a parameter without its required companion parameter. Review the error message for details.

  • InvalidRequestException –

    The request is malformed or otherwise invalid. Verify the request and try again.

  • InvalidVersionNumberException –

    Your version number is out of bounds or does not follow the required syntax.

  • ResourceInUseException –

    The resource that you are trying to operate on is currently in use. Review the message details and retry later.

  • ServiceException –

    An internal server error occurred while Image Builder processed the request. Retrying the request may succeed.

  • ServiceUnavailableException –

    The service is unable to process your request at this time.

  • UnknownServiceError –

    The service returned an error code this client does not model.

Examples:

Import a component from a shell script The following example imports a plain shell script as a Linux build component.

>>> client.import_component(name='my-example-imported-component', semantic_version='1.0.0', description='Installs my application from an imported shell script', type='BUILD', format='SHELL', platform='Linux', data='sudo yum update -y\nsudo yum -y install my-app\n', client_token='a1b2c3d4-5678-90ab-cdef-EXAMPLE88888')
Source code in docs_src/capo_imagebuilder/_services/imagebuilder.py
def import_component(
    self,
    name: "capo_imagebuilder.types.resource_name.ResourceName",
    semantic_version: "capo_imagebuilder.types.version_number.VersionNumber",
    type: "capo_imagebuilder.types.component_type.ComponentType",
    format: "capo_imagebuilder.types.component_format.ComponentFormat",
    platform: "capo_imagebuilder.types.platform.Platform",
    client_token: "capo_imagebuilder.types.client_token.ClientToken",
    *,
    config_overrides: Optional[imagebuilderClientConfig] = None,
    description: Optional[
        "capo_imagebuilder.types.non_empty_string.NonEmptyString"
    ] = None,
    change_description: Optional[
        "capo_imagebuilder.types.non_empty_string.NonEmptyString"
    ] = None,
    data: Optional[
        "capo_imagebuilder.types.non_empty_string.NonEmptyString"
    ] = None,
    uri: Optional["capo_imagebuilder.types.uri.Uri"] = None,
    kms_key_id: Optional[
        "capo_imagebuilder.types.non_empty_string.NonEmptyString"
    ] = None,
    tags: Optional["capo_imagebuilder.types.tag_map.TagMap"] = None,
) -> "capo_imagebuilder.types.import_component_response.ImportComponentResponse":
    r"""<p>Imports a component and transforms its data into a component document. For the <code>SHELL</code> format, Image Builder wraps your script in a component document with a single step that runs the script.</p>

    Args:
        name: <p>The name of the component. Image Builder generates the component ARN from a normalized form of the name, so names that differ only in case, spaces, or underscores count as the same name. If a component with the same name and semantic version already exists in your account in the same Amazon Web Services Region, the request creates a new build version for it. If the content is also identical to the latest build version, the request fails because the component already exists.</p>
        semantic_version: <p>The semantic version of the component. This version follows the semantic version syntax.</p> <note> <p>The semantic version has four nodes: <major>.<minor>.<patch>/<build>. You can assign values for the first three, and can filter on all of them.</p> <p> <b>Assignment:</b> For the first three nodes, you can assign any positive integer value, including zero. The upper limit is 2^30-1, or 1073741823, for each node. Image Builder automatically assigns the build number to the fourth node.</p> <p> <b>Patterns:</b> You can use any numeric pattern that adheres to the assignment requirements for the nodes that you can assign. For example, you might choose a software version pattern, such as 1.0.0, or a date, such as 2021.01.01.</p> </note>
        description: <p>The description of the component. Describes the contents of the component.</p>
        change_description: <p>The change description of the component. This description indicates the change that has been made in this version, or what makes this version different from other versions of the component.</p>
        type: <p>The type of the component denotes whether the component is used to build the image, or only to test it.</p>
        format: <p>The format of the resource that you want to import as a component.</p>
        platform: <p>The platform of the component.</p>
        data: <p>The data of the component. For the <code>SHELL</code> format, this is the plain script content. You must specify exactly one of the <code>data</code> or <code>uri</code> properties. For scripts that exceed the inline length constraint, use the <code>uri</code> property.</p>
        uri: <p>The uri of the component. Must be an Amazon S3 URL and you must have permission to access the Amazon S3 bucket. If you use Amazon S3, you can specify component content up to your service quota. Either <code>data</code> or <code>uri</code> can be used to specify the data within the component.</p>
        kms_key_id: <p>The Amazon Resource Name (ARN) of the KMS key that is used to encrypt this component. This can be either the Key ARN or the Alias ARN. For more information, see <a href="https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#key-id-key-ARN">Key identifiers (KeyId)</a> in the <i>Key Management Service Developer Guide</i>. If you don't specify a key, Image Builder encrypts the component data with a KMS key that Image Builder owns.</p>
        tags: <p>The tags of the component.</p>
        client_token: <p>A unique, case-sensitive identifier you provide to ensure that the operation runs no more than one time. If you retry a request with the same client token, Image Builder returns the original response without running the operation again. For more information, see <a href="https://docs.aws.amazon.com/AWSEC2/latest/APIReference/Run_Instance_Idempotency.html">Ensuring idempotency</a> in the <i>Amazon EC2 API Reference</i>.</p>

    Raises:
        capo_imagebuilder.errors.call_rate_limit_exceeded_exception.CallRateLimitExceededException: <p>You have exceeded the permitted request rate for the Amazon EC2 APIs that Image Builder calls on your behalf. Retry with an increasing or variable delay between requests.</p>
        capo_imagebuilder.errors.client_exception.ClientException: <p>A generic client error. This error usually indicates that the request failed a validation check, such as when a downstream service rejects a configured value.</p>
        capo_imagebuilder.errors.forbidden_exception.ForbiddenException: <p>You are not authorized to perform the requested operation.</p>
        capo_imagebuilder.errors.idempotent_parameter_mismatch_exception.IdempotentParameterMismatchException: <p>You have specified a client token for an operation using parameter values that differ from a previous request that used the same client token.</p>
        capo_imagebuilder.errors.invalid_parameter_combination_exception.InvalidParameterCombinationException: <p>You have specified a combination of parameters that isn't valid. For example, two mutually exclusive parameters, or a parameter without its required companion parameter. Review the error message for details.</p>
        capo_imagebuilder.errors.invalid_request_exception.InvalidRequestException: <p>The request is malformed or otherwise invalid. Verify the request and try again.</p>
        capo_imagebuilder.errors.invalid_version_number_exception.InvalidVersionNumberException: <p>Your version number is out of bounds or does not follow the required syntax.</p>
        capo_imagebuilder.errors.resource_in_use_exception.ResourceInUseException: <p>The resource that you are trying to operate on is currently in use. Review the message details and retry later.</p>
        capo_imagebuilder.errors.service_exception.ServiceException: <p>An internal server error occurred while Image Builder processed the request. Retrying the request may succeed.</p>
        capo_imagebuilder.errors.service_unavailable_exception.ServiceUnavailableException: <p>The service is unable to process your request at this time.</p>
        capo_imagebuilder.errors.UnknownServiceError: The service returned an error code this client does not model.

    Examples:
        Import a component from a shell script
        The following example imports a plain shell script as a Linux build component.

        >>> client.import_component(name='my-example-imported-component', semantic_version='1.0.0', description='Installs my application from an imported shell script', type='BUILD', format='SHELL', platform='Linux', data='sudo yum update -y\nsudo yum -y install my-app\n', client_token='a1b2c3d4-5678-90ab-cdef-EXAMPLE88888')
    """

    def _handler(
        req: "OperationRequest[capo_imagebuilder.types.import_component_request.ImportComponentRequest]",
    ) -> OperationResponse[
        "capo_imagebuilder.types.import_component_response.ImportComponentResponse"
    ]:
        import capo_imagebuilder._operations.imagebuilder.import_component

        output, http_response = (
            capo_imagebuilder._operations.imagebuilder.import_component.import_component(
                req.options, req.input
            )
        )
        return OperationResponse(output=output, response=http_response)

    interceptors_, options_ = self.operation_options(
        config_overrides, OperationLogging("ImportComponent")
    )
    input_: capo_imagebuilder.types.import_component_request.ImportComponentRequest = {
        "name": name,
        "semantic_version": semantic_version,
        "type": type,
        "format": format,
        "platform": platform,
        "client_token": client_token,
    }
    if description is not None:
        input_["description"] = description
    if change_description is not None:
        input_["change_description"] = change_description
    if data is not None:
        input_["data"] = data
    if uri is not None:
        input_["uri"] = uri
    if kms_key_id is not None:
        input_["kms_key_id"] = kms_key_id
    if tags is not None:
        input_["tags"] = tags

    response = execute_pipeline(
        OperationRequest(input=input_, options=options_),
        handler=_handler,
        interceptors=list(interceptors_),
    )
    response.response.close()
    return response.output