diff --git a/projenrc/magic-ecs.ts b/projenrc/magic-ecs.ts index 0466f4e08..135767b6a 100644 --- a/projenrc/magic-ecs.ts +++ b/projenrc/magic-ecs.ts @@ -148,7 +148,8 @@ function newEcsTask(project: TypeScriptProject, entrypoint: string) { main.line(); main.open('async function main(): Promise {'); - main.line('const heartbeat = setInterval(sendHeartbeat, 180_000);'); // Heartbeat is only expected every 10min + main.line('// Heartbeat is expected every 5min'); + main.line('const heartbeat = setInterval(sendHeartbeat, 90_000);'); main.line('try {'); // Deserialize the input, which ECS provides as a sequence of JSON objects. We skip the first 2 values (argv[0] is the // node binary, and argv[1] is this JS file). diff --git a/src/__tests__/__snapshots__/construct-hub.test.ts.snap b/src/__tests__/__snapshots__/construct-hub.test.ts.snap index 827139a85..ee4f7e33f 100644 --- a/src/__tests__/__snapshots__/construct-hub.test.ts.snap +++ b/src/__tests__/__snapshots__/construct-hub.test.ts.snap @@ -1982,7 +1982,7 @@ Direct link to the function: /lambda/home#/functions/", "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}", }, - "S3Key": "adc968265edfc49e5f153ec2f04b9ab181f039f99c730ada3b42d3699e689488.zip", + "S3Key": "b3920e9d711ceea73db8f90e0463707c1b628786ee1159f1e061edd9f5b8fad6.zip", }, "Description": "Release note RSS feed updater", "Environment": { @@ -2210,7 +2210,7 @@ Direct link to the function: /lambda/home#/functions/", "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}", }, - "S3Key": "af987f9430783f68b7d6f0b8fae90dda93e0ce2e0a9f79d4254bab88bf5a5e16.zip", + "S3Key": "73f555c1687cfc39f88b7c7cbfa4cf42f9a9a8f8ae51aba57c67b39c1c9660de.zip", }, "Description": "[ConstructHub/Ingestion] Ingests new package versions into the Construct Hub", "Environment": { @@ -4716,7 +4716,7 @@ Direct link to function: /lambda/home#/functions/", "Fn::Join": [ "", [ - "{"StartAt":"Track Execution Infos","States":{"Track Execution Infos":{"Type":"Pass","ResultPath":"$.$TaskExecution","InputPath":"$$.Execution","Parameters":{"Id.$":"$.Id","Name.$":"$.Name","RoleArn.$":"$.RoleArn","StartTime.$":"$.StartTime"},"Next":"Prepare doc-gen ECS Command"},"Prepare doc-gen ECS Command":{"Type":"Pass","ResultPath":"$.docGen","Parameters":{"command.$":"States.Array(States.JsonToString($))"},"Next":"Generate docs"},"Generate docs":{"Next":"Check whether catalog needs udpating","Retry":[{"ErrorEquals":["jsii-docgen.NoSpaceLeftOnDevice"],"MaxAttempts":0},{"ErrorEquals":["ECS.AmazonECSException","ECS.InvalidParameterException","jsii-docgen.NpmError.E429","jsii-codgen.NpmError.EPROTO"],"IntervalSeconds":60,"MaxAttempts":45,"BackoffRate":1.1},{"ErrorEquals":["jsii-docgen.NpmError.ETARGET"],"IntervalSeconds":300,"MaxAttempts":3,"BackoffRate":2},{"ErrorEquals":["States.Timeout"],"MaxAttempts":5},{"ErrorEquals":["States.ALL"],"MaxAttempts":3}],"Catch":[{"ErrorEquals":["UnprocessablePackageError"],"Next":"Ignore"},{"ErrorEquals":["States.Timeout"],"ResultPath":"$.error","Next":"Send to Dead Letter Queue"},{"ErrorEquals":["ECS.AmazonECSException","ECS.InvalidParameterException"],"ResultPath":"$.error","Next":"Send to Dead Letter Queue"},{"ErrorEquals":["States.TaskFailed"],"ResultPath":"$.error","Next":"Send to Dead Letter Queue"},{"ErrorEquals":["States.ALL"],"ResultPath":"$.error","Next":"Send to Dead Letter Queue"}],"Type":"Task","TimeoutSeconds":7200,"HeartbeatSeconds":600,"InputPath":"$.docGen.command","ResultPath":"$.docGenOutput","Resource":"arn:", + "{"StartAt":"Track Execution Infos","States":{"Track Execution Infos":{"Type":"Pass","ResultPath":"$.$TaskExecution","InputPath":"$$.Execution","Parameters":{"Id.$":"$.Id","Name.$":"$.Name","RoleArn.$":"$.RoleArn","StartTime.$":"$.StartTime"},"Next":"Prepare doc-gen ECS Command"},"Prepare doc-gen ECS Command":{"Type":"Pass","ResultPath":"$.docGen","Parameters":{"command.$":"States.Array(States.JsonToString($))"},"Next":"Generate docs"},"Generate docs":{"Next":"Check whether catalog needs udpating","Retry":[{"ErrorEquals":["jsii-docgen.NoSpaceLeftOnDevice"],"MaxAttempts":0},{"ErrorEquals":["ECS.AmazonECSException","ECS.InvalidParameterException","jsii-docgen.NpmError.E429","jsii-codgen.NpmError.EPROTO"],"IntervalSeconds":60,"MaxAttempts":45,"BackoffRate":1.1},{"ErrorEquals":["jsii-docgen.NpmError.ETARGET"],"IntervalSeconds":300,"MaxAttempts":3,"BackoffRate":2},{"ErrorEquals":["States.Timeout"],"IntervalSeconds":30,"MaxAttempts":3,"BackoffRate":2},{"ErrorEquals":["States.ALL"],"MaxAttempts":3}],"Catch":[{"ErrorEquals":["UnprocessablePackageError"],"Next":"Ignore"},{"ErrorEquals":["States.Timeout"],"ResultPath":"$.error","Next":"Send to Dead Letter Queue"},{"ErrorEquals":["ECS.AmazonECSException","ECS.InvalidParameterException"],"ResultPath":"$.error","Next":"Send to Dead Letter Queue"},{"ErrorEquals":["States.TaskFailed"],"ResultPath":"$.error","Next":"Send to Dead Letter Queue"},{"ErrorEquals":["States.ALL"],"ResultPath":"$.error","Next":"Send to Dead Letter Queue"}],"Type":"Task","TimeoutSeconds":3600,"HeartbeatSeconds":300,"InputPath":"$.docGen.command","ResultPath":"$.docGenOutput","Resource":"arn:", { "Ref": "AWS::Partition", }, @@ -4799,7 +4799,7 @@ Direct link to function: /lambda/home#/functions/", "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}", }, - "S3Key": "21a9e4e9eef44a3ea3e5bb0b325435b9e6f594f80ee6531a594cf3a71bb7ffc0.zip", + "S3Key": "e10e535c1da4def8f4ab158b682f3e0dc3ec931a1908ae52b0d98417d97fdc31.zip", }, "Description": { "Fn::Join": [ @@ -5131,7 +5131,7 @@ RUNBOOK: https://github.com/cdklabs/construct-hub/blob/main/docs/operator-runboo "CLUSTER_NAME": { "Ref": "ConstructHubOrchestrationCluster3D6F0081", }, - "TIMEOUT_MILLIS": "7800000", + "TIMEOUT_MILLIS": "4200000", }, }, "Handler": "index.handler", @@ -6805,7 +6805,7 @@ Warning: messages that resulted in a failed exectuion will NOT be in the DLQ!", ], "Essential": true, "Image": { - "Fn::Sub": "\${AWS::AccountId}.dkr.ecr.\${AWS::Region}.\${AWS::URLSuffix}/cdk-hnb659fds-container-assets-\${AWS::AccountId}-\${AWS::Region}:3821e3a8525b6f4f82feb538a4d0bf49df909c998ee7bfd92c687df22fc10e2c", + "Fn::Sub": "\${AWS::AccountId}.dkr.ecr.\${AWS::Region}.\${AWS::URLSuffix}/cdk-hnb659fds-container-assets-\${AWS::AccountId}-\${AWS::Region}:1d2e836747551b0b8349adccc8339ed8d7e0d346de2aaf0b5780148ff197ee65", }, "LogConfiguration": { "LogDriver": "awslogs", @@ -6820,13 +6820,6 @@ Warning: messages that resulted in a failed exectuion will NOT be in the DLQ!", }, }, "Name": "Resource", - "Ulimits": [ - { - "HardLimit": 65535, - "Name": "nofile", - "SoftLimit": 16384, - }, - ], }, ], "Cpu": "4096", @@ -10567,7 +10560,7 @@ Direct link to Lambda function: /lambda/home#/functions/", "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}", }, - "S3Key": "3a1d523580b07c48ca9cc9edd3dd28570fab0ec1376a3e6db55f4b75aab17341.zip", + "S3Key": "479b7c2c78a5d25b70aabd2288e82a1e652419bd69bf0b1e4c2875c1d63390ff.zip", }, "Description": { "Fn::Join": [ @@ -10774,7 +10767,7 @@ Direct link to Lambda function: /lambda/home#/functions/", "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}", }, - "S3Key": "e2f17dcafbec902a3e51708aad2e14c0bc320bb8574f23ea3815be8ba9c1518e.zip", + "S3Key": "d8a3151860146db8454dd22015490c387b05cf78f4bcfebd6979bdc8caa4f0b6.zip", }, "Description": { "Fn::Join": [ @@ -14809,7 +14802,7 @@ Direct link to the function: /lambda/home#/functions/", "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}", }, - "S3Key": "adc968265edfc49e5f153ec2f04b9ab181f039f99c730ada3b42d3699e689488.zip", + "S3Key": "b3920e9d711ceea73db8f90e0463707c1b628786ee1159f1e061edd9f5b8fad6.zip", }, "Description": "Release note RSS feed updater", "Environment": { @@ -15037,7 +15030,7 @@ Direct link to the function: /lambda/home#/functions/", "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}", }, - "S3Key": "af987f9430783f68b7d6f0b8fae90dda93e0ce2e0a9f79d4254bab88bf5a5e16.zip", + "S3Key": "73f555c1687cfc39f88b7c7cbfa4cf42f9a9a8f8ae51aba57c67b39c1c9660de.zip", }, "Description": "[ConstructHub/Ingestion] Ingests new package versions into the Construct Hub", "Environment": { @@ -17641,7 +17634,7 @@ Direct link to function: /lambda/home#/functions/", "Fn::Join": [ "", [ - "{"StartAt":"Track Execution Infos","States":{"Track Execution Infos":{"Type":"Pass","ResultPath":"$.$TaskExecution","InputPath":"$$.Execution","Parameters":{"Id.$":"$.Id","Name.$":"$.Name","RoleArn.$":"$.RoleArn","StartTime.$":"$.StartTime"},"Next":"Prepare doc-gen ECS Command"},"Prepare doc-gen ECS Command":{"Type":"Pass","ResultPath":"$.docGen","Parameters":{"command.$":"States.Array(States.JsonToString($))"},"Next":"Generate docs"},"Generate docs":{"Next":"Check whether catalog needs udpating","Retry":[{"ErrorEquals":["jsii-docgen.NoSpaceLeftOnDevice"],"MaxAttempts":0},{"ErrorEquals":["ECS.AmazonECSException","ECS.InvalidParameterException","jsii-docgen.NpmError.E429","jsii-codgen.NpmError.EPROTO"],"IntervalSeconds":60,"MaxAttempts":45,"BackoffRate":1.1},{"ErrorEquals":["jsii-docgen.NpmError.ETARGET"],"IntervalSeconds":300,"MaxAttempts":3,"BackoffRate":2},{"ErrorEquals":["States.Timeout"],"MaxAttempts":5},{"ErrorEquals":["States.ALL"],"MaxAttempts":3}],"Catch":[{"ErrorEquals":["UnprocessablePackageError"],"Next":"Ignore"},{"ErrorEquals":["States.Timeout"],"ResultPath":"$.error","Next":"Send to Dead Letter Queue"},{"ErrorEquals":["ECS.AmazonECSException","ECS.InvalidParameterException"],"ResultPath":"$.error","Next":"Send to Dead Letter Queue"},{"ErrorEquals":["States.TaskFailed"],"ResultPath":"$.error","Next":"Send to Dead Letter Queue"},{"ErrorEquals":["States.ALL"],"ResultPath":"$.error","Next":"Send to Dead Letter Queue"}],"Type":"Task","TimeoutSeconds":7200,"HeartbeatSeconds":600,"InputPath":"$.docGen.command","ResultPath":"$.docGenOutput","Resource":"arn:", + "{"StartAt":"Track Execution Infos","States":{"Track Execution Infos":{"Type":"Pass","ResultPath":"$.$TaskExecution","InputPath":"$$.Execution","Parameters":{"Id.$":"$.Id","Name.$":"$.Name","RoleArn.$":"$.RoleArn","StartTime.$":"$.StartTime"},"Next":"Prepare doc-gen ECS Command"},"Prepare doc-gen ECS Command":{"Type":"Pass","ResultPath":"$.docGen","Parameters":{"command.$":"States.Array(States.JsonToString($))"},"Next":"Generate docs"},"Generate docs":{"Next":"Check whether catalog needs udpating","Retry":[{"ErrorEquals":["jsii-docgen.NoSpaceLeftOnDevice"],"MaxAttempts":0},{"ErrorEquals":["ECS.AmazonECSException","ECS.InvalidParameterException","jsii-docgen.NpmError.E429","jsii-codgen.NpmError.EPROTO"],"IntervalSeconds":60,"MaxAttempts":45,"BackoffRate":1.1},{"ErrorEquals":["jsii-docgen.NpmError.ETARGET"],"IntervalSeconds":300,"MaxAttempts":3,"BackoffRate":2},{"ErrorEquals":["States.Timeout"],"IntervalSeconds":30,"MaxAttempts":3,"BackoffRate":2},{"ErrorEquals":["States.ALL"],"MaxAttempts":3}],"Catch":[{"ErrorEquals":["UnprocessablePackageError"],"Next":"Ignore"},{"ErrorEquals":["States.Timeout"],"ResultPath":"$.error","Next":"Send to Dead Letter Queue"},{"ErrorEquals":["ECS.AmazonECSException","ECS.InvalidParameterException"],"ResultPath":"$.error","Next":"Send to Dead Letter Queue"},{"ErrorEquals":["States.TaskFailed"],"ResultPath":"$.error","Next":"Send to Dead Letter Queue"},{"ErrorEquals":["States.ALL"],"ResultPath":"$.error","Next":"Send to Dead Letter Queue"}],"Type":"Task","TimeoutSeconds":3600,"HeartbeatSeconds":300,"InputPath":"$.docGen.command","ResultPath":"$.docGenOutput","Resource":"arn:", { "Ref": "AWS::Partition", }, @@ -17724,7 +17717,7 @@ Direct link to function: /lambda/home#/functions/", "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}", }, - "S3Key": "21a9e4e9eef44a3ea3e5bb0b325435b9e6f594f80ee6531a594cf3a71bb7ffc0.zip", + "S3Key": "e10e535c1da4def8f4ab158b682f3e0dc3ec931a1908ae52b0d98417d97fdc31.zip", }, "Description": { "Fn::Join": [ @@ -18056,7 +18049,7 @@ RUNBOOK: https://github.com/cdklabs/construct-hub/blob/main/docs/operator-runboo "CLUSTER_NAME": { "Ref": "ConstructHubOrchestrationCluster3D6F0081", }, - "TIMEOUT_MILLIS": "7800000", + "TIMEOUT_MILLIS": "4200000", }, }, "Handler": "index.handler", @@ -19757,7 +19750,7 @@ Warning: messages that resulted in a failed exectuion will NOT be in the DLQ!", ], "Essential": true, "Image": { - "Fn::Sub": "\${AWS::AccountId}.dkr.ecr.\${AWS::Region}.\${AWS::URLSuffix}/cdk-hnb659fds-container-assets-\${AWS::AccountId}-\${AWS::Region}:3821e3a8525b6f4f82feb538a4d0bf49df909c998ee7bfd92c687df22fc10e2c", + "Fn::Sub": "\${AWS::AccountId}.dkr.ecr.\${AWS::Region}.\${AWS::URLSuffix}/cdk-hnb659fds-container-assets-\${AWS::AccountId}-\${AWS::Region}:1d2e836747551b0b8349adccc8339ed8d7e0d346de2aaf0b5780148ff197ee65", }, "LogConfiguration": { "LogDriver": "awslogs", @@ -19772,13 +19765,6 @@ Warning: messages that resulted in a failed exectuion will NOT be in the DLQ!", }, }, "Name": "Resource", - "Ulimits": [ - { - "HardLimit": 65535, - "Name": "nofile", - "SoftLimit": 16384, - }, - ], }, ], "Cpu": "4096", @@ -23565,7 +23551,7 @@ Direct link to Lambda function: /lambda/home#/functions/", "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}", }, - "S3Key": "3a1d523580b07c48ca9cc9edd3dd28570fab0ec1376a3e6db55f4b75aab17341.zip", + "S3Key": "479b7c2c78a5d25b70aabd2288e82a1e652419bd69bf0b1e4c2875c1d63390ff.zip", }, "Description": { "Fn::Join": [ @@ -23772,7 +23758,7 @@ Direct link to Lambda function: /lambda/home#/functions/", "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}", }, - "S3Key": "e2f17dcafbec902a3e51708aad2e14c0bc320bb8574f23ea3815be8ba9c1518e.zip", + "S3Key": "d8a3151860146db8454dd22015490c387b05cf78f4bcfebd6979bdc8caa4f0b6.zip", }, "Description": { "Fn::Join": [ @@ -27550,7 +27536,7 @@ Direct link to the function: /lambda/home#/functions/", "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}", }, - "S3Key": "adc968265edfc49e5f153ec2f04b9ab181f039f99c730ada3b42d3699e689488.zip", + "S3Key": "b3920e9d711ceea73db8f90e0463707c1b628786ee1159f1e061edd9f5b8fad6.zip", }, "Description": "Release note RSS feed updater", "Environment": { @@ -27778,7 +27764,7 @@ Direct link to the function: /lambda/home#/functions/", "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}", }, - "S3Key": "af987f9430783f68b7d6f0b8fae90dda93e0ce2e0a9f79d4254bab88bf5a5e16.zip", + "S3Key": "73f555c1687cfc39f88b7c7cbfa4cf42f9a9a8f8ae51aba57c67b39c1c9660de.zip", }, "Description": "[ConstructHub/Ingestion] Ingests new package versions into the Construct Hub", "Environment": { @@ -30284,7 +30270,7 @@ Direct link to function: /lambda/home#/functions/", "Fn::Join": [ "", [ - "{"StartAt":"Track Execution Infos","States":{"Track Execution Infos":{"Type":"Pass","ResultPath":"$.$TaskExecution","InputPath":"$$.Execution","Parameters":{"Id.$":"$.Id","Name.$":"$.Name","RoleArn.$":"$.RoleArn","StartTime.$":"$.StartTime"},"Next":"Prepare doc-gen ECS Command"},"Prepare doc-gen ECS Command":{"Type":"Pass","ResultPath":"$.docGen","Parameters":{"command.$":"States.Array(States.JsonToString($))"},"Next":"Generate docs"},"Generate docs":{"Next":"Check whether catalog needs udpating","Retry":[{"ErrorEquals":["jsii-docgen.NoSpaceLeftOnDevice"],"MaxAttempts":0},{"ErrorEquals":["ECS.AmazonECSException","ECS.InvalidParameterException","jsii-docgen.NpmError.E429","jsii-codgen.NpmError.EPROTO"],"IntervalSeconds":60,"MaxAttempts":45,"BackoffRate":1.1},{"ErrorEquals":["jsii-docgen.NpmError.ETARGET"],"IntervalSeconds":300,"MaxAttempts":3,"BackoffRate":2},{"ErrorEquals":["States.Timeout"],"MaxAttempts":5},{"ErrorEquals":["States.ALL"],"MaxAttempts":3}],"Catch":[{"ErrorEquals":["UnprocessablePackageError"],"Next":"Ignore"},{"ErrorEquals":["States.Timeout"],"ResultPath":"$.error","Next":"Send to Dead Letter Queue"},{"ErrorEquals":["ECS.AmazonECSException","ECS.InvalidParameterException"],"ResultPath":"$.error","Next":"Send to Dead Letter Queue"},{"ErrorEquals":["States.TaskFailed"],"ResultPath":"$.error","Next":"Send to Dead Letter Queue"},{"ErrorEquals":["States.ALL"],"ResultPath":"$.error","Next":"Send to Dead Letter Queue"}],"Type":"Task","TimeoutSeconds":7200,"HeartbeatSeconds":600,"InputPath":"$.docGen.command","ResultPath":"$.docGenOutput","Resource":"arn:", + "{"StartAt":"Track Execution Infos","States":{"Track Execution Infos":{"Type":"Pass","ResultPath":"$.$TaskExecution","InputPath":"$$.Execution","Parameters":{"Id.$":"$.Id","Name.$":"$.Name","RoleArn.$":"$.RoleArn","StartTime.$":"$.StartTime"},"Next":"Prepare doc-gen ECS Command"},"Prepare doc-gen ECS Command":{"Type":"Pass","ResultPath":"$.docGen","Parameters":{"command.$":"States.Array(States.JsonToString($))"},"Next":"Generate docs"},"Generate docs":{"Next":"Check whether catalog needs udpating","Retry":[{"ErrorEquals":["jsii-docgen.NoSpaceLeftOnDevice"],"MaxAttempts":0},{"ErrorEquals":["ECS.AmazonECSException","ECS.InvalidParameterException","jsii-docgen.NpmError.E429","jsii-codgen.NpmError.EPROTO"],"IntervalSeconds":60,"MaxAttempts":45,"BackoffRate":1.1},{"ErrorEquals":["jsii-docgen.NpmError.ETARGET"],"IntervalSeconds":300,"MaxAttempts":3,"BackoffRate":2},{"ErrorEquals":["States.Timeout"],"IntervalSeconds":30,"MaxAttempts":3,"BackoffRate":2},{"ErrorEquals":["States.ALL"],"MaxAttempts":3}],"Catch":[{"ErrorEquals":["UnprocessablePackageError"],"Next":"Ignore"},{"ErrorEquals":["States.Timeout"],"ResultPath":"$.error","Next":"Send to Dead Letter Queue"},{"ErrorEquals":["ECS.AmazonECSException","ECS.InvalidParameterException"],"ResultPath":"$.error","Next":"Send to Dead Letter Queue"},{"ErrorEquals":["States.TaskFailed"],"ResultPath":"$.error","Next":"Send to Dead Letter Queue"},{"ErrorEquals":["States.ALL"],"ResultPath":"$.error","Next":"Send to Dead Letter Queue"}],"Type":"Task","TimeoutSeconds":3600,"HeartbeatSeconds":300,"InputPath":"$.docGen.command","ResultPath":"$.docGenOutput","Resource":"arn:", { "Ref": "AWS::Partition", }, @@ -30367,7 +30353,7 @@ Direct link to function: /lambda/home#/functions/", "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}", }, - "S3Key": "21a9e4e9eef44a3ea3e5bb0b325435b9e6f594f80ee6531a594cf3a71bb7ffc0.zip", + "S3Key": "e10e535c1da4def8f4ab158b682f3e0dc3ec931a1908ae52b0d98417d97fdc31.zip", }, "Description": { "Fn::Join": [ @@ -30699,7 +30685,7 @@ RUNBOOK: https://github.com/cdklabs/construct-hub/blob/main/docs/operator-runboo "CLUSTER_NAME": { "Ref": "ConstructHubOrchestrationCluster3D6F0081", }, - "TIMEOUT_MILLIS": "7800000", + "TIMEOUT_MILLIS": "4200000", }, }, "Handler": "index.handler", @@ -32373,7 +32359,7 @@ Warning: messages that resulted in a failed exectuion will NOT be in the DLQ!", ], "Essential": true, "Image": { - "Fn::Sub": "\${AWS::AccountId}.dkr.ecr.\${AWS::Region}.\${AWS::URLSuffix}/cdk-hnb659fds-container-assets-\${AWS::AccountId}-\${AWS::Region}:3821e3a8525b6f4f82feb538a4d0bf49df909c998ee7bfd92c687df22fc10e2c", + "Fn::Sub": "\${AWS::AccountId}.dkr.ecr.\${AWS::Region}.\${AWS::URLSuffix}/cdk-hnb659fds-container-assets-\${AWS::AccountId}-\${AWS::Region}:1d2e836747551b0b8349adccc8339ed8d7e0d346de2aaf0b5780148ff197ee65", }, "LogConfiguration": { "LogDriver": "awslogs", @@ -32388,13 +32374,6 @@ Warning: messages that resulted in a failed exectuion will NOT be in the DLQ!", }, }, "Name": "Resource", - "Ulimits": [ - { - "HardLimit": 65535, - "Name": "nofile", - "SoftLimit": 16384, - }, - ], }, ], "Cpu": "4096", @@ -36135,7 +36114,7 @@ Direct link to Lambda function: /lambda/home#/functions/", "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}", }, - "S3Key": "3a1d523580b07c48ca9cc9edd3dd28570fab0ec1376a3e6db55f4b75aab17341.zip", + "S3Key": "479b7c2c78a5d25b70aabd2288e82a1e652419bd69bf0b1e4c2875c1d63390ff.zip", }, "Description": { "Fn::Join": [ @@ -36342,7 +36321,7 @@ Direct link to Lambda function: /lambda/home#/functions/", "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}", }, - "S3Key": "e2f17dcafbec902a3e51708aad2e14c0bc320bb8574f23ea3815be8ba9c1518e.zip", + "S3Key": "d8a3151860146db8454dd22015490c387b05cf78f4bcfebd6979bdc8caa4f0b6.zip", }, "Description": { "Fn::Join": [ @@ -40260,7 +40239,7 @@ Direct link to the function: /lambda/home#/functions/", "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}", }, - "S3Key": "adc968265edfc49e5f153ec2f04b9ab181f039f99c730ada3b42d3699e689488.zip", + "S3Key": "b3920e9d711ceea73db8f90e0463707c1b628786ee1159f1e061edd9f5b8fad6.zip", }, "Description": "Release note RSS feed updater", "Environment": { @@ -40475,7 +40454,7 @@ Direct link to the function: /lambda/home#/functions/", "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}", }, - "S3Key": "af987f9430783f68b7d6f0b8fae90dda93e0ce2e0a9f79d4254bab88bf5a5e16.zip", + "S3Key": "73f555c1687cfc39f88b7c7cbfa4cf42f9a9a8f8ae51aba57c67b39c1c9660de.zip", }, "Description": "[ConstructHub/Ingestion] Ingests new package versions into the Construct Hub", "Environment": { @@ -43003,7 +42982,7 @@ Direct link to function: /lambda/home#/functions/", "Fn::Join": [ "", [ - "{"StartAt":"Track Execution Infos","States":{"Track Execution Infos":{"Type":"Pass","ResultPath":"$.$TaskExecution","InputPath":"$$.Execution","Parameters":{"Id.$":"$.Id","Name.$":"$.Name","RoleArn.$":"$.RoleArn","StartTime.$":"$.StartTime"},"Next":"Prepare doc-gen ECS Command"},"Prepare doc-gen ECS Command":{"Type":"Pass","ResultPath":"$.docGen","Parameters":{"command.$":"States.Array(States.JsonToString($))"},"Next":"Generate docs"},"Generate docs":{"Next":"Check whether catalog needs udpating","Retry":[{"ErrorEquals":["jsii-docgen.NoSpaceLeftOnDevice"],"MaxAttempts":0},{"ErrorEquals":["ECS.AmazonECSException","ECS.InvalidParameterException","jsii-docgen.NpmError.E429","jsii-codgen.NpmError.EPROTO"],"IntervalSeconds":60,"MaxAttempts":45,"BackoffRate":1.1},{"ErrorEquals":["jsii-docgen.NpmError.ETARGET"],"IntervalSeconds":300,"MaxAttempts":3,"BackoffRate":2},{"ErrorEquals":["States.Timeout"],"MaxAttempts":5},{"ErrorEquals":["States.ALL"],"MaxAttempts":3}],"Catch":[{"ErrorEquals":["UnprocessablePackageError"],"Next":"Ignore"},{"ErrorEquals":["States.Timeout"],"ResultPath":"$.error","Next":"Send to Dead Letter Queue"},{"ErrorEquals":["ECS.AmazonECSException","ECS.InvalidParameterException"],"ResultPath":"$.error","Next":"Send to Dead Letter Queue"},{"ErrorEquals":["States.TaskFailed"],"ResultPath":"$.error","Next":"Send to Dead Letter Queue"},{"ErrorEquals":["States.ALL"],"ResultPath":"$.error","Next":"Send to Dead Letter Queue"}],"Type":"Task","TimeoutSeconds":7200,"HeartbeatSeconds":600,"InputPath":"$.docGen.command","ResultPath":"$.docGenOutput","Resource":"arn:", + "{"StartAt":"Track Execution Infos","States":{"Track Execution Infos":{"Type":"Pass","ResultPath":"$.$TaskExecution","InputPath":"$$.Execution","Parameters":{"Id.$":"$.Id","Name.$":"$.Name","RoleArn.$":"$.RoleArn","StartTime.$":"$.StartTime"},"Next":"Prepare doc-gen ECS Command"},"Prepare doc-gen ECS Command":{"Type":"Pass","ResultPath":"$.docGen","Parameters":{"command.$":"States.Array(States.JsonToString($))"},"Next":"Generate docs"},"Generate docs":{"Next":"Check whether catalog needs udpating","Retry":[{"ErrorEquals":["jsii-docgen.NoSpaceLeftOnDevice"],"MaxAttempts":0},{"ErrorEquals":["ECS.AmazonECSException","ECS.InvalidParameterException","jsii-docgen.NpmError.E429","jsii-codgen.NpmError.EPROTO"],"IntervalSeconds":60,"MaxAttempts":45,"BackoffRate":1.1},{"ErrorEquals":["jsii-docgen.NpmError.ETARGET"],"IntervalSeconds":300,"MaxAttempts":3,"BackoffRate":2},{"ErrorEquals":["States.Timeout"],"IntervalSeconds":30,"MaxAttempts":3,"BackoffRate":2},{"ErrorEquals":["States.ALL"],"MaxAttempts":3}],"Catch":[{"ErrorEquals":["UnprocessablePackageError"],"Next":"Ignore"},{"ErrorEquals":["States.Timeout"],"ResultPath":"$.error","Next":"Send to Dead Letter Queue"},{"ErrorEquals":["ECS.AmazonECSException","ECS.InvalidParameterException"],"ResultPath":"$.error","Next":"Send to Dead Letter Queue"},{"ErrorEquals":["States.TaskFailed"],"ResultPath":"$.error","Next":"Send to Dead Letter Queue"},{"ErrorEquals":["States.ALL"],"ResultPath":"$.error","Next":"Send to Dead Letter Queue"}],"Type":"Task","TimeoutSeconds":3600,"HeartbeatSeconds":300,"InputPath":"$.docGen.command","ResultPath":"$.docGenOutput","Resource":"arn:", { "Ref": "AWS::Partition", }, @@ -43086,7 +43065,7 @@ Direct link to function: /lambda/home#/functions/", "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}", }, - "S3Key": "21a9e4e9eef44a3ea3e5bb0b325435b9e6f594f80ee6531a594cf3a71bb7ffc0.zip", + "S3Key": "e10e535c1da4def8f4ab158b682f3e0dc3ec931a1908ae52b0d98417d97fdc31.zip", }, "Description": { "Fn::Join": [ @@ -43418,7 +43397,7 @@ RUNBOOK: https://github.com/cdklabs/construct-hub/blob/main/docs/operator-runboo "CLUSTER_NAME": { "Ref": "ConstructHubOrchestrationCluster3D6F0081", }, - "TIMEOUT_MILLIS": "7800000", + "TIMEOUT_MILLIS": "4200000", }, }, "Handler": "index.handler", @@ -45092,7 +45071,7 @@ Warning: messages that resulted in a failed exectuion will NOT be in the DLQ!", ], "Essential": true, "Image": { - "Fn::Sub": "\${AWS::AccountId}.dkr.ecr.\${AWS::Region}.\${AWS::URLSuffix}/cdk-hnb659fds-container-assets-\${AWS::AccountId}-\${AWS::Region}:3821e3a8525b6f4f82feb538a4d0bf49df909c998ee7bfd92c687df22fc10e2c", + "Fn::Sub": "\${AWS::AccountId}.dkr.ecr.\${AWS::Region}.\${AWS::URLSuffix}/cdk-hnb659fds-container-assets-\${AWS::AccountId}-\${AWS::Region}:1d2e836747551b0b8349adccc8339ed8d7e0d346de2aaf0b5780148ff197ee65", }, "LogConfiguration": { "LogDriver": "awslogs", @@ -45107,13 +45086,6 @@ Warning: messages that resulted in a failed exectuion will NOT be in the DLQ!", }, }, "Name": "Resource", - "Ulimits": [ - { - "HardLimit": 65535, - "Name": "nofile", - "SoftLimit": 16384, - }, - ], }, ], "Cpu": "4096", @@ -48841,7 +48813,7 @@ Direct link to Lambda function: /lambda/home#/functions/", "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}", }, - "S3Key": "3a1d523580b07c48ca9cc9edd3dd28570fab0ec1376a3e6db55f4b75aab17341.zip", + "S3Key": "479b7c2c78a5d25b70aabd2288e82a1e652419bd69bf0b1e4c2875c1d63390ff.zip", }, "Description": { "Fn::Join": [ @@ -49048,7 +49020,7 @@ Direct link to Lambda function: /lambda/home#/functions/", "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}", }, - "S3Key": "e2f17dcafbec902a3e51708aad2e14c0bc320bb8574f23ea3815be8ba9c1518e.zip", + "S3Key": "d8a3151860146db8454dd22015490c387b05cf78f4bcfebd6979bdc8caa4f0b6.zip", }, "Description": { "Fn::Join": [ @@ -53153,7 +53125,7 @@ Direct link to the function: /lambda/home#/functions/", "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}", }, - "S3Key": "adc968265edfc49e5f153ec2f04b9ab181f039f99c730ada3b42d3699e689488.zip", + "S3Key": "b3920e9d711ceea73db8f90e0463707c1b628786ee1159f1e061edd9f5b8fad6.zip", }, "Description": "Release note RSS feed updater", "Environment": { @@ -53381,7 +53353,7 @@ Direct link to the function: /lambda/home#/functions/", "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}", }, - "S3Key": "af987f9430783f68b7d6f0b8fae90dda93e0ce2e0a9f79d4254bab88bf5a5e16.zip", + "S3Key": "73f555c1687cfc39f88b7c7cbfa4cf42f9a9a8f8ae51aba57c67b39c1c9660de.zip", }, "Description": "[ConstructHub/Ingestion] Ingests new package versions into the Construct Hub", "Environment": { @@ -56014,7 +55986,7 @@ Direct link to function: /lambda/home#/functions/", "Fn::Join": [ "", [ - "{"StartAt":"Track Execution Infos","States":{"Track Execution Infos":{"Type":"Pass","ResultPath":"$.$TaskExecution","InputPath":"$$.Execution","Parameters":{"Id.$":"$.Id","Name.$":"$.Name","RoleArn.$":"$.RoleArn","StartTime.$":"$.StartTime"},"Next":"Prepare doc-gen ECS Command"},"Prepare doc-gen ECS Command":{"Type":"Pass","ResultPath":"$.docGen","Parameters":{"command.$":"States.Array(States.JsonToString($))"},"Next":"Generate docs"},"Generate docs":{"Next":"Check whether catalog needs udpating","Retry":[{"ErrorEquals":["jsii-docgen.NoSpaceLeftOnDevice"],"MaxAttempts":0},{"ErrorEquals":["ECS.AmazonECSException","ECS.InvalidParameterException","jsii-docgen.NpmError.E429","jsii-codgen.NpmError.EPROTO"],"IntervalSeconds":60,"MaxAttempts":45,"BackoffRate":1.1},{"ErrorEquals":["jsii-docgen.NpmError.ETARGET"],"IntervalSeconds":300,"MaxAttempts":3,"BackoffRate":2},{"ErrorEquals":["States.Timeout"],"MaxAttempts":5},{"ErrorEquals":["States.ALL"],"MaxAttempts":3}],"Catch":[{"ErrorEquals":["UnprocessablePackageError"],"Next":"Ignore"},{"ErrorEquals":["States.Timeout"],"ResultPath":"$.error","Next":"Send to Dead Letter Queue"},{"ErrorEquals":["ECS.AmazonECSException","ECS.InvalidParameterException"],"ResultPath":"$.error","Next":"Send to Dead Letter Queue"},{"ErrorEquals":["States.TaskFailed"],"ResultPath":"$.error","Next":"Send to Dead Letter Queue"},{"ErrorEquals":["States.ALL"],"ResultPath":"$.error","Next":"Send to Dead Letter Queue"}],"Type":"Task","TimeoutSeconds":7200,"HeartbeatSeconds":600,"InputPath":"$.docGen.command","ResultPath":"$.docGenOutput","Resource":"arn:", + "{"StartAt":"Track Execution Infos","States":{"Track Execution Infos":{"Type":"Pass","ResultPath":"$.$TaskExecution","InputPath":"$$.Execution","Parameters":{"Id.$":"$.Id","Name.$":"$.Name","RoleArn.$":"$.RoleArn","StartTime.$":"$.StartTime"},"Next":"Prepare doc-gen ECS Command"},"Prepare doc-gen ECS Command":{"Type":"Pass","ResultPath":"$.docGen","Parameters":{"command.$":"States.Array(States.JsonToString($))"},"Next":"Generate docs"},"Generate docs":{"Next":"Check whether catalog needs udpating","Retry":[{"ErrorEquals":["jsii-docgen.NoSpaceLeftOnDevice"],"MaxAttempts":0},{"ErrorEquals":["ECS.AmazonECSException","ECS.InvalidParameterException","jsii-docgen.NpmError.E429","jsii-codgen.NpmError.EPROTO"],"IntervalSeconds":60,"MaxAttempts":45,"BackoffRate":1.1},{"ErrorEquals":["jsii-docgen.NpmError.ETARGET"],"IntervalSeconds":300,"MaxAttempts":3,"BackoffRate":2},{"ErrorEquals":["States.Timeout"],"IntervalSeconds":30,"MaxAttempts":3,"BackoffRate":2},{"ErrorEquals":["States.ALL"],"MaxAttempts":3}],"Catch":[{"ErrorEquals":["UnprocessablePackageError"],"Next":"Ignore"},{"ErrorEquals":["States.Timeout"],"ResultPath":"$.error","Next":"Send to Dead Letter Queue"},{"ErrorEquals":["ECS.AmazonECSException","ECS.InvalidParameterException"],"ResultPath":"$.error","Next":"Send to Dead Letter Queue"},{"ErrorEquals":["States.TaskFailed"],"ResultPath":"$.error","Next":"Send to Dead Letter Queue"},{"ErrorEquals":["States.ALL"],"ResultPath":"$.error","Next":"Send to Dead Letter Queue"}],"Type":"Task","TimeoutSeconds":3600,"HeartbeatSeconds":300,"InputPath":"$.docGen.command","ResultPath":"$.docGenOutput","Resource":"arn:", { "Ref": "AWS::Partition", }, @@ -56125,7 +56097,7 @@ Direct link to function: /lambda/home#/functions/", "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}", }, - "S3Key": "21a9e4e9eef44a3ea3e5bb0b325435b9e6f594f80ee6531a594cf3a71bb7ffc0.zip", + "S3Key": "e10e535c1da4def8f4ab158b682f3e0dc3ec931a1908ae52b0d98417d97fdc31.zip", }, "Description": { "Fn::Join": [ @@ -56457,7 +56429,7 @@ RUNBOOK: https://github.com/cdklabs/construct-hub/blob/main/docs/operator-runboo "CLUSTER_NAME": { "Ref": "ConstructHubOrchestrationCluster3D6F0081", }, - "TIMEOUT_MILLIS": "7800000", + "TIMEOUT_MILLIS": "4200000", }, }, "Handler": "index.handler", @@ -57730,7 +57702,7 @@ Warning: messages that resulted in a failed exectuion will NOT be in the DLQ!", ], "Essential": true, "Image": { - "Fn::Sub": "\${AWS::AccountId}.dkr.ecr.\${AWS::Region}.\${AWS::URLSuffix}/cdk-hnb659fds-container-assets-\${AWS::AccountId}-\${AWS::Region}:3821e3a8525b6f4f82feb538a4d0bf49df909c998ee7bfd92c687df22fc10e2c", + "Fn::Sub": "\${AWS::AccountId}.dkr.ecr.\${AWS::Region}.\${AWS::URLSuffix}/cdk-hnb659fds-container-assets-\${AWS::AccountId}-\${AWS::Region}:1d2e836747551b0b8349adccc8339ed8d7e0d346de2aaf0b5780148ff197ee65", }, "LogConfiguration": { "LogDriver": "awslogs", @@ -57745,13 +57717,6 @@ Warning: messages that resulted in a failed exectuion will NOT be in the DLQ!", }, }, "Name": "Resource", - "Ulimits": [ - { - "HardLimit": 65535, - "Name": "nofile", - "SoftLimit": 16384, - }, - ], }, ], "Cpu": "4096", @@ -61554,7 +61519,7 @@ Direct link to Lambda function: /lambda/home#/functions/", "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}", }, - "S3Key": "3a1d523580b07c48ca9cc9edd3dd28570fab0ec1376a3e6db55f4b75aab17341.zip", + "S3Key": "479b7c2c78a5d25b70aabd2288e82a1e652419bd69bf0b1e4c2875c1d63390ff.zip", }, "Description": { "Fn::Join": [ @@ -64621,7 +64586,7 @@ Direct link to Lambda function: /lambda/home#/functions/", "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}", }, - "S3Key": "e2f17dcafbec902a3e51708aad2e14c0bc320bb8574f23ea3815be8ba9c1518e.zip", + "S3Key": "d8a3151860146db8454dd22015490c387b05cf78f4bcfebd6979bdc8caa4f0b6.zip", }, "Description": { "Fn::Join": [ diff --git a/src/__tests__/backend/transliterator/__snapshots__/index.test.ts.snap b/src/__tests__/backend/transliterator/__snapshots__/index.test.ts.snap index dc6e5b55c..949fb9920 100644 --- a/src/__tests__/backend/transliterator/__snapshots__/index.test.ts.snap +++ b/src/__tests__/backend/transliterator/__snapshots__/index.test.ts.snap @@ -118,7 +118,7 @@ exports[`CodeArtifact repository 1`] = ` ], "Essential": true, "Image": { - "Fn::Sub": "\${AWS::AccountId}.dkr.ecr.\${AWS::Region}.\${AWS::URLSuffix}/cdk-hnb659fds-container-assets-\${AWS::AccountId}-\${AWS::Region}:3821e3a8525b6f4f82feb538a4d0bf49df909c998ee7bfd92c687df22fc10e2c", + "Fn::Sub": "\${AWS::AccountId}.dkr.ecr.\${AWS::Region}.\${AWS::URLSuffix}/cdk-hnb659fds-container-assets-\${AWS::AccountId}-\${AWS::Region}:1d2e836747551b0b8349adccc8339ed8d7e0d346de2aaf0b5780148ff197ee65", }, "LogConfiguration": { "LogDriver": "awslogs", @@ -133,13 +133,6 @@ exports[`CodeArtifact repository 1`] = ` }, }, "Name": "Resource", - "Ulimits": [ - { - "HardLimit": 65535, - "Name": "nofile", - "SoftLimit": 16384, - }, - ], }, ], "Cpu": "4096", @@ -2433,7 +2426,7 @@ exports[`VPC Endpoints 1`] = ` ], "Essential": true, "Image": { - "Fn::Sub": "\${AWS::AccountId}.dkr.ecr.\${AWS::Region}.\${AWS::URLSuffix}/cdk-hnb659fds-container-assets-\${AWS::AccountId}-\${AWS::Region}:3821e3a8525b6f4f82feb538a4d0bf49df909c998ee7bfd92c687df22fc10e2c", + "Fn::Sub": "\${AWS::AccountId}.dkr.ecr.\${AWS::Region}.\${AWS::URLSuffix}/cdk-hnb659fds-container-assets-\${AWS::AccountId}-\${AWS::Region}:1d2e836747551b0b8349adccc8339ed8d7e0d346de2aaf0b5780148ff197ee65", }, "LogConfiguration": { "LogDriver": "awslogs", @@ -2448,13 +2441,6 @@ exports[`VPC Endpoints 1`] = ` }, }, "Name": "Resource", - "Ulimits": [ - { - "HardLimit": 65535, - "Name": "nofile", - "SoftLimit": 16384, - }, - ], }, ], "Cpu": "4096", @@ -4799,7 +4785,7 @@ exports[`VPC Endpoints and CodeArtifact repository 1`] = ` ], "Essential": true, "Image": { - "Fn::Sub": "\${AWS::AccountId}.dkr.ecr.\${AWS::Region}.\${AWS::URLSuffix}/cdk-hnb659fds-container-assets-\${AWS::AccountId}-\${AWS::Region}:3821e3a8525b6f4f82feb538a4d0bf49df909c998ee7bfd92c687df22fc10e2c", + "Fn::Sub": "\${AWS::AccountId}.dkr.ecr.\${AWS::Region}.\${AWS::URLSuffix}/cdk-hnb659fds-container-assets-\${AWS::AccountId}-\${AWS::Region}:1d2e836747551b0b8349adccc8339ed8d7e0d346de2aaf0b5780148ff197ee65", }, "LogConfiguration": { "LogDriver": "awslogs", @@ -4814,13 +4800,6 @@ exports[`VPC Endpoints and CodeArtifact repository 1`] = ` }, }, "Name": "Resource", - "Ulimits": [ - { - "HardLimit": 65535, - "Name": "nofile", - "SoftLimit": 16384, - }, - ], }, ], "Cpu": "4096", @@ -7110,7 +7089,7 @@ exports[`basic use 1`] = ` ], "Essential": true, "Image": { - "Fn::Sub": "\${AWS::AccountId}.dkr.ecr.\${AWS::Region}.\${AWS::URLSuffix}/cdk-hnb659fds-container-assets-\${AWS::AccountId}-\${AWS::Region}:3821e3a8525b6f4f82feb538a4d0bf49df909c998ee7bfd92c687df22fc10e2c", + "Fn::Sub": "\${AWS::AccountId}.dkr.ecr.\${AWS::Region}.\${AWS::URLSuffix}/cdk-hnb659fds-container-assets-\${AWS::AccountId}-\${AWS::Region}:1d2e836747551b0b8349adccc8339ed8d7e0d346de2aaf0b5780148ff197ee65", }, "LogConfiguration": { "LogDriver": "awslogs", @@ -7125,13 +7104,6 @@ exports[`basic use 1`] = ` }, }, "Name": "Resource", - "Ulimits": [ - { - "HardLimit": 65535, - "Name": "nofile", - "SoftLimit": 16384, - }, - ], }, ], "Cpu": "4096", diff --git a/src/__tests__/devapp/__snapshots__/snapshot.test.ts.snap b/src/__tests__/devapp/__snapshots__/snapshot.test.ts.snap index cad22eaf4..fc61b7563 100644 --- a/src/__tests__/devapp/__snapshots__/snapshot.test.ts.snap +++ b/src/__tests__/devapp/__snapshots__/snapshot.test.ts.snap @@ -2435,7 +2435,7 @@ Direct link to the function: /lambda/home#/functions/", "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}", }, - "S3Key": "adc968265edfc49e5f153ec2f04b9ab181f039f99c730ada3b42d3699e689488.zip", + "S3Key": "b3920e9d711ceea73db8f90e0463707c1b628786ee1159f1e061edd9f5b8fad6.zip", }, "Description": "Release note RSS feed updater", "Environment": { @@ -2665,7 +2665,7 @@ Direct link to the function: /lambda/home#/functions/", "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}", }, - "S3Key": "af987f9430783f68b7d6f0b8fae90dda93e0ce2e0a9f79d4254bab88bf5a5e16.zip", + "S3Key": "73f555c1687cfc39f88b7c7cbfa4cf42f9a9a8f8ae51aba57c67b39c1c9660de.zip", }, "Description": "[ConstructHub/Ingestion] Ingests new package versions into the Construct Hub", "Environment": { @@ -5325,7 +5325,7 @@ Direct link to function: /lambda/home#/functions/", "Fn::Join": [ "", [ - "{"StartAt":"Track Execution Infos","States":{"Track Execution Infos":{"Type":"Pass","ResultPath":"$.$TaskExecution","InputPath":"$$.Execution","Parameters":{"Id.$":"$.Id","Name.$":"$.Name","RoleArn.$":"$.RoleArn","StartTime.$":"$.StartTime"},"Next":"Prepare doc-gen ECS Command"},"Prepare doc-gen ECS Command":{"Type":"Pass","ResultPath":"$.docGen","Parameters":{"command.$":"States.Array(States.JsonToString($))"},"Next":"Generate docs"},"Generate docs":{"Next":"Check whether catalog needs udpating","Retry":[{"ErrorEquals":["jsii-docgen.NoSpaceLeftOnDevice"],"MaxAttempts":0},{"ErrorEquals":["ECS.AmazonECSException","ECS.InvalidParameterException","jsii-docgen.NpmError.E429","jsii-codgen.NpmError.EPROTO"],"IntervalSeconds":60,"MaxAttempts":45,"BackoffRate":1.1},{"ErrorEquals":["jsii-docgen.NpmError.ETARGET"],"IntervalSeconds":300,"MaxAttempts":3,"BackoffRate":2},{"ErrorEquals":["States.Timeout"],"MaxAttempts":5},{"ErrorEquals":["States.ALL"],"MaxAttempts":3}],"Catch":[{"ErrorEquals":["UnprocessablePackageError"],"Next":"Ignore"},{"ErrorEquals":["States.Timeout"],"ResultPath":"$.error","Next":"Send to Dead Letter Queue"},{"ErrorEquals":["ECS.AmazonECSException","ECS.InvalidParameterException"],"ResultPath":"$.error","Next":"Send to Dead Letter Queue"},{"ErrorEquals":["States.TaskFailed"],"ResultPath":"$.error","Next":"Send to Dead Letter Queue"},{"ErrorEquals":["States.ALL"],"ResultPath":"$.error","Next":"Send to Dead Letter Queue"}],"Type":"Task","TimeoutSeconds":7200,"HeartbeatSeconds":600,"InputPath":"$.docGen.command","ResultPath":"$.docGenOutput","Resource":"arn:", + "{"StartAt":"Track Execution Infos","States":{"Track Execution Infos":{"Type":"Pass","ResultPath":"$.$TaskExecution","InputPath":"$$.Execution","Parameters":{"Id.$":"$.Id","Name.$":"$.Name","RoleArn.$":"$.RoleArn","StartTime.$":"$.StartTime"},"Next":"Prepare doc-gen ECS Command"},"Prepare doc-gen ECS Command":{"Type":"Pass","ResultPath":"$.docGen","Parameters":{"command.$":"States.Array(States.JsonToString($))"},"Next":"Generate docs"},"Generate docs":{"Next":"Check whether catalog needs udpating","Retry":[{"ErrorEquals":["jsii-docgen.NoSpaceLeftOnDevice"],"MaxAttempts":0},{"ErrorEquals":["ECS.AmazonECSException","ECS.InvalidParameterException","jsii-docgen.NpmError.E429","jsii-codgen.NpmError.EPROTO"],"IntervalSeconds":60,"MaxAttempts":45,"BackoffRate":1.1},{"ErrorEquals":["jsii-docgen.NpmError.ETARGET"],"IntervalSeconds":300,"MaxAttempts":3,"BackoffRate":2},{"ErrorEquals":["States.Timeout"],"IntervalSeconds":30,"MaxAttempts":3,"BackoffRate":2},{"ErrorEquals":["States.ALL"],"MaxAttempts":3}],"Catch":[{"ErrorEquals":["UnprocessablePackageError"],"Next":"Ignore"},{"ErrorEquals":["States.Timeout"],"ResultPath":"$.error","Next":"Send to Dead Letter Queue"},{"ErrorEquals":["ECS.AmazonECSException","ECS.InvalidParameterException"],"ResultPath":"$.error","Next":"Send to Dead Letter Queue"},{"ErrorEquals":["States.TaskFailed"],"ResultPath":"$.error","Next":"Send to Dead Letter Queue"},{"ErrorEquals":["States.ALL"],"ResultPath":"$.error","Next":"Send to Dead Letter Queue"}],"Type":"Task","TimeoutSeconds":3600,"HeartbeatSeconds":300,"InputPath":"$.docGen.command","ResultPath":"$.docGenOutput","Resource":"arn:", { "Ref": "AWS::Partition", }, @@ -5408,7 +5408,7 @@ Direct link to function: /lambda/home#/functions/", "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}", }, - "S3Key": "21a9e4e9eef44a3ea3e5bb0b325435b9e6f594f80ee6531a594cf3a71bb7ffc0.zip", + "S3Key": "e10e535c1da4def8f4ab158b682f3e0dc3ec931a1908ae52b0d98417d97fdc31.zip", }, "Description": { "Fn::Join": [ @@ -5737,7 +5737,7 @@ RUNBOOK: https://github.com/cdklabs/construct-hub/blob/main/docs/operator-runboo "CLUSTER_NAME": { "Ref": "ConstructHubOrchestrationCluster3D6F0081", }, - "TIMEOUT_MILLIS": "7800000", + "TIMEOUT_MILLIS": "4200000", }, }, "Handler": "index.handler", @@ -7071,7 +7071,7 @@ Warning: messages that resulted in a failed exectuion will NOT be in the DLQ!", ], "Essential": true, "Image": { - "Fn::Sub": "\${AWS::AccountId}.dkr.ecr.\${AWS::Region}.\${AWS::URLSuffix}/cdk-hnb659fds-container-assets-\${AWS::AccountId}-\${AWS::Region}:3821e3a8525b6f4f82feb538a4d0bf49df909c998ee7bfd92c687df22fc10e2c", + "Fn::Sub": "\${AWS::AccountId}.dkr.ecr.\${AWS::Region}.\${AWS::URLSuffix}/cdk-hnb659fds-container-assets-\${AWS::AccountId}-\${AWS::Region}:1d2e836747551b0b8349adccc8339ed8d7e0d346de2aaf0b5780148ff197ee65", }, "LogConfiguration": { "LogDriver": "awslogs", @@ -7086,13 +7086,6 @@ Warning: messages that resulted in a failed exectuion will NOT be in the DLQ!", }, }, "Name": "Resource", - "Ulimits": [ - { - "HardLimit": 65535, - "Name": "nofile", - "SoftLimit": 16384, - }, - ], }, ], "Cpu": "4096", @@ -11843,7 +11836,7 @@ Direct link to Lambda function: /lambda/home#/functions/", "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}", }, - "S3Key": "3a1d523580b07c48ca9cc9edd3dd28570fab0ec1376a3e6db55f4b75aab17341.zip", + "S3Key": "479b7c2c78a5d25b70aabd2288e82a1e652419bd69bf0b1e4c2875c1d63390ff.zip", }, "Description": { "Fn::Join": [ @@ -15041,7 +15034,7 @@ Direct link to Lambda function: /lambda/home#/functions/", "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}", }, - "S3Key": "e2f17dcafbec902a3e51708aad2e14c0bc320bb8574f23ea3815be8ba9c1518e.zip", + "S3Key": "d8a3151860146db8454dd22015490c387b05cf78f4bcfebd6979bdc8caa4f0b6.zip", }, "Description": { "Fn::Join": [ diff --git a/src/backend/orchestration/index.ts b/src/backend/orchestration/index.ts index 8d7871b37..eec694b4f 100644 --- a/src/backend/orchestration/index.ts +++ b/src/backend/orchestration/index.ts @@ -335,7 +335,8 @@ export class Orchestration extends Construct { .otherwise(new Succeed(this, 'Done')) ); - const transliteratorTimeout = Duration.hours(2); + // aws-cdk-lib is one of the biggest libs and runs in ~8min + const transliteratorTimeout = Duration.hours(1); this.ecsCluster = new Cluster(this, 'Cluster', { containerInsights: true, @@ -380,7 +381,7 @@ export class Orchestration extends Construct { // cases the first heartbeat may take a while to come back due to // the time it takes to provision the task in the cluster, so we // give a more generous buffer here. - heartbeat: Duration.minutes(10), + heartbeat: Duration.minutes(5), }) // Do not retry NoSpaceLeftOnDevice errors, these are typically not transient. .addRetry({ @@ -407,7 +408,9 @@ export class Orchestration extends Construct { errors: ['States.Timeout'], // The task has stopped responding, or is just taking a long time to provision // To compensate we'll give more retries and pause between them in // case it's just a transient issue. - maxAttempts: 5, + backoffRate: 2, + interval: Duration.seconds(30), + maxAttempts: 3, }) .addRetry({ maxAttempts: 3 }) .addCatch(ignore, { errors: [UNPROCESSABLE_PACKAGE_ERROR_NAME] }) diff --git a/src/backend/transliterator/index.ts b/src/backend/transliterator/index.ts index 2919c54a7..185340d28 100644 --- a/src/backend/transliterator/index.ts +++ b/src/backend/transliterator/index.ts @@ -13,7 +13,6 @@ import { ICluster, LogDrivers, OperatingSystemFamily, - UlimitName, } from 'aws-cdk-lib/aws-ecs'; import { Effect, PolicyStatement } from 'aws-cdk-lib/aws-iam'; import { ILogGroup, LogGroup, RetentionDays } from 'aws-cdk-lib/aws-logs'; @@ -174,16 +173,26 @@ export class Transliterator extends Construct { }, }), }); - // Encountered an error of "EMFILE: too many open files" in ECS. - // Default nofile ulimit is 1024/4096. - // - // For ECS ulimit documentation see: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_Ulimit.html - // For construct hub tracking issue see: https://github.com/cdklabs/construct-hub/issues/982 - this.containerDefinition.addUlimits({ - name: UlimitName.NOFILE, // file descriptors - softLimit: 16_384, - hardLimit: 65_535, - }); + + /** + * Construct hub tracking issue: https://github.com/cdklabs/construct-hub/issues/982 + * + * Encountered one of these errors in ECS: + * - EMFILE: too many open files + * - Error: getaddrinfo EBUSY states.us-east-1.amazonaws.com + * + * This issue occurs because the container is running out of file descriptors, to read files or make network requests. + * Normally this limit is configured via the `ulimit` setting. However on AWS Fargate a much lower limit applies. + * For ECS ulimit documentation see: https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_Ulimit.html + * + * We currently don't believe a specific ulimit configuration is needed, the defaults (which are the max) should work. + * For references, here is the previously used config. + */ + // this.containerDefinition.addUlimits({ + // name: UlimitName.NOFILE, // file descriptors + // softLimit: 16_384, + // hardLimit: 65_535, + // }); repository?.grantReadFromRepository(this.taskDefinition.taskRole); diff --git a/src/backend/transliterator/transliterator.ecs-entrypoint.ts b/src/backend/transliterator/transliterator.ecs-entrypoint.ts index 760cdd9bf..074665a6b 100644 --- a/src/backend/transliterator/transliterator.ecs-entrypoint.ts +++ b/src/backend/transliterator/transliterator.ecs-entrypoint.ts @@ -39,7 +39,8 @@ function sendHeartbeat(): void { } async function main(): Promise { - const heartbeat = setInterval(sendHeartbeat, 180_000); + // Heartbeat is expected every 5min + const heartbeat = setInterval(sendHeartbeat, 90_000); try { const input: readonly any[] = argv.slice(2).map((text) => JSON.parse(text)); diff --git a/src/caching.ts b/src/caching.ts index 465da2acb..ebdb46f0a 100644 --- a/src/caching.ts +++ b/src/caching.ts @@ -1,5 +1,8 @@ -import { CacheControl } from 'aws-cdk-lib/aws-s3-deployment'; -import { Duration } from 'aws-cdk-lib/core'; +// This file MUST NOT import anything from aws-cdk-lib +// If you do, it will cause aws-cdk-lib to be bundled into the lambda handlers. +// Bundling aws-cdk-lib, will make them 30mb+ of size, +// and could potentially break the handler due to importing dodgy transitive dependencies. +// Yes this has happened before. /** * Caching policies for serving data for the Construct Hub web app. @@ -10,21 +13,21 @@ export class CacheStrategy { */ public static default() { return new CacheStrategy([ - CacheControl.setPublic(), - CacheControl.maxAge(Duration.minutes(5)), - CacheControl.mustRevalidate(), - CacheControl.sMaxAge(Duration.minutes(1)), - CacheControl.proxyRevalidate(), + 'public', + 'max-age=300', + 'must-revalidate', + 's-maxage=60', + 'proxy-revalidate', ]); } - private constructor(private readonly cacheControl: CacheControl[]) {} + private constructor(private readonly cacheControl: string[]) {} - public toString() { - return this.cacheControl.map((c) => c.value).join(', '); + public toString(): string { + return this.cacheControl.join(', '); } - public toArray() { + public toArray(): string[] { return this.cacheControl; } } diff --git a/src/webapp/index.ts b/src/webapp/index.ts index 12217b683..836ad3434 100644 --- a/src/webapp/index.ts +++ b/src/webapp/index.ts @@ -322,7 +322,9 @@ export class WebApp extends Construct { distribution: this.distribution, prune: false, sources: [s3deploy.Source.asset(webappDir)], - cacheControl: CacheStrategy.default().toArray(), + cacheControl: CacheStrategy.default() + .toArray() + .map(s3deploy.CacheControl.fromString), }); // Generate config.json to customize frontend behavior @@ -363,7 +365,9 @@ export class WebApp extends Construct { destinationBucket: this.bucket, distribution: this.distribution, prune: false, - cacheControl: CacheStrategy.default().toArray(), + cacheControl: CacheStrategy.default() + .toArray() + .map(s3deploy.CacheControl.fromString), }); new CfnOutput(this, 'DomainName', { diff --git a/test/integ.transliterator.ecstask.ts.snapshot/Stack.template.json b/test/integ.transliterator.ecstask.ts.snapshot/Stack.template.json index df6056e35..ff267c7a1 100644 --- a/test/integ.transliterator.ecstask.ts.snapshot/Stack.template.json +++ b/test/integ.transliterator.ecstask.ts.snapshot/Stack.template.json @@ -1614,14 +1614,7 @@ } } }, - "Name": "Resource", - "Ulimits": [ - { - "HardLimit": 65535, - "Name": "nofile", - "SoftLimit": 16384 - } - ] + "Name": "Resource" } ], "Cpu": "4096",