cdk-ecr-deployment 3.2.1 → 3.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +48 -39
- package/API.md +13 -15
- package/README.md +33 -1
- package/build-lambda.sh +12 -0
- package/lambda-bin/.gitkeep +0 -0
- package/lambda-bin/bootstrap +0 -0
- package/{lambda → lambda-src}/Makefile +1 -1
- package/{lambda → lambda-src}/go.mod +1 -1
- package/{lambda → lambda-src}/go.sum +2 -2
- package/lib/config.js +2 -3
- package/lib/index.d.ts +15 -0
- package/lib/index.js +22 -10
- package/package.json +15 -13
- package/lambda/install.js +0 -82
- /package/{lambda → lambda-src}/.dockerignore +0 -0
- /package/{lambda → lambda-src}/Dockerfile +0 -0
- /package/{lambda → lambda-src}/internal/iolimits/iolimits.go +0 -0
- /package/{lambda → lambda-src}/internal/iolimits/iolimits_test.go +0 -0
- /package/{lambda → lambda-src}/internal/tarfile/reader.go +0 -0
- /package/{lambda → lambda-src}/internal/tarfile/reader_test.go +0 -0
- /package/{lambda → lambda-src}/internal/tarfile/s3file.go +0 -0
- /package/{lambda → lambda-src}/internal/tarfile/s3file_test.go +0 -0
- /package/{lambda → lambda-src}/internal/tarfile/src.go +0 -0
- /package/{lambda → lambda-src}/internal/tarfile/types.go +0 -0
- /package/{lambda → lambda-src}/main.go +0 -0
- /package/{lambda → lambda-src}/main_test.go +0 -0
- /package/{lambda → lambda-src}/s3/src.go +0 -0
- /package/{lambda → lambda-src}/s3/transport.go +0 -0
- /package/{lambda → lambda-src}/s3/transport_test.go +0 -0
- /package/{lambda → lambda-src}/utils.go +0 -0
- /package/{lambda → lambda-src}/utils_test.go +0 -0
package/.jsii
CHANGED
|
@@ -3457,7 +3457,7 @@
|
|
|
3457
3457
|
"stability": "stable"
|
|
3458
3458
|
},
|
|
3459
3459
|
"homepage": "https://github.com/cdklabs/cdk-ecr-deployment",
|
|
3460
|
-
"jsiiVersion": "5.
|
|
3460
|
+
"jsiiVersion": "5.7.8 (build 2bc6834)",
|
|
3461
3461
|
"keywords": [
|
|
3462
3462
|
"cdk"
|
|
3463
3463
|
],
|
|
@@ -3472,7 +3472,7 @@
|
|
|
3472
3472
|
},
|
|
3473
3473
|
"name": "cdk-ecr-deployment",
|
|
3474
3474
|
"readme": {
|
|
3475
|
-
"markdown": "# cdk-ecr-deployment\n\n[](https://github.com/cdklabs/cdk-ecr-deployment/actions/workflows/release.yml)\n[](https://www.npmjs.com/package/cdk-ecr-deployment)\n[](https://pypi.org/project/cdk-ecr-deployment)\n[](https://www.npmjs.com/package/cdk-ecr-deployment)\n[](https://pypi.org/project/cdk-ecr-deployment)\n\nCDK construct to synchronize single docker image between docker registries.\n\n**Only use v3 of this package**\n\n⚠️ Version 2.* is no longer supported, as the Go.1.x runtime is no longer supported in AWS Lambda.\\\n⚠️ Version 1.* is no longer supported, as CDK v1 has reached the end-of-life\nstage.\n\n## Features\n\n- Copy image from ECR/external registry to (another) ECR/external registry\n- Copy an archive tarball image from s3 to ECR/external registry\n\n## Environment variables\n\nEnable flags: `true`, `1`. e.g. `export CI=1`\n\n- `CI` indicate if it's CI environment. This flag will enable building lambda from scratch.\n- `NO_PREBUILT_LAMBDA` disable using prebuilt lambda.\n- `FORCE_PREBUILT_LAMBDA` force using prebuilt lambda.\n\n⚠️ If you want to force using prebuilt lambda in CI environment to reduce build time. Try `export FORCE_PREBUILT_LAMBDA=1`.\n\n## Examples\n\n```ts\nimport { DockerImageAsset } from 'aws-cdk-lib/aws-ecr-assets';\n\nconst image = new DockerImageAsset(this, 'CDKDockerImage', {\n directory: path.join(__dirname, 'docker'),\n});\n\n// Copy from cdk docker image asset to another ECR.\nnew ecrdeploy.ECRDeployment(this, 'DeployDockerImage1', {\n src: new ecrdeploy.DockerImageName(image.imageUri),\n dest: new ecrdeploy.DockerImageName(`${cdk.Aws.ACCOUNT_ID}.dkr.ecr.us-west-2.amazonaws.com/my-nginx:latest`),\n});\n\n// Copy from docker registry to ECR.\nnew ecrdeploy.ECRDeployment(this, 'DeployDockerImage2', {\n src: new ecrdeploy.DockerImageName('nginx:latest'),\n dest: new ecrdeploy.DockerImageName(`${cdk.Aws.ACCOUNT_ID}.dkr.ecr.us-west-2.amazonaws.com/my-nginx2:latest`),\n});\n\n// Copy from private docker registry to ECR.\n// The format of secret in aws secrets manager must be either:\n// - plain text in format <username>:<password>\n// - json in format {\"username\":\"<username>\",\"password\":\"<password>\"}\nnew ecrdeploy.ECRDeployment(this, 'DeployDockerImage3', {\n src: new ecrdeploy.DockerImageName('javacs3/nginx:latest', 'username:password'),\n // src: new ecrdeploy.DockerImageName('javacs3/nginx:latest', 'aws-secrets-manager-secret-name'),\n // src: new ecrdeploy.DockerImageName('javacs3/nginx:latest', 'arn:aws:secretsmanager:us-west-2:000000000000:secret:id'),\n dest: new ecrdeploy.DockerImageName(`${cdk.Aws.ACCOUNT_ID}.dkr.ecr.us-west-2.amazonaws.com/my-nginx3:latest`),\n}).addToPrincipalPolicy(new iam.PolicyStatement({\n effect: iam.Effect.ALLOW,\n actions: [\n 'secretsmanager:GetSecretValue',\n ],\n resources: ['*'],\n}));\n```\n\n## Sample: [test/example.ecr-deployment.ts](./test/example.ecr-deployment.ts)\n\n```shell\n# Run the following command to try the sample.\nNO_PREBUILT_LAMBDA=1 npx cdk deploy -a \"npx ts-node -P tsconfig.dev.json --prefer-ts-exts test/example.ecr-deployment.ts\"\n```\n\n## [API](./API.md)\n\n## Tech Details & Contribution\n\nThe core of this project relies on [containers/image](https://github.com/containers/image) which is used by [Skopeo](https://github.com/containers/skopeo).\nPlease take a look at those projects before contribution.\n\nTo support a new docker image source(like docker tarball in s3), you need to implement [image transport interface](https://github.com/containers/image/blob/master/types/types.go). You could take a look at [docker-archive](https://github.com/containers/image/blob/ccb87a8d0f45cf28846e307eb0ec2b9d38a458c2/docker/archive/transport.go) transport for a good start.\n\
|
|
3475
|
+
"markdown": "# cdk-ecr-deployment\n\n[](https://github.com/cdklabs/cdk-ecr-deployment/actions/workflows/release.yml)\n[](https://www.npmjs.com/package/cdk-ecr-deployment)\n[](https://pypi.org/project/cdk-ecr-deployment)\n[](https://www.npmjs.com/package/cdk-ecr-deployment)\n[](https://pypi.org/project/cdk-ecr-deployment)\n\nCDK construct to synchronize single docker image between docker registries.\n\n**Only use v3 of this package**\n\n⚠️ Version 2.* is no longer supported, as the Go.1.x runtime is no longer supported in AWS Lambda.\\\n⚠️ Version 1.* is no longer supported, as CDK v1 has reached the end-of-life\nstage.\n\n## Features\n\n- Copy image from ECR/external registry to (another) ECR/external registry\n- Copy an archive tarball image from s3 to ECR/external registry\n\n## Environment variables\n\nEnable flags: `true`, `1`. e.g. `export CI=1`\n\n- `CI` indicate if it's CI environment. This flag will enable building lambda from scratch.\n- `NO_PREBUILT_LAMBDA` disable using prebuilt lambda.\n- `FORCE_PREBUILT_LAMBDA` force using prebuilt lambda.\n\n⚠️ If you want to force using prebuilt lambda in CI environment to reduce build time. Try `export FORCE_PREBUILT_LAMBDA=1`.\n\n## Examples\n\n```ts\nimport { DockerImageAsset } from 'aws-cdk-lib/aws-ecr-assets';\n\nconst image = new DockerImageAsset(this, 'CDKDockerImage', {\n directory: path.join(__dirname, 'docker'),\n});\n\n// Copy from cdk docker image asset to another ECR.\nnew ecrdeploy.ECRDeployment(this, 'DeployDockerImage1', {\n src: new ecrdeploy.DockerImageName(image.imageUri),\n dest: new ecrdeploy.DockerImageName(`${cdk.Aws.ACCOUNT_ID}.dkr.ecr.us-west-2.amazonaws.com/my-nginx:latest`),\n});\n\n// Copy from docker registry to ECR.\nnew ecrdeploy.ECRDeployment(this, 'DeployDockerImage2', {\n src: new ecrdeploy.DockerImageName('nginx:latest'),\n dest: new ecrdeploy.DockerImageName(`${cdk.Aws.ACCOUNT_ID}.dkr.ecr.us-west-2.amazonaws.com/my-nginx2:latest`),\n});\n\n// Copy from private docker registry to ECR.\n// The format of secret in aws secrets manager must be either:\n// - plain text in format <username>:<password>\n// - json in format {\"username\":\"<username>\",\"password\":\"<password>\"}\nnew ecrdeploy.ECRDeployment(this, 'DeployDockerImage3', {\n src: new ecrdeploy.DockerImageName('javacs3/nginx:latest', 'username:password'),\n // src: new ecrdeploy.DockerImageName('javacs3/nginx:latest', 'aws-secrets-manager-secret-name'),\n // src: new ecrdeploy.DockerImageName('javacs3/nginx:latest', 'arn:aws:secretsmanager:us-west-2:000000000000:secret:id'),\n dest: new ecrdeploy.DockerImageName(`${cdk.Aws.ACCOUNT_ID}.dkr.ecr.us-west-2.amazonaws.com/my-nginx3:latest`),\n}).addToPrincipalPolicy(new iam.PolicyStatement({\n effect: iam.Effect.ALLOW,\n actions: [\n 'secretsmanager:GetSecretValue',\n ],\n resources: ['*'],\n}));\n```\n\n## Sample: [test/example.ecr-deployment.ts](./test/example.ecr-deployment.ts)\n\nAfter cloning the repository, install dependencies and run a full build:\n\n```console\nyarn --frozen-lockfile --check-files\nyarn build\n```\n\nThen run the example like this:\n\n```shell\n# Run the following command to try the sample.\nNO_PREBUILT_LAMBDA=1 npx cdk deploy -a \"npx ts-node -P tsconfig.dev.json --prefer-ts-exts test/example.ecr-deployment.ts\"\n```\n\nTo run the DockerHub example you will first need to setup a Secret in AWS Secrets Manager to provide DockerHub credentials.\nReplace `username:access-token` with your credentials.\n**Please note that Secrets will occur a cost.**\n\n```console\naws secretsmanager create-secret --name DockerHubCredentials --secret-string \"username:access-token\"\n```\n\nFrom the output, copy the ARN of your new secret and export it as env variable\n\n```console\nexport DOCKERHUB_SECRET_ARN=\"<ARN>\"\n```\n\nFinally run:\n\n```shell\n# Run the following command to try the sample.\nnpx cdk deploy -a \"npx ts-node -P tsconfig.dev.json --prefer-ts-exts test/dockerhub-example.ecr-deployment.ts\"\n```\n\nIf your Secret is encrypted, you might have to adjust the example to also grant decrypt permissions.\n\n## [API](./API.md)\n\n## Tech Details & Contribution\n\nThe core of this project relies on [containers/image](https://github.com/containers/image) which is used by [Skopeo](https://github.com/containers/skopeo).\nPlease take a look at those projects before contribution.\n\nTo support a new docker image source(like docker tarball in s3), you need to implement [image transport interface](https://github.com/containers/image/blob/master/types/types.go). You could take a look at [docker-archive](https://github.com/containers/image/blob/ccb87a8d0f45cf28846e307eb0ec2b9d38a458c2/docker/archive/transport.go) transport for a good start.\n\nAny error in the custom resource provider will show up in the CloudFormation error log as `Invalid PhysicalResourceId`, because of this: <https://github.com/aws/aws-lambda-go/issues/107>. You need to go into the CloudWatch Log Group to find the real error."
|
|
3476
3476
|
},
|
|
3477
3477
|
"repository": {
|
|
3478
3478
|
"type": "git",
|
|
@@ -3515,10 +3515,13 @@
|
|
|
3515
3515
|
},
|
|
3516
3516
|
"locationInModule": {
|
|
3517
3517
|
"filename": "src/index.ts",
|
|
3518
|
-
"line":
|
|
3518
|
+
"line": 154
|
|
3519
3519
|
},
|
|
3520
3520
|
"parameters": [
|
|
3521
3521
|
{
|
|
3522
|
+
"docs": {
|
|
3523
|
+
"summary": "- The name of the image, e.g. retrieved from `DockerImageAsset.imageUri`."
|
|
3524
|
+
},
|
|
3522
3525
|
"name": "name",
|
|
3523
3526
|
"type": {
|
|
3524
3527
|
"primitive": "string"
|
|
@@ -3526,8 +3529,8 @@
|
|
|
3526
3529
|
},
|
|
3527
3530
|
{
|
|
3528
3531
|
"docs": {
|
|
3529
|
-
"remarks": "Format `user:password` or `AWS Secrets Manager secret arn` or `AWS Secrets Manager secret name`.\
|
|
3530
|
-
"summary": "The credentials of the docker image."
|
|
3532
|
+
"remarks": "Format `user:password` or `AWS Secrets Manager secret arn` or `AWS Secrets Manager secret name`.\nIf specifying an AWS Secrets Manager secret, the format of the secret should be either plain text (`user:password`) or\nJSON (`{\"username\":\"<username>\",\"password\":\"<password>\"}`).\nFor more details on JSON format, see https://docs.aws.amazon.com/AmazonECS/latest/developerguide/private-auth.html",
|
|
3533
|
+
"summary": "- The credentials of the docker image."
|
|
3531
3534
|
},
|
|
3532
3535
|
"name": "creds",
|
|
3533
3536
|
"optional": true,
|
|
@@ -3543,7 +3546,7 @@
|
|
|
3543
3546
|
"kind": "class",
|
|
3544
3547
|
"locationInModule": {
|
|
3545
3548
|
"filename": "src/index.ts",
|
|
3546
|
-
"line":
|
|
3549
|
+
"line": 146
|
|
3547
3550
|
},
|
|
3548
3551
|
"name": "DockerImageName",
|
|
3549
3552
|
"properties": [
|
|
@@ -3556,7 +3559,7 @@
|
|
|
3556
3559
|
"immutable": true,
|
|
3557
3560
|
"locationInModule": {
|
|
3558
3561
|
"filename": "src/index.ts",
|
|
3559
|
-
"line":
|
|
3562
|
+
"line": 155
|
|
3560
3563
|
},
|
|
3561
3564
|
"name": "uri",
|
|
3562
3565
|
"overrides": "cdk-ecr-deployment.IImageName",
|
|
@@ -3566,13 +3569,13 @@
|
|
|
3566
3569
|
},
|
|
3567
3570
|
{
|
|
3568
3571
|
"docs": {
|
|
3569
|
-
"remarks": "Format `user:password` or `AWS Secrets Manager secret arn` or `AWS Secrets Manager secret name`.\
|
|
3572
|
+
"remarks": "Format `user:password` or `AWS Secrets Manager secret arn` or `AWS Secrets Manager secret name`.\nIf specifying an AWS Secrets Manager secret, the format of the secret should be either plain text (`user:password`) or\nJSON (`{\"username\":\"<username>\",\"password\":\"<password>\"}`).\nFor more details on JSON format, see https://docs.aws.amazon.com/AmazonECS/latest/developerguide/private-auth.html",
|
|
3570
3573
|
"stability": "stable",
|
|
3571
|
-
"summary": "The credentials of the docker image."
|
|
3574
|
+
"summary": "- The credentials of the docker image."
|
|
3572
3575
|
},
|
|
3573
3576
|
"locationInModule": {
|
|
3574
3577
|
"filename": "src/index.ts",
|
|
3575
|
-
"line":
|
|
3578
|
+
"line": 154
|
|
3576
3579
|
},
|
|
3577
3580
|
"name": "creds",
|
|
3578
3581
|
"optional": true,
|
|
@@ -3597,7 +3600,7 @@
|
|
|
3597
3600
|
},
|
|
3598
3601
|
"locationInModule": {
|
|
3599
3602
|
"filename": "src/index.ts",
|
|
3600
|
-
"line":
|
|
3603
|
+
"line": 181
|
|
3601
3604
|
},
|
|
3602
3605
|
"parameters": [
|
|
3603
3606
|
{
|
|
@@ -3623,7 +3626,7 @@
|
|
|
3623
3626
|
"kind": "class",
|
|
3624
3627
|
"locationInModule": {
|
|
3625
3628
|
"filename": "src/index.ts",
|
|
3626
|
-
"line":
|
|
3629
|
+
"line": 178
|
|
3627
3630
|
},
|
|
3628
3631
|
"methods": [
|
|
3629
3632
|
{
|
|
@@ -3632,7 +3635,7 @@
|
|
|
3632
3635
|
},
|
|
3633
3636
|
"locationInModule": {
|
|
3634
3637
|
"filename": "src/index.ts",
|
|
3635
|
-
"line":
|
|
3638
|
+
"line": 250
|
|
3636
3639
|
},
|
|
3637
3640
|
"name": "addToPrincipalPolicy",
|
|
3638
3641
|
"parameters": [
|
|
@@ -3663,7 +3666,7 @@
|
|
|
3663
3666
|
"kind": "interface",
|
|
3664
3667
|
"locationInModule": {
|
|
3665
3668
|
"filename": "src/index.ts",
|
|
3666
|
-
"line":
|
|
3669
|
+
"line": 11
|
|
3667
3670
|
},
|
|
3668
3671
|
"name": "ECRDeploymentProps",
|
|
3669
3672
|
"properties": [
|
|
@@ -3676,7 +3679,7 @@
|
|
|
3676
3679
|
"immutable": true,
|
|
3677
3680
|
"locationInModule": {
|
|
3678
3681
|
"filename": "src/index.ts",
|
|
3679
|
-
"line":
|
|
3682
|
+
"line": 31
|
|
3680
3683
|
},
|
|
3681
3684
|
"name": "dest",
|
|
3682
3685
|
"type": {
|
|
@@ -3692,7 +3695,7 @@
|
|
|
3692
3695
|
"immutable": true,
|
|
3693
3696
|
"locationInModule": {
|
|
3694
3697
|
"filename": "src/index.ts",
|
|
3695
|
-
"line":
|
|
3698
|
+
"line": 26
|
|
3696
3699
|
},
|
|
3697
3700
|
"name": "src",
|
|
3698
3701
|
"type": {
|
|
@@ -3710,7 +3713,7 @@
|
|
|
3710
3713
|
"immutable": true,
|
|
3711
3714
|
"locationInModule": {
|
|
3712
3715
|
"filename": "src/index.ts",
|
|
3713
|
-
"line":
|
|
3716
|
+
"line": 22
|
|
3714
3717
|
},
|
|
3715
3718
|
"name": "buildImage",
|
|
3716
3719
|
"optional": true,
|
|
@@ -3727,7 +3730,7 @@
|
|
|
3727
3730
|
"immutable": true,
|
|
3728
3731
|
"locationInModule": {
|
|
3729
3732
|
"filename": "src/index.ts",
|
|
3730
|
-
"line":
|
|
3733
|
+
"line": 107
|
|
3731
3734
|
},
|
|
3732
3735
|
"name": "environment",
|
|
3733
3736
|
"optional": true,
|
|
@@ -3751,7 +3754,7 @@
|
|
|
3751
3754
|
"immutable": true,
|
|
3752
3755
|
"locationInModule": {
|
|
3753
3756
|
"filename": "src/index.ts",
|
|
3754
|
-
"line":
|
|
3757
|
+
"line": 44
|
|
3755
3758
|
},
|
|
3756
3759
|
"name": "imageArch",
|
|
3757
3760
|
"optional": true,
|
|
@@ -3774,7 +3777,7 @@
|
|
|
3774
3777
|
"immutable": true,
|
|
3775
3778
|
"locationInModule": {
|
|
3776
3779
|
"filename": "src/index.ts",
|
|
3777
|
-
"line":
|
|
3780
|
+
"line": 102
|
|
3778
3781
|
},
|
|
3779
3782
|
"name": "lambdaHandler",
|
|
3780
3783
|
"optional": true,
|
|
@@ -3792,7 +3795,7 @@
|
|
|
3792
3795
|
"immutable": true,
|
|
3793
3796
|
"locationInModule": {
|
|
3794
3797
|
"filename": "src/index.ts",
|
|
3795
|
-
"line":
|
|
3798
|
+
"line": 95
|
|
3796
3799
|
},
|
|
3797
3800
|
"name": "lambdaRuntime",
|
|
3798
3801
|
"optional": true,
|
|
@@ -3811,7 +3814,7 @@
|
|
|
3811
3814
|
"immutable": true,
|
|
3812
3815
|
"locationInModule": {
|
|
3813
3816
|
"filename": "src/index.ts",
|
|
3814
|
-
"line":
|
|
3817
|
+
"line": 55
|
|
3815
3818
|
},
|
|
3816
3819
|
"name": "memoryLimit",
|
|
3817
3820
|
"optional": true,
|
|
@@ -3829,7 +3832,7 @@
|
|
|
3829
3832
|
"immutable": true,
|
|
3830
3833
|
"locationInModule": {
|
|
3831
3834
|
"filename": "src/index.ts",
|
|
3832
|
-
"line":
|
|
3835
|
+
"line": 62
|
|
3833
3836
|
},
|
|
3834
3837
|
"name": "role",
|
|
3835
3838
|
"optional": true,
|
|
@@ -3848,7 +3851,7 @@
|
|
|
3848
3851
|
"immutable": true,
|
|
3849
3852
|
"locationInModule": {
|
|
3850
3853
|
"filename": "src/index.ts",
|
|
3851
|
-
"line":
|
|
3854
|
+
"line": 88
|
|
3852
3855
|
},
|
|
3853
3856
|
"name": "securityGroups",
|
|
3854
3857
|
"optional": true,
|
|
@@ -3871,7 +3874,7 @@
|
|
|
3871
3874
|
"immutable": true,
|
|
3872
3875
|
"locationInModule": {
|
|
3873
3876
|
"filename": "src/index.ts",
|
|
3874
|
-
"line":
|
|
3877
|
+
"line": 69
|
|
3875
3878
|
},
|
|
3876
3879
|
"name": "vpc",
|
|
3877
3880
|
"optional": true,
|
|
@@ -3890,7 +3893,7 @@
|
|
|
3890
3893
|
"immutable": true,
|
|
3891
3894
|
"locationInModule": {
|
|
3892
3895
|
"filename": "src/index.ts",
|
|
3893
|
-
"line":
|
|
3896
|
+
"line": 77
|
|
3894
3897
|
},
|
|
3895
3898
|
"name": "vpcSubnets",
|
|
3896
3899
|
"optional": true,
|
|
@@ -3910,7 +3913,7 @@
|
|
|
3910
3913
|
"kind": "interface",
|
|
3911
3914
|
"locationInModule": {
|
|
3912
3915
|
"filename": "src/index.ts",
|
|
3913
|
-
"line":
|
|
3916
|
+
"line": 110
|
|
3914
3917
|
},
|
|
3915
3918
|
"name": "IImageName",
|
|
3916
3919
|
"properties": [
|
|
@@ -3924,7 +3927,7 @@
|
|
|
3924
3927
|
"immutable": true,
|
|
3925
3928
|
"locationInModule": {
|
|
3926
3929
|
"filename": "src/index.ts",
|
|
3927
|
-
"line":
|
|
3930
|
+
"line": 116
|
|
3928
3931
|
},
|
|
3929
3932
|
"name": "uri",
|
|
3930
3933
|
"type": {
|
|
@@ -3940,7 +3943,7 @@
|
|
|
3940
3943
|
},
|
|
3941
3944
|
"locationInModule": {
|
|
3942
3945
|
"filename": "src/index.ts",
|
|
3943
|
-
"line":
|
|
3946
|
+
"line": 126
|
|
3944
3947
|
},
|
|
3945
3948
|
"name": "creds",
|
|
3946
3949
|
"optional": true,
|
|
@@ -3963,16 +3966,22 @@
|
|
|
3963
3966
|
},
|
|
3964
3967
|
"locationInModule": {
|
|
3965
3968
|
"filename": "src/index.ts",
|
|
3966
|
-
"line":
|
|
3969
|
+
"line": 169
|
|
3967
3970
|
},
|
|
3968
3971
|
"parameters": [
|
|
3969
3972
|
{
|
|
3973
|
+
"docs": {
|
|
3974
|
+
"summary": "- the S3 bucket name and path of the archive (a S3 URI without the s3://)."
|
|
3975
|
+
},
|
|
3970
3976
|
"name": "p",
|
|
3971
3977
|
"type": {
|
|
3972
3978
|
"primitive": "string"
|
|
3973
3979
|
}
|
|
3974
3980
|
},
|
|
3975
3981
|
{
|
|
3982
|
+
"docs": {
|
|
3983
|
+
"summary": "- appended to the end of the name with a `:`, e.g. `:latest`."
|
|
3984
|
+
},
|
|
3976
3985
|
"name": "ref",
|
|
3977
3986
|
"optional": true,
|
|
3978
3987
|
"type": {
|
|
@@ -3981,8 +3990,8 @@
|
|
|
3981
3990
|
},
|
|
3982
3991
|
{
|
|
3983
3992
|
"docs": {
|
|
3984
|
-
"remarks": "Format `user:password` or `AWS Secrets Manager secret arn` or `AWS Secrets Manager secret name`.\
|
|
3985
|
-
"summary": "The credentials of the docker image."
|
|
3993
|
+
"remarks": "Format `user:password` or `AWS Secrets Manager secret arn` or `AWS Secrets Manager secret name`.\nIf specifying an AWS Secrets Manager secret, the format of the secret should be either plain text (`user:password`) or\nJSON (`{\"username\":\"<username>\",\"password\":\"<password>\"}`).\nFor more details on JSON format, see https://docs.aws.amazon.com/AmazonECS/latest/developerguide/private-auth.html",
|
|
3994
|
+
"summary": "- The credentials of the docker image."
|
|
3986
3995
|
},
|
|
3987
3996
|
"name": "creds",
|
|
3988
3997
|
"optional": true,
|
|
@@ -3998,7 +4007,7 @@
|
|
|
3998
4007
|
"kind": "class",
|
|
3999
4008
|
"locationInModule": {
|
|
4000
4009
|
"filename": "src/index.ts",
|
|
4001
|
-
"line":
|
|
4010
|
+
"line": 158
|
|
4002
4011
|
},
|
|
4003
4012
|
"name": "S3ArchiveName",
|
|
4004
4013
|
"properties": [
|
|
@@ -4011,7 +4020,7 @@
|
|
|
4011
4020
|
"immutable": true,
|
|
4012
4021
|
"locationInModule": {
|
|
4013
4022
|
"filename": "src/index.ts",
|
|
4014
|
-
"line":
|
|
4023
|
+
"line": 175
|
|
4015
4024
|
},
|
|
4016
4025
|
"name": "uri",
|
|
4017
4026
|
"overrides": "cdk-ecr-deployment.IImageName",
|
|
@@ -4021,13 +4030,13 @@
|
|
|
4021
4030
|
},
|
|
4022
4031
|
{
|
|
4023
4032
|
"docs": {
|
|
4024
|
-
"remarks": "Format `user:password` or `AWS Secrets Manager secret arn` or `AWS Secrets Manager secret name`.\
|
|
4033
|
+
"remarks": "Format `user:password` or `AWS Secrets Manager secret arn` or `AWS Secrets Manager secret name`.\nIf specifying an AWS Secrets Manager secret, the format of the secret should be either plain text (`user:password`) or\nJSON (`{\"username\":\"<username>\",\"password\":\"<password>\"}`).\nFor more details on JSON format, see https://docs.aws.amazon.com/AmazonECS/latest/developerguide/private-auth.html",
|
|
4025
4034
|
"stability": "stable",
|
|
4026
|
-
"summary": "The credentials of the docker image."
|
|
4035
|
+
"summary": "- The credentials of the docker image."
|
|
4027
4036
|
},
|
|
4028
4037
|
"locationInModule": {
|
|
4029
4038
|
"filename": "src/index.ts",
|
|
4030
|
-
"line":
|
|
4039
|
+
"line": 169
|
|
4031
4040
|
},
|
|
4032
4041
|
"name": "creds",
|
|
4033
4042
|
"optional": true,
|
|
@@ -4040,6 +4049,6 @@
|
|
|
4040
4049
|
"symbolId": "src/index:S3ArchiveName"
|
|
4041
4050
|
}
|
|
4042
4051
|
},
|
|
4043
|
-
"version": "3.
|
|
4044
|
-
"fingerprint": "
|
|
4052
|
+
"version": "3.3.0",
|
|
4053
|
+
"fingerprint": "XzAPB9yugJfIoHB8jl1sQ52xAQaBBjCs+msSSUDDIjY="
|
|
4045
4054
|
}
|
package/API.md
CHANGED
|
@@ -331,8 +331,8 @@ new DockerImageName(name: string, creds?: string)
|
|
|
331
331
|
|
|
332
332
|
| **Name** | **Type** | **Description** |
|
|
333
333
|
| --- | --- | --- |
|
|
334
|
-
| <code><a href="#cdk-ecr-deployment.DockerImageName.Initializer.parameter.name">name</a></code> | <code>string</code> |
|
|
335
|
-
| <code><a href="#cdk-ecr-deployment.DockerImageName.Initializer.parameter.creds">creds</a></code> | <code>string</code> | The credentials of the docker image. |
|
|
334
|
+
| <code><a href="#cdk-ecr-deployment.DockerImageName.Initializer.parameter.name">name</a></code> | <code>string</code> | - The name of the image, e.g. retrieved from `DockerImageAsset.imageUri`. |
|
|
335
|
+
| <code><a href="#cdk-ecr-deployment.DockerImageName.Initializer.parameter.creds">creds</a></code> | <code>string</code> | - The credentials of the docker image. |
|
|
336
336
|
|
|
337
337
|
---
|
|
338
338
|
|
|
@@ -340,6 +340,8 @@ new DockerImageName(name: string, creds?: string)
|
|
|
340
340
|
|
|
341
341
|
- *Type:* string
|
|
342
342
|
|
|
343
|
+
The name of the image, e.g. retrieved from `DockerImageAsset.imageUri`.
|
|
344
|
+
|
|
343
345
|
---
|
|
344
346
|
|
|
345
347
|
##### `creds`<sup>Optional</sup> <a name="creds" id="cdk-ecr-deployment.DockerImageName.Initializer.parameter.creds"></a>
|
|
@@ -349,10 +351,8 @@ new DockerImageName(name: string, creds?: string)
|
|
|
349
351
|
The credentials of the docker image.
|
|
350
352
|
|
|
351
353
|
Format `user:password` or `AWS Secrets Manager secret arn` or `AWS Secrets Manager secret name`.
|
|
352
|
-
|
|
353
354
|
If specifying an AWS Secrets Manager secret, the format of the secret should be either plain text (`user:password`) or
|
|
354
355
|
JSON (`{"username":"<username>","password":"<password>"}`).
|
|
355
|
-
|
|
356
356
|
For more details on JSON format, see https://docs.aws.amazon.com/AmazonECS/latest/developerguide/private-auth.html
|
|
357
357
|
|
|
358
358
|
---
|
|
@@ -364,7 +364,7 @@ For more details on JSON format, see https://docs.aws.amazon.com/AmazonECS/lates
|
|
|
364
364
|
| **Name** | **Type** | **Description** |
|
|
365
365
|
| --- | --- | --- |
|
|
366
366
|
| <code><a href="#cdk-ecr-deployment.DockerImageName.property.uri">uri</a></code> | <code>string</code> | The uri of the docker image. |
|
|
367
|
-
| <code><a href="#cdk-ecr-deployment.DockerImageName.property.creds">creds</a></code> | <code>string</code> | The credentials of the docker image. |
|
|
367
|
+
| <code><a href="#cdk-ecr-deployment.DockerImageName.property.creds">creds</a></code> | <code>string</code> | - The credentials of the docker image. |
|
|
368
368
|
|
|
369
369
|
---
|
|
370
370
|
|
|
@@ -393,10 +393,8 @@ public readonly creds: string;
|
|
|
393
393
|
The credentials of the docker image.
|
|
394
394
|
|
|
395
395
|
Format `user:password` or `AWS Secrets Manager secret arn` or `AWS Secrets Manager secret name`.
|
|
396
|
-
|
|
397
396
|
If specifying an AWS Secrets Manager secret, the format of the secret should be either plain text (`user:password`) or
|
|
398
397
|
JSON (`{"username":"<username>","password":"<password>"}`).
|
|
399
|
-
|
|
400
398
|
For more details on JSON format, see https://docs.aws.amazon.com/AmazonECS/latest/developerguide/private-auth.html
|
|
401
399
|
|
|
402
400
|
---
|
|
@@ -416,9 +414,9 @@ new S3ArchiveName(p: string, ref?: string, creds?: string)
|
|
|
416
414
|
|
|
417
415
|
| **Name** | **Type** | **Description** |
|
|
418
416
|
| --- | --- | --- |
|
|
419
|
-
| <code><a href="#cdk-ecr-deployment.S3ArchiveName.Initializer.parameter.p">p</a></code> | <code>string</code> |
|
|
420
|
-
| <code><a href="#cdk-ecr-deployment.S3ArchiveName.Initializer.parameter.ref">ref</a></code> | <code>string</code> |
|
|
421
|
-
| <code><a href="#cdk-ecr-deployment.S3ArchiveName.Initializer.parameter.creds">creds</a></code> | <code>string</code> | The credentials of the docker image. |
|
|
417
|
+
| <code><a href="#cdk-ecr-deployment.S3ArchiveName.Initializer.parameter.p">p</a></code> | <code>string</code> | - the S3 bucket name and path of the archive (a S3 URI without the s3://). |
|
|
418
|
+
| <code><a href="#cdk-ecr-deployment.S3ArchiveName.Initializer.parameter.ref">ref</a></code> | <code>string</code> | - appended to the end of the name with a `:`, e.g. `:latest`. |
|
|
419
|
+
| <code><a href="#cdk-ecr-deployment.S3ArchiveName.Initializer.parameter.creds">creds</a></code> | <code>string</code> | - The credentials of the docker image. |
|
|
422
420
|
|
|
423
421
|
---
|
|
424
422
|
|
|
@@ -426,12 +424,16 @@ new S3ArchiveName(p: string, ref?: string, creds?: string)
|
|
|
426
424
|
|
|
427
425
|
- *Type:* string
|
|
428
426
|
|
|
427
|
+
the S3 bucket name and path of the archive (a S3 URI without the s3://).
|
|
428
|
+
|
|
429
429
|
---
|
|
430
430
|
|
|
431
431
|
##### `ref`<sup>Optional</sup> <a name="ref" id="cdk-ecr-deployment.S3ArchiveName.Initializer.parameter.ref"></a>
|
|
432
432
|
|
|
433
433
|
- *Type:* string
|
|
434
434
|
|
|
435
|
+
appended to the end of the name with a `:`, e.g. `:latest`.
|
|
436
|
+
|
|
435
437
|
---
|
|
436
438
|
|
|
437
439
|
##### `creds`<sup>Optional</sup> <a name="creds" id="cdk-ecr-deployment.S3ArchiveName.Initializer.parameter.creds"></a>
|
|
@@ -441,10 +443,8 @@ new S3ArchiveName(p: string, ref?: string, creds?: string)
|
|
|
441
443
|
The credentials of the docker image.
|
|
442
444
|
|
|
443
445
|
Format `user:password` or `AWS Secrets Manager secret arn` or `AWS Secrets Manager secret name`.
|
|
444
|
-
|
|
445
446
|
If specifying an AWS Secrets Manager secret, the format of the secret should be either plain text (`user:password`) or
|
|
446
447
|
JSON (`{"username":"<username>","password":"<password>"}`).
|
|
447
|
-
|
|
448
448
|
For more details on JSON format, see https://docs.aws.amazon.com/AmazonECS/latest/developerguide/private-auth.html
|
|
449
449
|
|
|
450
450
|
---
|
|
@@ -456,7 +456,7 @@ For more details on JSON format, see https://docs.aws.amazon.com/AmazonECS/lates
|
|
|
456
456
|
| **Name** | **Type** | **Description** |
|
|
457
457
|
| --- | --- | --- |
|
|
458
458
|
| <code><a href="#cdk-ecr-deployment.S3ArchiveName.property.uri">uri</a></code> | <code>string</code> | The uri of the docker image. |
|
|
459
|
-
| <code><a href="#cdk-ecr-deployment.S3ArchiveName.property.creds">creds</a></code> | <code>string</code> | The credentials of the docker image. |
|
|
459
|
+
| <code><a href="#cdk-ecr-deployment.S3ArchiveName.property.creds">creds</a></code> | <code>string</code> | - The credentials of the docker image. |
|
|
460
460
|
|
|
461
461
|
---
|
|
462
462
|
|
|
@@ -485,10 +485,8 @@ public readonly creds: string;
|
|
|
485
485
|
The credentials of the docker image.
|
|
486
486
|
|
|
487
487
|
Format `user:password` or `AWS Secrets Manager secret arn` or `AWS Secrets Manager secret name`.
|
|
488
|
-
|
|
489
488
|
If specifying an AWS Secrets Manager secret, the format of the secret should be either plain text (`user:password`) or
|
|
490
489
|
JSON (`{"username":"<username>","password":"<password>"}`).
|
|
491
|
-
|
|
492
490
|
For more details on JSON format, see https://docs.aws.amazon.com/AmazonECS/latest/developerguide/private-auth.html
|
|
493
491
|
|
|
494
492
|
---
|
package/README.md
CHANGED
|
@@ -70,11 +70,43 @@ new ecrdeploy.ECRDeployment(this, 'DeployDockerImage3', {
|
|
|
70
70
|
|
|
71
71
|
## Sample: [test/example.ecr-deployment.ts](./test/example.ecr-deployment.ts)
|
|
72
72
|
|
|
73
|
+
After cloning the repository, install dependencies and run a full build:
|
|
74
|
+
|
|
75
|
+
```console
|
|
76
|
+
yarn --frozen-lockfile --check-files
|
|
77
|
+
yarn build
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Then run the example like this:
|
|
81
|
+
|
|
73
82
|
```shell
|
|
74
83
|
# Run the following command to try the sample.
|
|
75
84
|
NO_PREBUILT_LAMBDA=1 npx cdk deploy -a "npx ts-node -P tsconfig.dev.json --prefer-ts-exts test/example.ecr-deployment.ts"
|
|
76
85
|
```
|
|
77
86
|
|
|
87
|
+
To run the DockerHub example you will first need to setup a Secret in AWS Secrets Manager to provide DockerHub credentials.
|
|
88
|
+
Replace `username:access-token` with your credentials.
|
|
89
|
+
**Please note that Secrets will occur a cost.**
|
|
90
|
+
|
|
91
|
+
```console
|
|
92
|
+
aws secretsmanager create-secret --name DockerHubCredentials --secret-string "username:access-token"
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
From the output, copy the ARN of your new secret and export it as env variable
|
|
96
|
+
|
|
97
|
+
```console
|
|
98
|
+
export DOCKERHUB_SECRET_ARN="<ARN>"
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
Finally run:
|
|
102
|
+
|
|
103
|
+
```shell
|
|
104
|
+
# Run the following command to try the sample.
|
|
105
|
+
npx cdk deploy -a "npx ts-node -P tsconfig.dev.json --prefer-ts-exts test/dockerhub-example.ecr-deployment.ts"
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
If your Secret is encrypted, you might have to adjust the example to also grant decrypt permissions.
|
|
109
|
+
|
|
78
110
|
## [API](./API.md)
|
|
79
111
|
|
|
80
112
|
## Tech Details & Contribution
|
|
@@ -84,4 +116,4 @@ Please take a look at those projects before contribution.
|
|
|
84
116
|
|
|
85
117
|
To support a new docker image source(like docker tarball in s3), you need to implement [image transport interface](https://github.com/containers/image/blob/master/types/types.go). You could take a look at [docker-archive](https://github.com/containers/image/blob/ccb87a8d0f45cf28846e307eb0ec2b9d38a458c2/docker/archive/transport.go) transport for a good start.
|
|
86
118
|
|
|
87
|
-
|
|
119
|
+
Any error in the custom resource provider will show up in the CloudFormation error log as `Invalid PhysicalResourceId`, because of this: <https://github.com/aws/aws-lambda-go/issues/107>. You need to go into the CloudWatch Log Group to find the real error.
|
package/build-lambda.sh
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
set -eu
|
|
3
|
+
|
|
4
|
+
GOPROXY=${GOPROXY:-https://goproxy.io|https://goproxy.cn|direct}
|
|
5
|
+
|
|
6
|
+
# The build works as follows:
|
|
7
|
+
#
|
|
8
|
+
# Build the given Dockerfile to produce a file in a predefined location.
|
|
9
|
+
# We then start that container to run a single command to copy that file out, according to
|
|
10
|
+
# the CDK Asset Bundling protocol.
|
|
11
|
+
${CDK_DOCKER:-docker} build -t cdk-ecr-deployment-lambda --build-arg GOPROXY="${GOPROXY}" lambda-src
|
|
12
|
+
${CDK_DOCKER:-docker} run --rm -v $PWD/lambda-bin:/out cdk-ecr-deployment-lambda cp /asset/bootstrap /out
|
|
File without changes
|
|
Binary file
|
|
@@ -21,7 +21,7 @@ endif
|
|
|
21
21
|
BUILDTAGS := exclude_graphdriver_devicemapper exclude_graphdriver_btrfs containers_image_openpgp lambda.norpc
|
|
22
22
|
OUTPUT ?= cdk-ecr-deployment-handler
|
|
23
23
|
|
|
24
|
-
all: test
|
|
24
|
+
all: lambda test
|
|
25
25
|
|
|
26
26
|
upgrade-deps:
|
|
27
27
|
CGO_ENABLED=0 $(GPGME_ENV) $(GO) get -u -tags "$(BUILDTAGS)"
|
|
@@ -58,7 +58,7 @@ require (
|
|
|
58
58
|
github.com/docker/go-connections v0.5.0 // indirect
|
|
59
59
|
github.com/docker/go-units v0.5.0 // indirect
|
|
60
60
|
github.com/felixge/httpsnoop v1.0.4 // indirect
|
|
61
|
-
github.com/go-jose/go-jose/v4 v4.0.
|
|
61
|
+
github.com/go-jose/go-jose/v4 v4.0.5 // indirect
|
|
62
62
|
github.com/go-logr/logr v1.4.2 // indirect
|
|
63
63
|
github.com/go-logr/stdr v1.2.2 // indirect
|
|
64
64
|
github.com/go-openapi/analysis v0.23.0 // indirect
|
|
@@ -119,8 +119,8 @@ github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1m
|
|
|
119
119
|
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
|
|
120
120
|
github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
|
|
121
121
|
github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
|
|
122
|
-
github.com/go-jose/go-jose/v4 v4.0.
|
|
123
|
-
github.com/go-jose/go-jose/v4 v4.0.
|
|
122
|
+
github.com/go-jose/go-jose/v4 v4.0.5 h1:M6T8+mKZl/+fNNuFHvGIzDz7BTLQPIounk/b9dw3AaE=
|
|
123
|
+
github.com/go-jose/go-jose/v4 v4.0.5/go.mod h1:s3P1lRrkT8igV8D9OjyL4WRyHvjB6a4JSllnOrmmBOA=
|
|
124
124
|
github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
|
|
125
125
|
github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
|
|
126
126
|
github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
|
package/lib/config.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.shouldUsePrebuiltLambda =
|
|
3
|
+
exports.shouldUsePrebuiltLambda = shouldUsePrebuiltLambda;
|
|
4
4
|
const TRUTHY = ['true', true, 1, '1'];
|
|
5
5
|
function shouldUsePrebuiltLambda() {
|
|
6
6
|
const { CI, NO_PREBUILT_LAMBDA, FORCE_PREBUILT_LAMBDA } = process.env;
|
|
@@ -9,5 +9,4 @@ function shouldUsePrebuiltLambda() {
|
|
|
9
9
|
const isForcePrebuilt = FORCE_PREBUILT_LAMBDA && TRUTHY.includes(FORCE_PREBUILT_LAMBDA);
|
|
10
10
|
return isForcePrebuilt || (!(isCI || isNoPrebuilt));
|
|
11
11
|
}
|
|
12
|
-
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxNQUFNLE1BQU0sR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBRXRDLFNBQWdCLHVCQUF1QjtJQUNyQyxNQUFNLEVBQUUsRUFBRSxFQUFFLGtCQUFrQixFQUFFLHFCQUFxQixFQUFFLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQztJQUN0RSxNQUFNLElBQUksR0FBRyxFQUFFLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN2QyxNQUFNLFlBQVksR0FBRyxrQkFBa0IsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDL0UsTUFBTSxlQUFlLEdBQUcscUJBQXFCLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBRXhGLE9BQU8sZUFBZSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDO0FBQ3RELENBQUM7QUFQRCwwREFPQyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IFRSVVRIWSA9IFsndHJ1ZScsIHRydWUsIDEsICcxJ107XG5cbmV4cG9ydCBmdW5jdGlvbiBzaG91bGRVc2VQcmVidWlsdExhbWJkYSgpOiBib29sZWFuIHtcbiAgY29uc3QgeyBDSSwgTk9fUFJFQlVJTFRfTEFNQkRBLCBGT1JDRV9QUkVCVUlMVF9MQU1CREEgfSA9IHByb2Nlc3MuZW52O1xuICBjb25zdCBpc0NJID0gQ0kgJiYgVFJVVEhZLmluY2x1ZGVzKENJKTtcbiAgY29uc3QgaXNOb1ByZWJ1aWx0ID0gTk9fUFJFQlVJTFRfTEFNQkRBICYmIFRSVVRIWS5pbmNsdWRlcyhOT19QUkVCVUlMVF9MQU1CREEpO1xuICBjb25zdCBpc0ZvcmNlUHJlYnVpbHQgPSBGT1JDRV9QUkVCVUlMVF9MQU1CREEgJiYgVFJVVEhZLmluY2x1ZGVzKEZPUkNFX1BSRUJVSUxUX0xBTUJEQSk7XG5cbiAgcmV0dXJuIGlzRm9yY2VQcmVidWlsdCB8fCAoIShpc0NJIHx8IGlzTm9QcmVidWlsdCkpO1xufSJdfQ==
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUVBLDBEQU9DO0FBVEQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUV0QyxTQUFnQix1QkFBdUI7SUFDckMsTUFBTSxFQUFFLEVBQUUsRUFBRSxrQkFBa0IsRUFBRSxxQkFBcUIsRUFBRSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUM7SUFDdEUsTUFBTSxJQUFJLEdBQUcsRUFBRSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDdkMsTUFBTSxZQUFZLEdBQUcsa0JBQWtCLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQy9FLE1BQU0sZUFBZSxHQUFHLHFCQUFxQixJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUV4RixPQUFPLGVBQWUsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksWUFBWSxDQUFDLENBQUMsQ0FBQztBQUN0RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgVFJVVEhZID0gWyd0cnVlJywgdHJ1ZSwgMSwgJzEnXTtcblxuZXhwb3J0IGZ1bmN0aW9uIHNob3VsZFVzZVByZWJ1aWx0TGFtYmRhKCk6IGJvb2xlYW4ge1xuICBjb25zdCB7IENJLCBOT19QUkVCVUlMVF9MQU1CREEsIEZPUkNFX1BSRUJVSUxUX0xBTUJEQSB9ID0gcHJvY2Vzcy5lbnY7XG4gIGNvbnN0IGlzQ0kgPSBDSSAmJiBUUlVUSFkuaW5jbHVkZXMoQ0kpO1xuICBjb25zdCBpc05vUHJlYnVpbHQgPSBOT19QUkVCVUlMVF9MQU1CREEgJiYgVFJVVEhZLmluY2x1ZGVzKE5PX1BSRUJVSUxUX0xBTUJEQSk7XG4gIGNvbnN0IGlzRm9yY2VQcmVidWlsdCA9IEZPUkNFX1BSRUJVSUxUX0xBTUJEQSAmJiBUUlVUSFkuaW5jbHVkZXMoRk9SQ0VfUFJFQlVJTFRfTEFNQkRBKTtcblxuICByZXR1cm4gaXNGb3JjZVByZWJ1aWx0IHx8ICghKGlzQ0kgfHwgaXNOb1ByZWJ1aWx0KSk7XG59Il19
|
package/lib/index.d.ts
CHANGED
|
@@ -110,12 +110,27 @@ export interface IImageName {
|
|
|
110
110
|
export declare class DockerImageName implements IImageName {
|
|
111
111
|
private name;
|
|
112
112
|
creds?: string | undefined;
|
|
113
|
+
/**
|
|
114
|
+
* @param name - The name of the image, e.g. retrieved from `DockerImageAsset.imageUri`
|
|
115
|
+
* @param creds - The credentials of the docker image. Format `user:password` or `AWS Secrets Manager secret arn` or `AWS Secrets Manager secret name`.
|
|
116
|
+
* If specifying an AWS Secrets Manager secret, the format of the secret should be either plain text (`user:password`) or
|
|
117
|
+
* JSON (`{"username":"<username>","password":"<password>"}`).
|
|
118
|
+
* For more details on JSON format, see https://docs.aws.amazon.com/AmazonECS/latest/developerguide/private-auth.html
|
|
119
|
+
*/
|
|
113
120
|
constructor(name: string, creds?: string | undefined);
|
|
114
121
|
get uri(): string;
|
|
115
122
|
}
|
|
116
123
|
export declare class S3ArchiveName implements IImageName {
|
|
117
124
|
creds?: string | undefined;
|
|
118
125
|
private name;
|
|
126
|
+
/**
|
|
127
|
+
* @param p - the S3 bucket name and path of the archive (a S3 URI without the s3://)
|
|
128
|
+
* @param ref - appended to the end of the name with a `:`, e.g. `:latest`
|
|
129
|
+
* @param creds - The credentials of the docker image. Format `user:password` or `AWS Secrets Manager secret arn` or `AWS Secrets Manager secret name`.
|
|
130
|
+
* If specifying an AWS Secrets Manager secret, the format of the secret should be either plain text (`user:password`) or
|
|
131
|
+
* JSON (`{"username":"<username>","password":"<password>"}`).
|
|
132
|
+
* For more details on JSON format, see https://docs.aws.amazon.com/AmazonECS/latest/developerguide/private-auth.html
|
|
133
|
+
*/
|
|
119
134
|
constructor(p: string, ref?: string, creds?: string | undefined);
|
|
120
135
|
get uri(): string;
|
|
121
136
|
}
|
package/lib/index.js
CHANGED
|
@@ -5,7 +5,6 @@ exports.ECRDeployment = exports.S3ArchiveName = exports.DockerImageName = void 0
|
|
|
5
5
|
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
6
|
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
7
7
|
// SPDX-License-Identifier: Apache-2.0
|
|
8
|
-
const child_process = require("child_process");
|
|
9
8
|
const path = require("path");
|
|
10
9
|
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
11
10
|
const aws_lambda_1 = require("aws-cdk-lib/aws-lambda");
|
|
@@ -14,22 +13,27 @@ const config_1 = require("./config");
|
|
|
14
13
|
function getCode(buildImage) {
|
|
15
14
|
if ((0, config_1.shouldUsePrebuiltLambda)()) {
|
|
16
15
|
try {
|
|
17
|
-
const
|
|
18
|
-
const prebuiltPath = path.join(__dirname, '../lambda/out');
|
|
19
|
-
child_process.execFileSync(process.argv0, [installScript, prebuiltPath]);
|
|
16
|
+
const prebuiltPath = path.join(__dirname, '../lambda-bin');
|
|
20
17
|
return aws_cdk_lib_1.aws_lambda.Code.fromAsset(prebuiltPath);
|
|
21
18
|
}
|
|
22
19
|
catch (err) {
|
|
23
20
|
console.warn(`Can not get prebuilt lambda: ${err}`);
|
|
24
21
|
}
|
|
25
22
|
}
|
|
26
|
-
return aws_cdk_lib_1.aws_lambda.Code.fromDockerBuild(path.join(__dirname, '../lambda'), {
|
|
23
|
+
return aws_cdk_lib_1.aws_lambda.Code.fromDockerBuild(path.join(__dirname, '../lambda-src'), {
|
|
27
24
|
buildArgs: {
|
|
28
25
|
buildImage,
|
|
29
26
|
},
|
|
30
27
|
});
|
|
31
28
|
}
|
|
32
29
|
class DockerImageName {
|
|
30
|
+
/**
|
|
31
|
+
* @param name - The name of the image, e.g. retrieved from `DockerImageAsset.imageUri`
|
|
32
|
+
* @param creds - The credentials of the docker image. Format `user:password` or `AWS Secrets Manager secret arn` or `AWS Secrets Manager secret name`.
|
|
33
|
+
* If specifying an AWS Secrets Manager secret, the format of the secret should be either plain text (`user:password`) or
|
|
34
|
+
* JSON (`{"username":"<username>","password":"<password>"}`).
|
|
35
|
+
* For more details on JSON format, see https://docs.aws.amazon.com/AmazonECS/latest/developerguide/private-auth.html
|
|
36
|
+
*/
|
|
33
37
|
constructor(name, creds) {
|
|
34
38
|
this.name = name;
|
|
35
39
|
this.creds = creds;
|
|
@@ -38,8 +42,16 @@ class DockerImageName {
|
|
|
38
42
|
}
|
|
39
43
|
exports.DockerImageName = DockerImageName;
|
|
40
44
|
_a = JSII_RTTI_SYMBOL_1;
|
|
41
|
-
DockerImageName[_a] = { fqn: "cdk-ecr-deployment.DockerImageName", version: "3.
|
|
45
|
+
DockerImageName[_a] = { fqn: "cdk-ecr-deployment.DockerImageName", version: "3.3.0" };
|
|
42
46
|
class S3ArchiveName {
|
|
47
|
+
/**
|
|
48
|
+
* @param p - the S3 bucket name and path of the archive (a S3 URI without the s3://)
|
|
49
|
+
* @param ref - appended to the end of the name with a `:`, e.g. `:latest`
|
|
50
|
+
* @param creds - The credentials of the docker image. Format `user:password` or `AWS Secrets Manager secret arn` or `AWS Secrets Manager secret name`.
|
|
51
|
+
* If specifying an AWS Secrets Manager secret, the format of the secret should be either plain text (`user:password`) or
|
|
52
|
+
* JSON (`{"username":"<username>","password":"<password>"}`).
|
|
53
|
+
* For more details on JSON format, see https://docs.aws.amazon.com/AmazonECS/latest/developerguide/private-auth.html
|
|
54
|
+
*/
|
|
43
55
|
constructor(p, ref, creds) {
|
|
44
56
|
this.creds = creds;
|
|
45
57
|
this.name = p;
|
|
@@ -51,7 +63,7 @@ class S3ArchiveName {
|
|
|
51
63
|
}
|
|
52
64
|
exports.S3ArchiveName = S3ArchiveName;
|
|
53
65
|
_b = JSII_RTTI_SYMBOL_1;
|
|
54
|
-
S3ArchiveName[_b] = { fqn: "cdk-ecr-deployment.S3ArchiveName", version: "3.
|
|
66
|
+
S3ArchiveName[_b] = { fqn: "cdk-ecr-deployment.S3ArchiveName", version: "3.3.0" };
|
|
55
67
|
class ECRDeployment extends constructs_1.Construct {
|
|
56
68
|
constructor(scope, id, props) {
|
|
57
69
|
super(scope, id);
|
|
@@ -59,7 +71,7 @@ class ECRDeployment extends constructs_1.Construct {
|
|
|
59
71
|
this.handler = new aws_cdk_lib_1.aws_lambda.SingletonFunction(this, 'CustomResourceHandler', {
|
|
60
72
|
uuid: this.renderSingletonUuid(memoryLimit),
|
|
61
73
|
code: getCode(props.buildImage ?? 'public.ecr.aws/docker/library/golang:1'),
|
|
62
|
-
runtime: props.lambdaRuntime ?? new aws_cdk_lib_1.aws_lambda.Runtime('provided.al2023', aws_lambda_1.RuntimeFamily.OTHER),
|
|
74
|
+
runtime: props.lambdaRuntime ?? new aws_cdk_lib_1.aws_lambda.Runtime('provided.al2023', aws_lambda_1.RuntimeFamily.OTHER), // not using Runtime.PROVIDED_AL2023 to support older CDK versions (< 2.105.0)
|
|
63
75
|
handler: props.lambdaHandler ?? 'bootstrap',
|
|
64
76
|
environment: props.environment,
|
|
65
77
|
lambdaPurpose: 'Custom::CDKECRDeployment',
|
|
@@ -141,5 +153,5 @@ class ECRDeployment extends constructs_1.Construct {
|
|
|
141
153
|
}
|
|
142
154
|
exports.ECRDeployment = ECRDeployment;
|
|
143
155
|
_c = JSII_RTTI_SYMBOL_1;
|
|
144
|
-
ECRDeployment[_c] = { fqn: "cdk-ecr-deployment.ECRDeployment", version: "3.
|
|
145
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxxRUFBcUU7QUFDckUsc0NBQXNDO0FBR3RDLCtDQUErQztBQUMvQyw2QkFBNkI7QUFDN0IsNkNBQW9IO0FBRXBILHVEQUF1RDtBQUN2RCwyQ0FBdUM7QUFDdkMscUNBQW1EO0FBd0huRCxTQUFTLE9BQU8sQ0FBQyxVQUFrQjtJQUNqQyxJQUFJLElBQUEsZ0NBQXVCLEdBQUUsRUFBRTtRQUM3QixJQUFJO1lBQ0YsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztZQUNuRSxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxlQUFlLENBQUMsQ0FBQztZQUMzRCxhQUFhLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxhQUFhLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQztZQUV6RSxPQUFPLHdCQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUM1QztRQUFDLE9BQU8sR0FBRyxFQUFFO1lBQ1osT0FBTyxDQUFDLElBQUksQ0FBQyxnQ0FBZ0MsR0FBRyxFQUFFLENBQUMsQ0FBQztTQUNyRDtLQUNGO0lBRUQsT0FBTyx3QkFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLEVBQUU7UUFDcEUsU0FBUyxFQUFFO1lBQ1QsVUFBVTtTQUNYO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQWEsZUFBZTtJQUMxQixZQUEyQixJQUFZLEVBQVMsS0FBYztRQUFuQyxTQUFJLEdBQUosSUFBSSxDQUFRO1FBQVMsVUFBSyxHQUFMLEtBQUssQ0FBUztJQUFJLENBQUM7SUFDbkUsSUFBVyxHQUFH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MkVBQTJFO1FBQzNFLDRDQUE0QztRQUM1QyxJQUFJLFdBQVcsRUFBRTtZQUNmLElBQUksbUJBQUssQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLEVBQUU7Z0JBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsbUhBQW1ILENBQUMsQ0FBQzthQUN0STtZQUVELElBQUksSUFBSSxJQUFJLFdBQVcsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDO1NBQ3pDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOztBQTlGSCxzQ0ErRkMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cblxuaW1wb3J0ICogYXMgY2hpbGRfcHJvY2VzcyBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBhd3NfZWMyIGFzIGVjMiwgYXdzX2lhbSBhcyBpYW0sIGF3c19sYW1iZGEgYXMgbGFtYmRhLCBEdXJhdGlvbiwgQ3VzdG9tUmVzb3VyY2UsIFRva2VuIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgUG9saWN5U3RhdGVtZW50LCBBZGRUb1ByaW5jaXBhbFBvbGljeVJlc3VsdCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHsgUnVudGltZUZhbWlseSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBzaG91bGRVc2VQcmVidWlsdExhbWJkYSB9IGZyb20gJy4vY29uZmlnJztcblxuZXhwb3J0IGludGVyZmFjZSBFQ1JEZXBsb3ltZW50UHJvcHMge1xuXG4gIC8qKlxuICAgKiBJbWFnZSB0byB1c2UgdG8gYnVpbGQgR29sYW5nIGxhbWJkYSBmb3IgY3VzdG9tIHJlc291cmNlLCBpZiBkb3dubG9hZCBmYWlscyBvciBpcyBub3Qgd2FudGVkLlxuICAgKlxuICAgKiBNaWdodCBiZSBuZWVkZWQgZm9yIGxvY2FsIGJ1aWxkIGlmIGFsbCBpbWFnZXMgbmVlZCB0byBjb21lIGZyb20gb3duIHJlZ2lzdHJ5LlxuICAgKlxuICAgKiBOb3RlIHRoYXQgaW1hZ2Ugc2hvdWxkIHVzZSB5dW0gYXMgYSBwYWNrYWdlIG1hbmFnZXIgYW5kIGhhdmUgZ29sYW5nIGF2YWlsYWJsZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBwdWJsaWMuZWNyLmF3cy9zYW0vYnVpbGQtZ28xLng6bGF0ZXN0XG4gICAqL1xuICByZWFkb25seSBidWlsZEltYWdlPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHNvdXJjZSBvZiB0aGUgZG9ja2VyIGltYWdlLlxuICAgKi9cbiAgcmVhZG9ubHkgc3JjOiBJSW1hZ2VOYW1lO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVzdGluYXRpb24gb2YgdGhlIGRvY2tlciBpbWFnZS5cbiAgICovXG4gIHJlYWRvbmx5IGRlc3Q6IElJbWFnZU5hbWU7XG5cbiAgLyoqXG4gICAqIFRoZSBpbWFnZSBhcmNoaXRlY3R1cmUgdG8gYmUgY29waWVkLlxuICAgKlxuICAgKiBUaGUgJ2FtZDY0JyBhcmNoaXRlY3R1cmUgd2lsbCBiZSBjb3BpZWQgYnkgZGVmYXVsdC4gU3BlY2lmeSB0aGVcbiAgICogYXJjaGl0ZWN0dXJlIG9yIGFyY2hpdGVjdHVyZXMgdG8gY29weSBoZXJlLlxuICAgKlxuICAgKiBJdCBpcyBjdXJyZW50bHkgbm90IHBvc3NpYmxlIHRvIGNvcHkgbW9yZSB0aGFuIG9uZSBhcmNoaXRlY3R1cmVcbiAgICogYXQgYSB0aW1lOiB0aGUgYXJyYXkgeW91IHNwZWNpZnkgbXVzdCBjb250YWluIGV4YWN0bHkgb25lIHN0cmluZy5cbiAgICpcbiAgICogQGRlZmF1bHQgWydhbWQ2NCddXG4gICAqL1xuICByZWFkb25seSBpbWFnZUFyY2g/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIGFtb3VudCBvZiBtZW1vcnkgKGluIE1pQikgdG8gYWxsb2NhdGUgdG8gdGhlIEFXUyBMYW1iZGEgZnVuY3Rpb24gd2hpY2hcbiAgICogcmVwbGljYXRlcyB0aGUgZmlsZXMgZnJvbSB0aGUgQ0RLIGJ1Y2tldCB0byB0aGUgZGVzdGluYXRpb24gYnVja2V0LlxuICAgKlxuICAgKiBJZiB5b3UgYXJlIGRlcGxveWluZyBsYXJnZSBmaWxlcywgeW91IHdpbGwgbmVlZCB0byBpbmNyZWFzZSB0aGlzIG51bWJlclxuICAgKiBhY2NvcmRpbmdseS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSA1MTJcbiAgICovXG4gIHJlYWRvbmx5IG1lbW9yeUxpbWl0PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBFeGVjdXRpb24gcm9sZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBmdW5jdGlvblxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEEgcm9sZSBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IHJvbGU/OiBpYW0uSVJvbGU7XG5cbiAgLyoqXG4gICAqIFRoZSBWUEMgbmV0d29yayB0byBwbGFjZSB0aGUgZGVwbG95bWVudCBsYW1iZGEgaGFuZGxlciBpbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBOb25lXG4gICAqL1xuICByZWFkb25seSB2cGM/OiBlYzIuSVZwYztcblxuICAvKipcbiAgICogV2hlcmUgaW4gdGhlIFZQQyB0byBwbGFjZSB0aGUgZGVwbG95bWVudCBsYW1iZGEgaGFuZGxlci5cbiAgICogT25seSB1c2VkIGlmICd2cGMnIGlzIHN1cHBsaWVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRoZSBWcGMgZGVmYXVsdCBzdHJhdGVneSBpZiBub3Qgc3BlY2lmaWVkXG4gICAqL1xuICByZWFkb25seSB2cGNTdWJuZXRzPzogZWMyLlN1Ym5ldFNlbGVjdGlvbjtcblxuICAvKipcbiAgICogVGhlIGxpc3Qgb2Ygc2VjdXJpdHkgZ3JvdXBzIHRvIGFzc29jaWF0ZSB3aXRoIHRoZSBMYW1iZGEncyBuZXR3b3JrIGludGVyZmFjZXMuXG4gICAqXG4gICAqIE9ubHkgdXNlZCBpZiAndnBjJyBpcyBzdXBwbGllZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBJZiB0aGUgZnVuY3Rpb24gaXMgcGxhY2VkIHdpdGhpbiBhIFZQQyBhbmQgYSBzZWN1cml0eSBncm91cCBpc1xuICAgKiBub3Qgc3BlY2lmaWVkLCBlaXRoZXIgYnkgdGhpcyBvciBzZWN1cml0eUdyb3VwIHByb3AsIGEgZGVkaWNhdGVkIHNlY3VyaXR5XG4gICAqIGdyb3VwIHdpbGwgYmUgY3JlYXRlZCBmb3IgdGhpcyBmdW5jdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXBzPzogZWMyLlNlY3VyaXR5R3JvdXBbXTtcblxuICAvKipcbiAgICogVGhlIGxhbWJkYSBmdW5jdGlvbiBydW50aW1lIGVudmlyb25tZW50LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGxhbWJkYS5SdW50aW1lLlBST1ZJREVEX0FMMjAyM1xuICAgKi9cbiAgcmVhZG9ubHkgbGFtYmRhUnVudGltZT86IGxhbWJkYS5SdW50aW1lO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgbGFtYmRhIGhhbmRsZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYm9vdHN0cmFwXG4gICAqL1xuICByZWFkb25seSBsYW1iZGFIYW5kbGVyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gc2V0XG4gICAqL1xuICByZWFkb25seSBlbnZpcm9ubWVudD86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUltYWdlTmFtZSB7XG4gIC8qKlxuICAgKiAgVGhlIHVyaSBvZiB0aGUgZG9ja2VyIGltYWdlLlxuICAgKlxuICAgKiAgVGhlIHVyaSBzcGVjIGZvbGxvd3MgaHR0cHM6Ly9naXRodWIuY29tL2NvbnRhaW5lcnMvc2tvcGVvXG4gICAqL1xuICByZWFkb25seSB1cmk6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGNyZWRlbnRpYWxzIG9mIHRoZSBkb2NrZXIgaW1hZ2UuIEZvcm1hdCBgdXNlcjpwYXNzd29yZGAgb3IgYEFXUyBTZWNyZXRzIE1hbmFnZXIgc2VjcmV0IGFybmAgb3IgYEFXUyBTZWNyZXRzIE1hbmFnZXIgc2VjcmV0IG5hbWVgLlxuICAgKlxuICAgKiBJZiBzcGVjaWZ5aW5nIGFuIEFXUyBTZWNyZXRzIE1hbmFnZXIgc2VjcmV0LCB0aGUgZm9ybWF0IG9mIHRoZSBzZWNyZXQgc2hvdWxkIGJlIGVpdGhlciBwbGFpbiB0ZXh0IChgdXNlcjpwYXNzd29yZGApIG9yXG4gICAqIEpTT04gKGB7XCJ1c2VybmFtZVwiOlwiPHVzZXJuYW1lPlwiLFwicGFzc3dvcmRcIjpcIjxwYXNzd29yZD5cIn1gKS5cbiAgICpcbiAgICogRm9yIG1vcmUgZGV0YWlscyBvbiBKU09OIGZvcm1hdCwgc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25FQ1MvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL3ByaXZhdGUtYXV0aC5odG1sXG4gICAqL1xuICBjcmVkcz86IHN0cmluZztcbn1cblxuZnVuY3Rpb24gZ2V0Q29kZShidWlsZEltYWdlOiBzdHJpbmcpOiBsYW1iZGEuQXNzZXRDb2RlIHtcbiAgaWYgKHNob3VsZFVzZVByZWJ1aWx0TGFtYmRhKCkpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgaW5zdGFsbFNjcmlwdCA9IHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi9sYW1iZGEvaW5zdGFsbC5qcycpO1xuICAgICAgY29uc3QgcHJlYnVpbHRQYXRoID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uL2xhbWJkYS9vdXQnKTtcbiAgICAgIGNoaWxkX3Byb2Nlc3MuZXhlY0ZpbGVTeW5jKHByb2Nlc3MuYXJndjAsIFtpbnN0YWxsU2NyaXB0LCBwcmVidWlsdFBhdGhdKTtcblxuICAgICAgcmV0dXJuIGxhbWJkYS5Db2RlLmZyb21Bc3NldChwcmVidWlsdFBhdGgpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgY29uc29sZS53YXJuKGBDYW4gbm90IGdldCBwcmVidWlsdCBsYW1iZGE6ICR7ZXJyfWApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBsYW1iZGEuQ29kZS5mcm9tRG9ja2VyQnVpbGQocGF0aC5qb2luKF9fZGlybmFtZSwgJy4uL2xhbWJkYScpLCB7XG4gICAgYnVpbGRBcmdzOiB7XG4gICAgICBidWlsZEltYWdlLFxuICAgIH0sXG4gIH0pO1xufVxuXG5leHBvcnQgY2xhc3MgRG9ja2VySW1hZ2VOYW1lIGltcGxlbWVudHMgSUltYWdlTmFtZSB7XG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIG5hbWU6IHN0cmluZywgcHVibGljIGNyZWRzPzogc3RyaW5nKSB7IH1cbiAgcHVibGljIGdldCB1cmkoKTogc3RyaW5nIHsgcmV0dXJuIGBkb2NrZXI6Ly8ke3RoaXMubmFtZX1gOyB9XG59XG5cbmV4cG9ydCBjbGFzcyBTM0FyY2hpdmVOYW1lIGltcGxlbWVudHMgSUltYWdlTmFtZSB7XG4gIHByaXZhdGUgbmFtZTogc3RyaW5nO1xuICBwdWJsaWMgY29uc3RydWN0b3IocDogc3RyaW5nLCByZWY/OiBzdHJpbmcsIHB1YmxpYyBjcmVkcz86IHN0cmluZykge1xuICAgIHRoaXMubmFtZSA9IHA7XG4gICAgaWYgKHJlZikge1xuICAgICAgdGhpcy5uYW1lICs9ICc6JyArIHJlZjtcbiAgICB9XG4gIH1cbiAgcHVibGljIGdldCB1cmkoKTogc3RyaW5nIHsgcmV0dXJuIGBzMzovLyR7dGhpcy5uYW1lfWA7IH1cbn1cblxuZXhwb3J0IGNsYXNzIEVDUkRlcGxveW1lbnQgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwcml2YXRlIGhhbmRsZXI6IGxhbWJkYS5TaW5nbGV0b25GdW5jdGlvbjtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRUNSRGVwbG95bWVudFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICBjb25zdCBtZW1vcnlMaW1pdCA9IHByb3BzLm1lbW9yeUxpbWl0ID8/IDUxMjtcbiAgICB0aGlzLmhhbmRsZXIgPSBuZXcgbGFtYmRhLlNpbmdsZXRvbkZ1bmN0aW9uKHRoaXMsICdDdXN0b21SZXNvdXJjZUhhbmRsZXInLCB7XG4gICAgICB1dWlkOiB0aGlzLnJlbmRlclNpbmdsZXRvblV1aWQobWVtb3J5TGltaXQpLFxuICAgICAgY29kZTogZ2V0Q29kZShwcm9wcy5idWlsZEltYWdlID8/ICdwdWJsaWMuZWNyLmF3cy9kb2NrZXIvbGlicmFyeS9nb2xhbmc6MScpLFxuICAgICAgcnVudGltZTogcHJvcHMubGFtYmRhUnVudGltZSA/PyBuZXcgbGFtYmRhLlJ1bnRpbWUoJ3Byb3ZpZGVkLmFsMjAyMycsIFJ1bnRpbWVGYW1pbHkuT1RIRVIpLCAvLyBub3QgdXNpbmcgUnVudGltZS5QUk9WSURFRF9BTDIwMjMgdG8gc3VwcG9ydCBvbGRlciBDREsgdmVyc2lvbnMgKDwgMi4xMDUuMClcbiAgICAgIGhhbmRsZXI6IHByb3BzLmxhbWJkYUhhbmRsZXIgPz8gJ2Jvb3RzdHJhcCcsXG4gICAgICBlbnZpcm9ubWVudDogcHJvcHMuZW52aXJvbm1lbnQsXG4gICAgICBsYW1iZGFQdXJwb3NlOiAnQ3VzdG9tOjpDREtFQ1JEZXBsb3ltZW50JyxcbiAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLm1pbnV0ZXMoMTUpLFxuICAgICAgcm9sZTogcHJvcHMucm9sZSxcbiAgICAgIG1lbW9yeVNpemU6IG1lbW9yeUxpbWl0LFxuICAgICAgdnBjOiBwcm9wcy52cGMsXG4gICAgICB2cGNTdWJuZXRzOiBwcm9wcy52cGNTdWJuZXRzLFxuICAgICAgc2VjdXJpdHlHcm91cHM6IHByb3BzLnNlY3VyaXR5R3JvdXBzLFxuICAgIH0pO1xuXG4gICAgY29uc3QgaGFuZGxlclJvbGUgPSB0aGlzLmhhbmRsZXIucm9sZTtcbiAgICBpZiAoIWhhbmRsZXJSb2xlKSB7IHRocm93IG5ldyBFcnJvcignbGFtYmRhLlNpbmdsZXRvbkZ1bmN0aW9uIHNob3VsZCBoYXZlIGNyZWF0ZWQgYSBSb2xlJyk7IH1cblxuICAgIGhhbmRsZXJSb2xlLmFkZFRvUHJpbmNpcGFsUG9saWN5KFxuICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAnZWNyOkdldEF1dGhvcml6YXRpb25Ub2tlbicsXG4gICAgICAgICAgJ2VjcjpCYXRjaENoZWNrTGF5ZXJBdmFpbGFiaWxpdHknLFxuICAgICAgICAgICdlY3I6R2V0RG93bmxvYWRVcmxGb3JMYXllcicsXG4gICAgICAgICAgJ2VjcjpHZXRSZXBvc2l0b3J5UG9saWN5JyxcbiAgICAgICAgICAnZWNyOkRlc2NyaWJlUmVwb3NpdG9yaWVzJyxcbiAgICAgICAgICAnZWNyOkxpc3RJbWFnZXMnLFxuICAgICAgICAgICdlY3I6RGVzY3JpYmVJbWFnZXMnLFxuICAgICAgICAgICdlY3I6QmF0Y2hHZXRJbWFnZScsXG4gICAgICAgICAgJ2VjcjpMaXN0VGFnc0ZvclJlc291cmNlJyxcbiAgICAgICAgICAnZWNyOkRlc2NyaWJlSW1hZ2VTY2FuRmluZGluZ3MnLFxuICAgICAgICAgICdlY3I6SW5pdGlhdGVMYXllclVwbG9hZCcsXG4gICAgICAgICAgJ2VjcjpVcGxvYWRMYXllclBhcnQnLFxuICAgICAgICAgICdlY3I6Q29tcGxldGVMYXllclVwbG9hZCcsXG4gICAgICAgICAgJ2VjcjpQdXRJbWFnZScsXG4gICAgICAgIF0sXG4gICAgICAgIHJlc291cmNlczogWycqJ10sXG4gICAgICB9KSk7XG4gICAgaGFuZGxlclJvbGUuYWRkVG9QcmluY2lwYWxQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgYWN0aW9uczogW1xuICAgICAgICAnczM6R2V0T2JqZWN0JyxcbiAgICAgIF0sXG4gICAgICByZXNvdXJjZXM6IFsnKiddLFxuICAgIH0pKTtcblxuICAgIGlmIChwcm9wcy5pbWFnZUFyY2ggJiYgcHJvcHMuaW1hZ2VBcmNoLmxlbmd0aCAhPT0gMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBpbWFnZUFyY2ggbXVzdCBjb250YWluIGV4YWN0bHkgMSBlbGVtZW50LCBnb3QgJHtKU09OLnN0cmluZ2lmeShwcm9wcy5pbWFnZUFyY2gpfWApO1xuICAgIH1cbiAgICBjb25zdCBpbWFnZUFyY2ggPSBwcm9wcy5pbWFnZUFyY2ggPyBwcm9wcy5pbWFnZUFyY2hbMF0gOiAnJztcblxuICAgIG5ldyBDdXN0b21SZXNvdXJjZSh0aGlzLCAnQ3VzdG9tUmVzb3VyY2UnLCB7XG4gICAgICBzZXJ2aWNlVG9rZW46IHRoaXMuaGFuZGxlci5mdW5jdGlvbkFybixcbiAgICAgIC8vIFRoaXMgaGFzIGJlZW4gY29weS9wYXN0ZWQgYW5kIGlzIGEgcHVyZSBsaWUsIGJ1dCBjaGFuZ2luZyBpdCBpcyBnb2luZyB0byBjaGFuZ2UgcGVvcGxlJ3MgaW5mcmEhISBYKFxuICAgICAgcmVzb3VyY2VUeXBlOiAnQ3VzdG9tOjpDREtCdWNrZXREZXBsb3ltZW50JyxcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgU3JjSW1hZ2U6IHByb3BzLnNyYy51cmksXG4gICAgICAgIFNyY0NyZWRzOiBwcm9wcy5zcmMuY3JlZHMsXG4gICAgICAgIERlc3RJbWFnZTogcHJvcHMuZGVzdC51cmksXG4gICAgICAgIERlc3RDcmVkczogcHJvcHMuZGVzdC5jcmVkcyxcbiAgICAgICAgLi4uaW1hZ2VBcmNoID8geyBJbWFnZUFyY2g6IGltYWdlQXJjaCB9IDoge30sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFkZFRvUHJpbmNpcGFsUG9saWN5KHN0YXRlbWVudDogUG9saWN5U3RhdGVtZW50KTogQWRkVG9QcmluY2lwYWxQb2xpY3lSZXN1bHQge1xuICAgIGNvbnN0IGhhbmRsZXJSb2xlID0gdGhpcy5oYW5kbGVyLnJvbGU7XG4gICAgaWYgKCFoYW5kbGVyUm9sZSkgeyB0aHJvdyBuZXcgRXJyb3IoJ2xhbWJkYS5TaW5nbGV0b25GdW5jdGlvbiBzaG91bGQgaGF2ZSBjcmVhdGVkIGEgUm9sZScpOyB9XG5cbiAgICByZXR1cm4gaGFuZGxlclJvbGUuYWRkVG9QcmluY2lwYWxQb2xpY3koc3RhdGVtZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyU2luZ2xldG9uVXVpZChtZW1vcnlMaW1pdD86IG51bWJlcikge1xuICAgIGxldCB1dWlkID0gJ2JkMDdjOTMwLWVkYjktNDExMi1hMjBmLTAzZjA5NmY1MzY2Nic7XG5cbiAgICAvLyBpZiB1c2VyIHNwZWNpZnkgYSBjdXN0b20gbWVtb3J5IGxpbWl0LCBkZWZpbmUgYW5vdGhlciBzaW5nbGV0b24gaGFuZGxlclxuICAgIC8vIHdpdGggdGhpcyBjb25maWd1cmF0aW9uLiBvdGhlcndpc2UsIGl0IHdvbid0IGJlIHBvc3NpYmxlIHRvIHVzZSBtdWx0aXBsZVxuICAgIC8vIGNvbmZpZ3VyYXRpb25zIHNpbmNlIHdlIGhhdmUgYSBzaW5nbGV0b24uXG4gICAgaWYgKG1lbW9yeUxpbWl0KSB7XG4gICAgICBpZiAoVG9rZW4uaXNVbnJlc29sdmVkKG1lbW9yeUxpbWl0KSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NhblxcJ3QgdXNlIHRva2VucyB3aGVuIHNwZWNpZnlpbmcgXCJtZW1vcnlMaW1pdFwiIHNpbmNlIHdlIHVzZSBpdCB0byBpZGVudGlmeSB0aGUgc2luZ2xldG9uIGN1c3RvbSByZXNvdXJjZSBoYW5kbGVyJyk7XG4gICAgICB9XG5cbiAgICAgIHV1aWQgKz0gYC0ke21lbW9yeUxpbWl0LnRvU3RyaW5nKCl9TWlCYDtcbiAgICB9XG5cbiAgICByZXR1cm4gdXVpZDtcbiAgfVxufVxuIl19
|
|
156
|
+
ECRDeployment[_c] = { fqn: "cdk-ecr-deployment.ECRDeployment", version: "3.3.0" };
|
|
157
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxxRUFBcUU7QUFDckUsc0NBQXNDO0FBRXRDLDZCQUE2QjtBQUM3Qiw2Q0FBb0g7QUFFcEgsdURBQXVEO0FBQ3ZELDJDQUF1QztBQUN2QyxxQ0FBbUQ7QUF3SG5ELFNBQVMsT0FBTyxDQUFDLFVBQWtCO0lBQ2pDLElBQUksSUFBQSxnQ0FBdUIsR0FBRSxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDO1lBQ0gsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsZUFBZSxDQUFDLENBQUM7WUFDM0QsT0FBTyx3QkFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDN0MsQ0FBQztRQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDYixPQUFPLENBQUMsSUFBSSxDQUFDLGdDQUFnQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ3RELENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyx3QkFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsZUFBZSxDQUFDLEVBQUU7UUFDeEUsU0FBUyxFQUFFO1lBQ1QsVUFBVTtTQUNYO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELE1BQWEsZUFBZTtJQUMxQjs7Ozs7O09BTUc7SUFDSCxZQUEyQixJQUFZLEVBQVMsS0FBYztRQUFuQyxTQUFJLEdBQUosSUFBSSxDQUFRO1FBQVMsVUFBSyxHQUFMLEtBQUssQ0FBUztJQUFJLENBQUM7SUFDbkUsSUFBVyxHQUFHLEtBQWEsT0FBTyxZQUFZLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7O0FBVDlELDBDQVVDOzs7QUFFRCxNQUFhLGFBQWE7SUFHeEI7Ozs7Ozs7T0FPRztJQUNILFlBQW1CLENBQVMsRUFB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QUNoQixJQUFJLG1CQUFLLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3BDLE1BQU0sSUFBSSxLQUFLLENBQUMsbUhBQW1ILENBQUMsQ0FBQztZQUN2SSxDQUFDO1lBRUQsSUFBSSxJQUFJLElBQUksV0FBVyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUM7UUFDMUMsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzs7QUE5Rkgsc0NBK0ZDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuXG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgYXdzX2VjMiBhcyBlYzIsIGF3c19pYW0gYXMgaWFtLCBhd3NfbGFtYmRhIGFzIGxhbWJkYSwgRHVyYXRpb24sIEN1c3RvbVJlc291cmNlLCBUb2tlbiB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IFBvbGljeVN0YXRlbWVudCwgQWRkVG9QcmluY2lwYWxQb2xpY3lSZXN1bHQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IFJ1bnRpbWVGYW1pbHkgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgc2hvdWxkVXNlUHJlYnVpbHRMYW1iZGEgfSBmcm9tICcuL2NvbmZpZyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRUNSRGVwbG95bWVudFByb3BzIHtcblxuICAvKipcbiAgICogSW1hZ2UgdG8gdXNlIHRvIGJ1aWxkIEdvbGFuZyBsYW1iZGEgZm9yIGN1c3RvbSByZXNvdXJjZSwgaWYgZG93bmxvYWQgZmFpbHMgb3IgaXMgbm90IHdhbnRlZC5cbiAgICpcbiAgICogTWlnaHQgYmUgbmVlZGVkIGZvciBsb2NhbCBidWlsZCBpZiBhbGwgaW1hZ2VzIG5lZWQgdG8gY29tZSBmcm9tIG93biByZWdpc3RyeS5cbiAgICpcbiAgICogTm90ZSB0aGF0IGltYWdlIHNob3VsZCB1c2UgeXVtIGFzIGEgcGFja2FnZSBtYW5hZ2VyIGFuZCBoYXZlIGdvbGFuZyBhdmFpbGFibGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gcHVibGljLmVjci5hd3Mvc2FtL2J1aWxkLWdvMS54OmxhdGVzdFxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRJbWFnZT86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBzb3VyY2Ugb2YgdGhlIGRvY2tlciBpbWFnZS5cbiAgICovXG4gIHJlYWRvbmx5IHNyYzogSUltYWdlTmFtZTtcblxuICAvKipcbiAgICogVGhlIGRlc3RpbmF0aW9uIG9mIHRoZSBkb2NrZXIgaW1hZ2UuXG4gICAqL1xuICByZWFkb25seSBkZXN0OiBJSW1hZ2VOYW1lO1xuXG4gIC8qKlxuICAgKiBUaGUgaW1hZ2UgYXJjaGl0ZWN0dXJlIHRvIGJlIGNvcGllZC5cbiAgICpcbiAgICogVGhlICdhbWQ2NCcgYXJjaGl0ZWN0dXJlIHdpbGwgYmUgY29waWVkIGJ5IGRlZmF1bHQuIFNwZWNpZnkgdGhlXG4gICAqIGFyY2hpdGVjdHVyZSBvciBhcmNoaXRlY3R1cmVzIHRvIGNvcHkgaGVyZS5cbiAgICpcbiAgICogSXQgaXMgY3VycmVudGx5IG5vdCBwb3NzaWJsZSB0byBjb3B5IG1vcmUgdGhhbiBvbmUgYXJjaGl0ZWN0dXJlXG4gICAqIGF0IGEgdGltZTogdGhlIGFycmF5IHlvdSBzcGVjaWZ5IG11c3QgY29udGFpbiBleGFjdGx5IG9uZSBzdHJpbmcuXG4gICAqXG4gICAqIEBkZWZhdWx0IFsnYW1kNjQnXVxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VBcmNoPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBhbW91bnQgb2YgbWVtb3J5IChpbiBNaUIpIHRvIGFsbG9jYXRlIHRvIHRoZSBBV1MgTGFtYmRhIGZ1bmN0aW9uIHdoaWNoXG4gICAqIHJlcGxpY2F0ZXMgdGhlIGZpbGVzIGZyb20gdGhlIENESyBidWNrZXQgdG8gdGhlIGRlc3RpbmF0aW9uIGJ1Y2tldC5cbiAgICpcbiAgICogSWYgeW91IGFyZSBkZXBsb3lpbmcgbGFyZ2UgZmlsZXMsIHlvdSB3aWxsIG5lZWQgdG8gaW5jcmVhc2UgdGhpcyBudW1iZXJcbiAgICogYWNjb3JkaW5nbHkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gNTEyXG4gICAqL1xuICByZWFkb25seSBtZW1vcnlMaW1pdD86IG51bWJlcjtcblxuICAvKipcbiAgICogRXhlY3V0aW9uIHJvbGUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZnVuY3Rpb25cbiAgICpcbiAgICogQGRlZmF1bHQgLSBBIHJvbGUgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkXG4gICAqL1xuICByZWFkb25seSByb2xlPzogaWFtLklSb2xlO1xuXG4gIC8qKlxuICAgKiBUaGUgVlBDIG5ldHdvcmsgdG8gcGxhY2UgdGhlIGRlcGxveW1lbnQgbGFtYmRhIGhhbmRsZXIgaW4uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgdnBjPzogZWMyLklWcGM7XG5cbiAgLyoqXG4gICAqIFdoZXJlIGluIHRoZSBWUEMgdG8gcGxhY2UgdGhlIGRlcGxveW1lbnQgbGFtYmRhIGhhbmRsZXIuXG4gICAqIE9ubHkgdXNlZCBpZiAndnBjJyBpcyBzdXBwbGllZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0aGUgVnBjIGRlZmF1bHQgc3RyYXRlZ3kgaWYgbm90IHNwZWNpZmllZFxuICAgKi9cbiAgcmVhZG9ubHkgdnBjU3VibmV0cz86IGVjMi5TdWJuZXRTZWxlY3Rpb247XG5cbiAgLyoqXG4gICAqIFRoZSBsaXN0IG9mIHNlY3VyaXR5IGdyb3VwcyB0byBhc3NvY2lhdGUgd2l0aCB0aGUgTGFtYmRhJ3MgbmV0d29yayBpbnRlcmZhY2VzLlxuICAgKlxuICAgKiBPbmx5IHVzZWQgaWYgJ3ZwYycgaXMgc3VwcGxpZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gSWYgdGhlIGZ1bmN0aW9uIGlzIHBsYWNlZCB3aXRoaW4gYSBWUEMgYW5kIGEgc2VjdXJpdHkgZ3JvdXAgaXNcbiAgICogbm90IHNwZWNpZmllZCwgZWl0aGVyIGJ5IHRoaXMgb3Igc2VjdXJpdHlHcm91cCBwcm9wLCBhIGRlZGljYXRlZCBzZWN1cml0eVxuICAgKiBncm91cCB3aWxsIGJlIGNyZWF0ZWQgZm9yIHRoaXMgZnVuY3Rpb24uXG4gICAqL1xuICByZWFkb25seSBzZWN1cml0eUdyb3Vwcz86IGVjMi5TZWN1cml0eUdyb3VwW107XG5cbiAgLyoqXG4gICAqIFRoZSBsYW1iZGEgZnVuY3Rpb24gcnVudGltZSBlbnZpcm9ubWVudC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBsYW1iZGEuUnVudGltZS5QUk9WSURFRF9BTDIwMjNcbiAgICovXG4gIHJlYWRvbmx5IGxhbWJkYVJ1bnRpbWU/OiBsYW1iZGEuUnVudGltZTtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGxhbWJkYSBoYW5kbGVyLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGJvb3RzdHJhcFxuICAgKi9cbiAgcmVhZG9ubHkgbGFtYmRhSGFuZGxlcj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIHNldFxuICAgKi9cbiAgcmVhZG9ubHkgZW52aXJvbm1lbnQ/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElJbWFnZU5hbWUge1xuICAvKipcbiAgICogIFRoZSB1cmkgb2YgdGhlIGRvY2tlciBpbWFnZS5cbiAgICpcbiAgICogIFRoZSB1cmkgc3BlYyBmb2xsb3dzIGh0dHBzOi8vZ2l0aHViLmNvbS9jb250YWluZXJzL3Nrb3Blb1xuICAgKi9cbiAgcmVhZG9ubHkgdXJpOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBjcmVkZW50aWFscyBvZiB0aGUgZG9ja2VyIGltYWdlLiBGb3JtYXQgYHVzZXI6cGFzc3dvcmRgIG9yIGBBV1MgU2VjcmV0cyBNYW5hZ2VyIHNlY3JldCBhcm5gIG9yIGBBV1MgU2VjcmV0cyBNYW5hZ2VyIHNlY3JldCBuYW1lYC5cbiAgICpcbiAgICogSWYgc3BlY2lmeWluZyBhbiBBV1MgU2VjcmV0cyBNYW5hZ2VyIHNlY3JldCwgdGhlIGZvcm1hdCBvZiB0aGUgc2VjcmV0IHNob3VsZCBiZSBlaXRoZXIgcGxhaW4gdGV4dCAoYHVzZXI6cGFzc3dvcmRgKSBvclxuICAgKiBKU09OIChge1widXNlcm5hbWVcIjpcIjx1c2VybmFtZT5cIixcInBhc3N3b3JkXCI6XCI8cGFzc3dvcmQ+XCJ9YCkuXG4gICAqXG4gICAqIEZvciBtb3JlIGRldGFpbHMgb24gSlNPTiBmb3JtYXQsIHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uRUNTL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9wcml2YXRlLWF1dGguaHRtbFxuICAgKi9cbiAgY3JlZHM/OiBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIGdldENvZGUoYnVpbGRJbWFnZTogc3RyaW5nKTogbGFtYmRhLkFzc2V0Q29kZSB7XG4gIGlmIChzaG91bGRVc2VQcmVidWlsdExhbWJkYSgpKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHByZWJ1aWx0UGF0aCA9IHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi9sYW1iZGEtYmluJyk7XG4gICAgICByZXR1cm4gbGFtYmRhLkNvZGUuZnJvbUFzc2V0KHByZWJ1aWx0UGF0aCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjb25zb2xlLndhcm4oYENhbiBub3QgZ2V0IHByZWJ1aWx0IGxhbWJkYTogJHtlcnJ9YCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGxhbWJkYS5Db2RlLmZyb21Eb2NrZXJCdWlsZChwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4vbGFtYmRhLXNyYycpLCB7XG4gICAgYnVpbGRBcmdzOiB7XG4gICAgICBidWlsZEltYWdlLFxuICAgIH0sXG4gIH0pO1xufVxuXG5leHBvcnQgY2xhc3MgRG9ja2VySW1hZ2VOYW1lIGltcGxlbWVudHMgSUltYWdlTmFtZSB7XG4gIC8qKlxuICAgKiBAcGFyYW0gbmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBpbWFnZSwgZS5nLiByZXRyaWV2ZWQgZnJvbSBgRG9ja2VySW1hZ2VBc3NldC5pbWFnZVVyaWBcbiAgICogQHBhcmFtIGNyZWRzIC0gVGhlIGNyZWRlbnRpYWxzIG9mIHRoZSBkb2NrZXIgaW1hZ2UuIEZvcm1hdCBgdXNlcjpwYXNzd29yZGAgb3IgYEFXUyBTZWNyZXRzIE1hbmFnZXIgc2VjcmV0IGFybmAgb3IgYEFXUyBTZWNyZXRzIE1hbmFnZXIgc2VjcmV0IG5hbWVgLlxuICAgKiAgICAgSWYgc3BlY2lmeWluZyBhbiBBV1MgU2VjcmV0cyBNYW5hZ2VyIHNlY3JldCwgdGhlIGZvcm1hdCBvZiB0aGUgc2VjcmV0IHNob3VsZCBiZSBlaXRoZXIgcGxhaW4gdGV4dCAoYHVzZXI6cGFzc3dvcmRgKSBvclxuICAgKiAgICAgSlNPTiAoYHtcInVzZXJuYW1lXCI6XCI8dXNlcm5hbWU+XCIsXCJwYXNzd29yZFwiOlwiPHBhc3N3b3JkPlwifWApLlxuICAgKiAgICAgRm9yIG1vcmUgZGV0YWlscyBvbiBKU09OIGZvcm1hdCwgc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25FQ1MvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL3ByaXZhdGUtYXV0aC5odG1sXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBuYW1lOiBzdHJpbmcsIHB1YmxpYyBjcmVkcz86IHN0cmluZykgeyB9XG4gIHB1YmxpYyBnZXQgdXJpKCk6IHN0cmluZyB7IHJldHVybiBgZG9ja2VyOi8vJHt0aGlzLm5hbWV9YDsgfVxufVxuXG5leHBvcnQgY2xhc3MgUzNBcmNoaXZlTmFtZSBpbXBsZW1lbnRzIElJbWFnZU5hbWUge1xuICBwcml2YXRlIG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQHBhcmFtIHAgLSB0aGUgUzMgYnVja2V0IG5hbWUgYW5kIHBhdGggb2YgdGhlIGFyY2hpdmUgKGEgUzMgVVJJIHdpdGhvdXQgdGhlIHMzOi8vKVxuICAgKiBAcGFyYW0gcmVmIC0gYXBwZW5kZWQgdG8gdGhlIGVuZCBvZiB0aGUgbmFtZSB3aXRoIGEgYDpgLCBlLmcuIGA6bGF0ZXN0YFxuICAgKiBAcGFyYW0gY3JlZHMgLSBUaGUgY3JlZGVudGlhbHMgb2YgdGhlIGRvY2tlciBpbWFnZS4gRm9ybWF0IGB1c2VyOnBhc3N3b3JkYCBvciBgQVdTIFNlY3JldHMgTWFuYWdlciBzZWNyZXQgYXJuYCBvciBgQVdTIFNlY3JldHMgTWFuYWdlciBzZWNyZXQgbmFtZWAuXG4gICAqICAgICBJZiBzcGVjaWZ5aW5nIGFuIEFXUyBTZWNyZXRzIE1hbmFnZXIgc2VjcmV0LCB0aGUgZm9ybWF0IG9mIHRoZSBzZWNyZXQgc2hvdWxkIGJlIGVpdGhlciBwbGFpbiB0ZXh0IChgdXNlcjpwYXNzd29yZGApIG9yXG4gICAqICAgICBKU09OIChge1widXNlcm5hbWVcIjpcIjx1c2VybmFtZT5cIixcInBhc3N3b3JkXCI6XCI8cGFzc3dvcmQ+XCJ9YCkuXG4gICAqICAgICBGb3IgbW9yZSBkZXRhaWxzIG9uIEpTT04gZm9ybWF0LCBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkVDUy9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvcHJpdmF0ZS1hdXRoLmh0bWxcbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwOiBzdHJpbmcsIHJlZj86IHN0cmluZywgcHVibGljIGNyZWRzPzogc3RyaW5nKSB7XG4gICAgdGhpcy5uYW1lID0gcDtcbiAgICBpZiAocmVmKSB7XG4gICAgICB0aGlzLm5hbWUgKz0gJzonICsgcmVmO1xuICAgIH1cbiAgfVxuICBwdWJsaWMgZ2V0IHVyaSgpOiBzdHJpbmcgeyByZXR1cm4gYHMzOi8vJHt0aGlzLm5hbWV9YDsgfVxufVxuXG5leHBvcnQgY2xhc3MgRUNSRGVwbG95bWVudCBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHByaXZhdGUgaGFuZGxlcjogbGFtYmRhLlNpbmdsZXRvbkZ1bmN0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBFQ1JEZXBsb3ltZW50UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIGNvbnN0IG1lbW9yeUxpbWl0ID0gcHJvcHMubWVtb3J5TGltaXQgPz8gNTEyO1xuICAgIHRoaXMuaGFuZGxlciA9IG5ldyBsYW1iZGEuU2luZ2xldG9uRnVuY3Rpb24odGhpcywgJ0N1c3RvbVJlc291cmNlSGFuZGxlcicsIHtcbiAgICAgIHV1aWQ6IHRoaXMucmVuZGVyU2luZ2xldG9uVXVpZChtZW1vcnlMaW1pdCksXG4gICAgICBjb2RlOiBnZXRDb2RlKHByb3BzLmJ1aWxkSW1hZ2UgPz8gJ3B1YmxpYy5lY3IuYXdzL2RvY2tlci9saWJyYXJ5L2dvbGFuZzoxJyksXG4gICAgICBydW50aW1lOiBwcm9wcy5sYW1iZGFSdW50aW1lID8/IG5ldyBsYW1iZGEuUnVudGltZSgncHJvdmlkZWQuYWwyMDIzJywgUnVudGltZUZhbWlseS5PVEhFUiksIC8vIG5vdCB1c2luZyBSdW50aW1lLlBST1ZJREVEX0FMMjAyMyB0byBzdXBwb3J0IG9sZGVyIENESyB2ZXJzaW9ucyAoPCAyLjEwNS4wKVxuICAgICAgaGFuZGxlcjogcHJvcHMubGFtYmRhSGFuZGxlciA/PyAnYm9vdHN0cmFwJyxcbiAgICAgIGVudmlyb25tZW50OiBwcm9wcy5lbnZpcm9ubWVudCxcbiAgICAgIGxhbWJkYVB1cnBvc2U6ICdDdXN0b206OkNES0VDUkRlcGxveW1lbnQnLFxuICAgICAgdGltZW91dDogRHVyYXRpb24ubWludXRlcygxNSksXG4gICAgICByb2xlOiBwcm9wcy5yb2xlLFxuICAgICAgbWVtb3J5U2l6ZTogbWVtb3J5TGltaXQsXG4gICAgICB2cGM6IHByb3BzLnZwYyxcbiAgICAgIHZwY1N1Ym5ldHM6IHByb3BzLnZwY1N1Ym5ldHMsXG4gICAgICBzZWN1cml0eUdyb3VwczogcHJvcHMuc2VjdXJpdHlHcm91cHMsXG4gICAgfSk7XG5cbiAgICBjb25zdCBoYW5kbGVyUm9sZSA9IHRoaXMuaGFuZGxlci5yb2xlO1xuICAgIGlmICghaGFuZGxlclJvbGUpIHsgdGhyb3cgbmV3IEVycm9yKCdsYW1iZGEuU2luZ2xldG9uRnVuY3Rpb24gc2hvdWxkIGhhdmUgY3JlYXRlZCBhIFJvbGUnKTsgfVxuXG4gICAgaGFuZGxlclJvbGUuYWRkVG9QcmluY2lwYWxQb2xpY3koXG4gICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICdlY3I6R2V0QXV0aG9yaXphdGlvblRva2VuJyxcbiAgICAgICAgICAnZWNyOkJhdGNoQ2hlY2tMYXllckF2YWlsYWJpbGl0eScsXG4gICAgICAgICAgJ2VjcjpHZXREb3dubG9hZFVybEZvckxheWVyJyxcbiAgICAgICAgICAnZWNyOkdldFJlcG9zaXRvcnlQb2xpY3knLFxuICAgICAgICAgICdlY3I6RGVzY3JpYmVSZXBvc2l0b3JpZXMnLFxuICAgICAgICAgICdlY3I6TGlzdEltYWdlcycsXG4gICAgICAgICAgJ2VjcjpEZXNjcmliZUltYWdlcycsXG4gICAgICAgICAgJ2VjcjpCYXRjaEdldEltYWdlJyxcbiAgICAgICAgICAnZWNyOkxpc3RUYWdzRm9yUmVzb3VyY2UnLFxuICAgICAgICAgICdlY3I6RGVzY3JpYmVJbWFnZVNjYW5GaW5kaW5ncycsXG4gICAgICAgICAgJ2VjcjpJbml0aWF0ZUxheWVyVXBsb2FkJyxcbiAgICAgICAgICAnZWNyOlVwbG9hZExheWVyUGFydCcsXG4gICAgICAgICAgJ2VjcjpDb21wbGV0ZUxheWVyVXBsb2FkJyxcbiAgICAgICAgICAnZWNyOlB1dEltYWdlJyxcbiAgICAgICAgXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbJyonXSxcbiAgICAgIH0pKTtcbiAgICBoYW5kbGVyUm9sZS5hZGRUb1ByaW5jaXBhbFBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICBhY3Rpb25zOiBbXG4gICAgICAgICdzMzpHZXRPYmplY3QnLFxuICAgICAgXSxcbiAgICAgIHJlc291cmNlczogWycqJ10sXG4gICAgfSkpO1xuXG4gICAgaWYgKHByb3BzLmltYWdlQXJjaCAmJiBwcm9wcy5pbWFnZUFyY2gubGVuZ3RoICE9PSAxKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGltYWdlQXJjaCBtdXN0IGNvbnRhaW4gZXhhY3RseSAxIGVsZW1lbnQsIGdvdCAke0pTT04uc3RyaW5naWZ5KHByb3BzLmltYWdlQXJjaCl9YCk7XG4gICAgfVxuICAgIGNvbnN0IGltYWdlQXJjaCA9IHByb3BzLmltYWdlQXJjaCA/IHByb3BzLmltYWdlQXJjaFswXSA6ICcnO1xuXG4gICAgbmV3IEN1c3RvbVJlc291cmNlKHRoaXMsICdDdXN0b21SZXNvdXJjZScsIHtcbiAgICAgIHNlcnZpY2VUb2tlbjogdGhpcy5oYW5kbGVyLmZ1bmN0aW9uQXJuLFxuICAgICAgLy8gVGhpcyBoYXMgYmVlbiBjb3B5L3Bhc3RlZCBhbmQgaXMgYSBwdXJlIGxpZSwgYnV0IGNoYW5naW5nIGl0IGlzIGdvaW5nIHRvIGNoYW5nZSBwZW9wbGUncyBpbmZyYSEhIFgoXG4gICAgICByZXNvdXJjZVR5cGU6ICdDdXN0b206OkNES0J1Y2tldERlcGxveW1lbnQnLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBTcmNJbWFnZTogcHJvcHMuc3JjLnVyaSxcbiAgICAgICAgU3JjQ3JlZHM6IHByb3BzLnNyYy5jcmVkcyxcbiAgICAgICAgRGVzdEltYWdlOiBwcm9wcy5kZXN0LnVyaSxcbiAgICAgICAgRGVzdENyZWRzOiBwcm9wcy5kZXN0LmNyZWRzLFxuICAgICAgICAuLi5pbWFnZUFyY2ggPyB7IEltYWdlQXJjaDogaW1hZ2VBcmNoIH0gOiB7fSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYWRkVG9QcmluY2lwYWxQb2xpY3koc3RhdGVtZW50OiBQb2xpY3lTdGF0ZW1lbnQpOiBBZGRUb1ByaW5jaXBhbFBvbGljeVJlc3VsdCB7XG4gICAgY29uc3QgaGFuZGxlclJvbGUgPSB0aGlzLmhhbmRsZXIucm9sZTtcbiAgICBpZiAoIWhhbmRsZXJSb2xlKSB7IHRocm93IG5ldyBFcnJvcignbGFtYmRhLlNpbmdsZXRvbkZ1bmN0aW9uIHNob3VsZCBoYXZlIGNyZWF0ZWQgYSBSb2xlJyk7IH1cblxuICAgIHJldHVybiBoYW5kbGVyUm9sZS5hZGRUb1ByaW5jaXBhbFBvbGljeShzdGF0ZW1lbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJTaW5nbGV0b25VdWlkKG1lbW9yeUxpbWl0PzogbnVtYmVyKSB7XG4gICAgbGV0IHV1aWQgPSAnYmQwN2M5MzAtZWRiOS00MTEyLWEyMGYtMDNmMDk2ZjUzNjY2JztcblxuICAgIC8vIGlmIHVzZXIgc3BlY2lmeSBhIGN1c3RvbSBtZW1vcnkgbGltaXQsIGRlZmluZSBhbm90aGVyIHNpbmdsZXRvbiBoYW5kbGVyXG4gICAgLy8gd2l0aCB0aGlzIGNvbmZpZ3VyYXRpb24uIG90aGVyd2lzZSwgaXQgd29uJ3QgYmUgcG9zc2libGUgdG8gdXNlIG11bHRpcGxlXG4gICAgLy8gY29uZmlndXJhdGlvbnMgc2luY2Ugd2UgaGF2ZSBhIHNpbmdsZXRvbi5cbiAgICBpZiAobWVtb3J5TGltaXQpIHtcbiAgICAgIGlmIChUb2tlbi5pc1VucmVzb2x2ZWQobWVtb3J5TGltaXQpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQ2FuXFwndCB1c2UgdG9rZW5zIHdoZW4gc3BlY2lmeWluZyBcIm1lbW9yeUxpbWl0XCIgc2luY2Ugd2UgdXNlIGl0IHRvIGlkZW50aWZ5IHRoZSBzaW5nbGV0b24gY3VzdG9tIHJlc291cmNlIGhhbmRsZXInKTtcbiAgICAgIH1cblxuICAgICAgdXVpZCArPSBgLSR7bWVtb3J5TGltaXQudG9TdHJpbmcoKX1NaUJgO1xuICAgIH1cblxuICAgIHJldHVybiB1dWlkO1xuICB9XG59XG4iXX0=
|
package/package.json
CHANGED
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"@aws-cdk/integ-runner": "latest",
|
|
48
48
|
"@aws-cdk/integ-tests-alpha": "latest",
|
|
49
49
|
"@stylistic/eslint-plugin": "^2",
|
|
50
|
-
"@types/jest": "^
|
|
50
|
+
"@types/jest": "^29",
|
|
51
51
|
"@types/node": "^18",
|
|
52
52
|
"@typescript-eslint/eslint-plugin": "^8",
|
|
53
53
|
"@typescript-eslint/parser": "^8",
|
|
@@ -56,19 +56,19 @@
|
|
|
56
56
|
"commit-and-tag-version": "^12",
|
|
57
57
|
"constructs": "10.0.5",
|
|
58
58
|
"eslint": "^9",
|
|
59
|
-
"eslint-import-resolver-typescript": "^
|
|
59
|
+
"eslint-import-resolver-typescript": "^3.8.6",
|
|
60
60
|
"eslint-plugin-import": "^2.31.0",
|
|
61
|
-
"jest": "^
|
|
62
|
-
"jest-junit": "^
|
|
63
|
-
"jsii": "5.
|
|
61
|
+
"jest": "^29",
|
|
62
|
+
"jest-junit": "^16",
|
|
63
|
+
"jsii": "5.7.x",
|
|
64
64
|
"jsii-diff": "^1.109.0",
|
|
65
65
|
"jsii-docgen": "^10.5.0",
|
|
66
66
|
"jsii-pacmak": "^1.109.0",
|
|
67
67
|
"jsii-rosetta": "^5.7.8",
|
|
68
68
|
"projen": "^0.91.4",
|
|
69
|
-
"ts-jest": "^
|
|
69
|
+
"ts-jest": "^29",
|
|
70
70
|
"ts-node": "^10.9.2",
|
|
71
|
-
"typescript": "
|
|
71
|
+
"typescript": "5.7.x"
|
|
72
72
|
},
|
|
73
73
|
"peerDependencies": {
|
|
74
74
|
"aws-cdk-lib": "^2.80.0",
|
|
@@ -94,7 +94,7 @@
|
|
|
94
94
|
"publishConfig": {
|
|
95
95
|
"access": "public"
|
|
96
96
|
},
|
|
97
|
-
"version": "3.
|
|
97
|
+
"version": "3.3.0",
|
|
98
98
|
"jest": {
|
|
99
99
|
"coverageProvider": "v8",
|
|
100
100
|
"testMatch": [
|
|
@@ -131,11 +131,13 @@
|
|
|
131
131
|
}
|
|
132
132
|
]
|
|
133
133
|
],
|
|
134
|
-
"
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
134
|
+
"transform": {
|
|
135
|
+
"^.+\\.[t]sx?$": [
|
|
136
|
+
"ts-jest",
|
|
137
|
+
{
|
|
138
|
+
"tsconfig": "tsconfig.dev.json"
|
|
139
|
+
}
|
|
140
|
+
]
|
|
139
141
|
}
|
|
140
142
|
},
|
|
141
143
|
"types": "lib/index.d.ts",
|
package/lambda/install.js
DELETED
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
const fs = require('fs');
|
|
2
|
-
const got = require('got');
|
|
3
|
-
const path = require('path');
|
|
4
|
-
const stream = require('stream');
|
|
5
|
-
const crypto = require('crypto');
|
|
6
|
-
const { HttpProxyAgent, HttpsProxyAgent } = require('hpagent');
|
|
7
|
-
const { promisify } = require('util');
|
|
8
|
-
const pipeline = promisify(stream.pipeline);
|
|
9
|
-
|
|
10
|
-
const package = require('../package.json');
|
|
11
|
-
const version = package.version;
|
|
12
|
-
const rootUrl = package.repository.url.replace('git+', '').replace('.git', '');
|
|
13
|
-
|
|
14
|
-
function mkdirp(p) {
|
|
15
|
-
if (!fs.existsSync(p)) {
|
|
16
|
-
fs.mkdirSync(p, { recursive: true });
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
function sha256sum(p) {
|
|
21
|
-
return new Promise(function (resolve, reject) {
|
|
22
|
-
const hash = crypto.createHash('sha256');
|
|
23
|
-
|
|
24
|
-
fs.createReadStream(p)
|
|
25
|
-
.on('error', reject)
|
|
26
|
-
.on('data', chunk => hash.update(chunk))
|
|
27
|
-
.on('close', () => resolve(hash.digest('hex')));
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
async function download(url, dest, agent) {
|
|
32
|
-
remove(dest);
|
|
33
|
-
console.log(`download ${url}`);
|
|
34
|
-
await pipeline(
|
|
35
|
-
got.stream(url, { agent }),
|
|
36
|
-
fs.createWriteStream(dest)
|
|
37
|
-
);
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
function remove(dest) {
|
|
41
|
-
console.log(`removing ${dest}`);
|
|
42
|
-
fs.rmSync(dest, { force: true });
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
(async () => {
|
|
47
|
-
const dir = process.argv[2];
|
|
48
|
-
if (!dir) {
|
|
49
|
-
throw new Error('Missing an argument');
|
|
50
|
-
}
|
|
51
|
-
mkdirp(dir);
|
|
52
|
-
|
|
53
|
-
const bin = path.join(dir, 'bootstrap');
|
|
54
|
-
const bootstrapExists = fs.existsSync(bin);
|
|
55
|
-
const size = bootstrapExists ? fs.statSync(bin).size : 0;
|
|
56
|
-
const oneMB = 1024*1024;
|
|
57
|
-
|
|
58
|
-
// if the file doesn't exist or is obviously broken, download a new version
|
|
59
|
-
if (!bootstrapExists || size < oneMB) {
|
|
60
|
-
const agent = {};
|
|
61
|
-
agent.https = process.env.HTTPS_PROXY ? new HttpsProxyAgent({proxy: process.env.HTTPS_PROXY}): undefined;
|
|
62
|
-
agent.http = process.env.HTTP_PROXY ? new HttpProxyAgent({proxy: process.env.HTTP_PROXY}): undefined;
|
|
63
|
-
|
|
64
|
-
try {
|
|
65
|
-
await download(`${rootUrl}/releases/download/v${version}/bootstrap`, bin, agent);
|
|
66
|
-
const expectedIntegrity = (await got(`${rootUrl}/releases/download/v${version}/bootstrap.sha256`, { agent })).body.trim();
|
|
67
|
-
const integrity = await sha256sum(bin);
|
|
68
|
-
|
|
69
|
-
if (integrity !== expectedIntegrity) {
|
|
70
|
-
throw new Error(`Integrity check error: expected ${expectedIntegrity} but got ${integrity}`);
|
|
71
|
-
}
|
|
72
|
-
} catch (err) {
|
|
73
|
-
// we had a failure downloading or validating integrity of the bootstrap file, so let's remove it to be sure
|
|
74
|
-
remove(bin);
|
|
75
|
-
throw err;
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
})().catch(err => {
|
|
80
|
-
console.error(err.toString());
|
|
81
|
-
process.exit(1);
|
|
82
|
-
})
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|