Amazon EFS assets from Github repositories or S3 buckets
Project description
cdk-efs-assets
CDK construct library to populate Amazon EFS assets from Github or S3. If the source is S3, the construct also optionally supports updating the contents in EFS if a new zip file is uploaded to S3.
Install
TypeScript/JavaScript:
npm i cdk-efs-assets
SyncedAccessPoint
The main construct that is used to provide this EFS sync functionality is SyncedAccessPoint. This extends the standard EFS AccessPoint construct, and takes an additional SyncSource constructor property which defines the source to sync assets from. The SyncedAccessPoint instance can be used anywhere an AccessPoint can be used. For example, to specify a volume in a Task Definition:
# Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826
task_definition = ecs.FargateTaskDefinition(self, "TaskDefinition",
(SpreadAssignment ...
volumes
volumes), {
"name": "efs-storage",
"efs_volume_configuration": {
"file_system_id": shared_file_system.file_system_id,
"transit_encryption": "ENABLED",
"authorization_config": {
"access_point_id": synced_access_point.access_point_id
}
}
} , =
)
SyncSource
Use the SyncSource static functions to create a SyncSource instance that can then be passed as a SyncedAccessPoint constructor property to define the source of the sync. For example:
# Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826
SyncedAccessPoint(stack, "EfsAccessPoint",
(SpreadAssignment ...
syncSource
sync_source), SyncSource=SyncSource, =.github(
vpc=vpc,
repository="https://github.com/pahud/cdk-efs-assets.git"
)
)
syncDirectoryPath
By default, the synced EFS assets are placed into a directory corresponding to the type of the sync source. For example, the default behavior of the GitHub source is to place the copied files into a directory named the same as the repository name (for a repository specified as 'https://github.com/pahud/cdk-efs-assets.git', the directory name would be 'cdk-efs-assets'), while the default behavior of the S3 archive source is to place the copied files into a directory named the same as the zip file (for a zip file name of 'assets.zip', the directory name would be 'assets').
If you wish to override this default behavior, specify a value for the syncDirectoryPath property that is passed into the SyncSource call.
If you are using the AccessPoint in an ECS/Fargate Task Definition, you probably will want to override the value of syncDirectoryPath to '/'. This will place the file contents in the root directory of the Access Point. The reason for this is that when you create a volume that is referencing an EFS Access Point, you are not allowed to specify any path other than the root directory in the task definition configuration.
How to use SyncedAccessPoint initialized with files provisioned from GitHub repository
This will sync assets from a GitHub repository to a directory (by default, the output directory is named after the repository name) in the EFS AccessPoint:
# Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826
from cdk_efs_assets import SyncSource, SyncedAccessPoint
app = App()
env = {
"region": process.env.CDK_DEFAULT_REGION ?? AWS_DEFAULT_REGION,
"account": process.env.CDK_DEFAULT_ACCOUNT
}
stack = Stack(app, "testing-stack", env=env)
vpc = ec2.Vpc.from_lookup(stack, "Vpc", is_default=True)
fs = efs.FileSystem(stack, "Filesystem",
vpc=vpc,
removal_policy=RemovalPolicy.DESTROY
)
efs_access_point = SyncedAccessPoint(stack, "GithubAccessPoint",
file_system=fs,
path="/demo-github",
create_acl={
"owner_gid": "1001",
"owner_uid": "1001",
"permissions": "0755"
},
posix_user={
"uid": "1001",
"gid": "1001"
},
sync_source=SyncSource.github(
vpc=vpc,
repository="https://github.com/pahud/cdk-efs-assets.git"
)
)
How to use SyncedAccessPoint initialized with files provisioned from zip file stored in S3
This will sync assets from a zip file stored in an S3 bucket to a directory (by default, the output directory is named after the zip file name) in the EFS AccessPoint:
# Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826
from cdk_efs_assets import S3ArchiveSync
app = App()
env = {
"region": process.env.CDK_DEFAULT_REGION ?? AWS_DEFAULT_REGION,
"account": process.env.CDK_DEFAULT_ACCOUNT
}
stack = Stack(app, "testing-stack", env=env)
vpc = ec2.Vpc.from_lookup(stack, "Vpc", is_default=True)
fs = efs.FileSystem(stack, "Filesystem",
vpc=vpc,
removal_policy=RemovalPolicy.DESTROY
)
bucket = Bucket.from_bucket_name(self, "Bucket", "demo-bucket")
efs_access_point = SyncedAccessPoint(stack, "EfsAccessPoint",
file_system=fs,
path="/demo-s3",
create_acl={
"owner_gid": "1001",
"owner_uid": "1001",
"permissions": "0755"
},
posix_user={
"uid": "1001",
"gid": "1001"
},
sync_source=SyncSource.s3_archive(
vpc=vpc,
bucket=bucket,
zip_file_path="folder/foo.zip"
)
)
syncOnUpdate
If the syncOnUpdate property is set to true (defaults to true), then the specified zip file path will be monitored, and if a new object is uploaded to the path, then it will resync the data to EFS. Note that to use this functionality, you must have a CloudTrail Trail in your account that captures the desired S3 write data event.
WARNING: The contents of the extraction directory in the access point will be destroyed before extracting the zip file.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cdk-efs-assets-0.2.18.tar.gz.
File metadata
- Download URL: cdk-efs-assets-0.2.18.tar.gz
- Upload date:
- Size: 74.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/53.0.0 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.7.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e03a57f454699f11fe222594fdb2b0cecf6874fbe21887ef7987a30c6e36f215
|
|
| MD5 |
15e653088fafe6d5f0ad7be8e069bce5
|
|
| BLAKE2b-256 |
7f6d65ec654a219b210a288935ba74816b79b99c94b4f300172165019358dc51
|
File details
Details for the file cdk_efs_assets-0.2.18-py3-none-any.whl.
File metadata
- Download URL: cdk_efs_assets-0.2.18-py3-none-any.whl
- Upload date:
- Size: 72.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/53.0.0 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.7.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
77b50f074afe1e7d21fb1d2c319db15a4f7cff68ae28680b08b2136932547908
|
|
| MD5 |
5b3392204b809b52c9981e8e985a467b
|
|
| BLAKE2b-256 |
7d5ac6d3b83aaf829af7ec73524001a0e49d56f72ccac390e7fdefce70930846
|