Skip to main content

AWS CDK custom resource that handles large files deployment to S3 bucket.

Project description

Pipeline

B.CfnS3LargeDeployment

b-cfn-s3-large-deployment - AWS CDK custom resource that handles large files deployment to S3 bucket.

Description

This custom resource deploys local files or S3 bucket objects to a destination bucket retaining their file-system hierarchy.

Two types of deployment sources are available:

  • BucketDeploymentSource - uses another S3 bucket object(-s) as source for the deployment to a destination bucket. Only files up to 5TB are supported due to S3 bucket limitations;
  • AssetDeploymentSource - uses aws-cdk.aws-s3-assets lib to deploy local files as .zip files to assets bucket from which extracted contents are moved to the destination bucket. Asset files more than 2GB in size are not supported.

See "Known limits" sections below for more information on this resource limitations.

This resource implementation is based on GitHub pull-request https://github.com/aws/aws-cdk/pull/15220.

Remarks

Biomapas aims to modernise life-science industry by sharing its IT knowledge with other companies and the community.

Related technology

  • Python 3.8
  • Amazon Web Services (AWS)

Assumptions

The project assumes that the person working with it have basic knowledge in python programming.

Useful sources

See code documentation for any additional sources and references. Also see aws-cdk.s3-deployment library for more information as this implementation is based on work done there.

Install

Use the package manager pip to install this package. This project is not in the PyPi repository yet. Install directly from source or PyPI.

pip install .

Or

pip install b-cfn-s3-large-deployment

Usage & Examples

from aws_cdk.core import App, Stack, Construct
from aws_cdk.aws_s3 import Bucket

from b_cfn_s3_large_deployment.resource import S3LargeDeploymentResource
from b_cfn_s3_large_deployment.deployment_props import DeploymentProps
from b_cfn_s3_large_deployment.deployment_source import AssetDeploymentSource, BucketDeploymentSource


class ExampleStack(Stack):
    def __init__(self, scope: Construct):
        super().__init__(...)

        S3LargeDeploymentResource(
            scope=self,
            name='ExampleLargeDeployment',
            sources=[
                AssetDeploymentSource(path='/path/to/your/local/directory'),
                AssetDeploymentSource(path='/path/to/your/local/zip/file.zip'),
                BucketDeploymentSource(
                  bucket=..., 
                  zip_object_key='your-source-bucket-object-key'
                ),
                ...
            ],
            destination_bucket=Bucket(...),
            props=DeploymentProps(...)
        )
        ...


app = App()
ExampleStack(app, 'ExampleStack')

app.synth()

Known limits

  • aws_cdk.aws_s3_assets.Asset supports up to 2GB/asset (limited by NodeJS implementation).
  • S3 bucket supports up to 5TB objects.

Testing

No throughout testing is yet implemented - only a single integration test, checking the success of cdk synth command.

Contribution

Found a bug? Want to add or suggest a new feature? Contributions of any kind are gladly welcome. Contact your direct supervisor, create a pull-request or an issue in Jira platform.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

b-cfn-s3-large-deployment-1.1.1.tar.gz (16.9 kB view details)

Uploaded Source

Built Distribution

b_cfn_s3_large_deployment-1.1.1-py3-none-any.whl (19.0 kB view details)

Uploaded Python 3

File details

Details for the file b-cfn-s3-large-deployment-1.1.1.tar.gz.

File metadata

  • Download URL: b-cfn-s3-large-deployment-1.1.1.tar.gz
  • Upload date:
  • Size: 16.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.12

File hashes

Hashes for b-cfn-s3-large-deployment-1.1.1.tar.gz
Algorithm Hash digest
SHA256 bf9fe582ac7a690faf27ba585fd51a4f0ce119472121b2303f9b518c5f93f541
MD5 3cd5ff812c645fe27e349aa3996c1421
BLAKE2b-256 302587560aa52adff6ba804bec86c9b8eee1d5318257144494d12d8642445e6c

See more details on using hashes here.

File details

Details for the file b_cfn_s3_large_deployment-1.1.1-py3-none-any.whl.

File metadata

  • Download URL: b_cfn_s3_large_deployment-1.1.1-py3-none-any.whl
  • Upload date:
  • Size: 19.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.12

File hashes

Hashes for b_cfn_s3_large_deployment-1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 31da2ba0e2d44a30924332a70ba4a7c7251c130f2ba879e1b2ceb3a6d6b4dbe6
MD5 1abf3835ead484112a91624209c42cea
BLAKE2b-256 bd1694ffb7ad3d323a08ed84bf3f6e653ffb08b2b50de1fb5c79dfe427f888fd

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page