@mapbox/cloudfriend 8.0.0-0 → 8.0.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.
Files changed (22) hide show
  1. package/.nyc_output/{70bddb17-d1d1-4971-b79f-5fece324d8d2.json → c5b5c951-37d5-4058-a3e4-939c91352f33.json} +1 -1
  2. package/.nyc_output/{243d5bfa-9e45-4291-a944-4258a7a28148.json → d9683579-e4df-4a8c-916b-585093031713.json} +1 -1
  3. package/.nyc_output/processinfo/c5b5c951-37d5-4058-a3e4-939c91352f33.json +1 -0
  4. package/.nyc_output/processinfo/d9683579-e4df-4a8c-916b-585093031713.json +1 -0
  5. package/.nyc_output/processinfo/index.json +1 -1
  6. package/lib/shortcuts/api.md +10 -7
  7. package/lib/shortcuts/scheduled-lambda.js +9 -4
  8. package/package.json +1 -1
  9. package/test/fixtures/shortcuts/hookshot-github-secret-ref.json +2 -2
  10. package/test/fixtures/shortcuts/hookshot-github-secret-string.json +2 -2
  11. package/test/fixtures/shortcuts/hookshot-github.json +2 -2
  12. package/test/fixtures/shortcuts/hookshot-passthrough-access-log-format.json +2 -2
  13. package/test/fixtures/shortcuts/hookshot-passthrough-alarms.json +2 -2
  14. package/test/fixtures/shortcuts/hookshot-passthrough-enhanced-logging.json +2 -2
  15. package/test/fixtures/shortcuts/hookshot-passthrough-full-blown-logging.json +2 -2
  16. package/test/fixtures/shortcuts/hookshot-passthrough-logging.json +2 -2
  17. package/test/fixtures/shortcuts/hookshot-passthrough.json +2 -2
  18. package/test/fixtures/shortcuts/scheduled-lambda-defaults.json +1 -1
  19. package/test/fixtures/shortcuts/scheduled-lambda-full.json +1 -44
  20. package/test/shortcuts.test.js +1 -1
  21. package/.nyc_output/processinfo/243d5bfa-9e45-4291-a944-4258a7a28148.json +0 -1
  22. package/.nyc_output/processinfo/70bddb17-d1d1-4971-b79f-5fece324d8d2.json +0 -1
@@ -0,0 +1 @@
1
+ {"uuid":"c5b5c951-37d5-4058-a3e4-939c91352f33","parent":null,"pid":35081,"argv":["/Users/bilindhajer/.nvm/versions/node/v16.20.0/bin/node","/Users/bilindhajer/cloudfriend/node_modules/.bin/tape","test/bin.test.js","test/index.test.js","test/shortcuts.test.js"],"execArgv":[],"cwd":"/Users/bilindhajer/cloudfriend","time":1707332421303,"ppid":35079,"root":"9f91a73f-283d-4f4d-a00a-ce9e0406f357","coverageFilename":"/Users/bilindhajer/cloudfriend/.nyc_output/c5b5c951-37d5-4058-a3e4-939c91352f33.json","files":["/Users/bilindhajer/cloudfriend/index.js","/Users/bilindhajer/cloudfriend/lib/intrinsic.js","/Users/bilindhajer/cloudfriend/lib/conditions.js","/Users/bilindhajer/cloudfriend/lib/rules.js","/Users/bilindhajer/cloudfriend/lib/pseudo.js","/Users/bilindhajer/cloudfriend/lib/build.js","/Users/bilindhajer/cloudfriend/lib/validate.js","/Users/bilindhajer/cloudfriend/lib/merge.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/index.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/lambda.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/service-role.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/role.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/scheduled-lambda.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/event-lambda.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/queue-lambda.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/stream-lambda.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/cross-account-role.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/queue.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/s3-kinesis-firehose.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/kinesis-firehose-base.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/glue-database.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/glue-table.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/glue-json-table.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/glue-orc-table.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/glue-parquet-table.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/glue-presto-view.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/glue-spark-view.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/hookshot.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/log-subscription-lambda.js"]}
@@ -0,0 +1 @@
1
+ {"uuid":"d9683579-e4df-4a8c-916b-585093031713","parent":"c5b5c951-37d5-4058-a3e4-939c91352f33","pid":35082,"argv":["/Users/bilindhajer/.nvm/versions/node/v16.20.0/bin/node","/Users/bilindhajer/cloudfriend/bin/build-template.js","/Users/bilindhajer/cloudfriend/test/fixtures/sync-args.js","--this","that","-r","cn-north-1"],"execArgv":[],"cwd":"/Users/bilindhajer/cloudfriend","time":1707332422288,"ppid":35081,"root":"9f91a73f-283d-4f4d-a00a-ce9e0406f357","coverageFilename":"/Users/bilindhajer/cloudfriend/.nyc_output/d9683579-e4df-4a8c-916b-585093031713.json","files":["/Users/bilindhajer/cloudfriend/bin/build-template.js","/Users/bilindhajer/cloudfriend/index.js","/Users/bilindhajer/cloudfriend/lib/intrinsic.js","/Users/bilindhajer/cloudfriend/lib/conditions.js","/Users/bilindhajer/cloudfriend/lib/rules.js","/Users/bilindhajer/cloudfriend/lib/pseudo.js","/Users/bilindhajer/cloudfriend/lib/build.js","/Users/bilindhajer/cloudfriend/lib/validate.js","/Users/bilindhajer/cloudfriend/lib/merge.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/index.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/lambda.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/service-role.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/role.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/scheduled-lambda.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/event-lambda.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/queue-lambda.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/stream-lambda.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/cross-account-role.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/queue.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/s3-kinesis-firehose.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/kinesis-firehose-base.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/glue-database.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/glue-table.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/glue-json-table.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/glue-orc-table.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/glue-parquet-table.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/glue-presto-view.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/glue-spark-view.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/hookshot.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/log-subscription-lambda.js"]}
@@ -1 +1 @@
1
- {"processes":{"243d5bfa-9e45-4291-a944-4258a7a28148":{"parent":"70bddb17-d1d1-4971-b79f-5fece324d8d2","children":[]},"70bddb17-d1d1-4971-b79f-5fece324d8d2":{"parent":null,"children":["243d5bfa-9e45-4291-a944-4258a7a28148"]}},"files":{"/Users/bilindhajer/cloudfriend/bin/build-template.js":["243d5bfa-9e45-4291-a944-4258a7a28148"],"/Users/bilindhajer/cloudfriend/index.js":["243d5bfa-9e45-4291-a944-4258a7a28148","70bddb17-d1d1-4971-b79f-5fece324d8d2"],"/Users/bilindhajer/cloudfriend/lib/intrinsic.js":["243d5bfa-9e45-4291-a944-4258a7a28148","70bddb17-d1d1-4971-b79f-5fece324d8d2"],"/Users/bilindhajer/cloudfriend/lib/conditions.js":["243d5bfa-9e45-4291-a944-4258a7a28148","70bddb17-d1d1-4971-b79f-5fece324d8d2"],"/Users/bilindhajer/cloudfriend/lib/rules.js":["243d5bfa-9e45-4291-a944-4258a7a28148","70bddb17-d1d1-4971-b79f-5fece324d8d2"],"/Users/bilindhajer/cloudfriend/lib/pseudo.js":["243d5bfa-9e45-4291-a944-4258a7a28148","70bddb17-d1d1-4971-b79f-5fece324d8d2"],"/Users/bilindhajer/cloudfriend/lib/build.js":["243d5bfa-9e45-4291-a944-4258a7a28148","70bddb17-d1d1-4971-b79f-5fece324d8d2"],"/Users/bilindhajer/cloudfriend/lib/validate.js":["243d5bfa-9e45-4291-a944-4258a7a28148","70bddb17-d1d1-4971-b79f-5fece324d8d2"],"/Users/bilindhajer/cloudfriend/lib/merge.js":["243d5bfa-9e45-4291-a944-4258a7a28148","70bddb17-d1d1-4971-b79f-5fece324d8d2"],"/Users/bilindhajer/cloudfriend/lib/shortcuts/index.js":["243d5bfa-9e45-4291-a944-4258a7a28148","70bddb17-d1d1-4971-b79f-5fece324d8d2"],"/Users/bilindhajer/cloudfriend/lib/shortcuts/lambda.js":["243d5bfa-9e45-4291-a944-4258a7a28148","70bddb17-d1d1-4971-b79f-5fece324d8d2"],"/Users/bilindhajer/cloudfriend/lib/shortcuts/service-role.js":["243d5bfa-9e45-4291-a944-4258a7a28148","70bddb17-d1d1-4971-b79f-5fece324d8d2"],"/Users/bilindhajer/cloudfriend/lib/shortcuts/role.js":["243d5bfa-9e45-4291-a944-4258a7a28148","70bddb17-d1d1-4971-b79f-5fece324d8d2"],"/Users/bilindhajer/cloudfriend/lib/shortcuts/scheduled-lambda.js":["243d5bfa-9e45-4291-a944-4258a7a28148","70bddb17-d1d1-4971-b79f-5fece324d8d2"],"/Users/bilindhajer/cloudfriend/lib/shortcuts/event-lambda.js":["243d5bfa-9e45-4291-a944-4258a7a28148","70bddb17-d1d1-4971-b79f-5fece324d8d2"],"/Users/bilindhajer/cloudfriend/lib/shortcuts/queue-lambda.js":["243d5bfa-9e45-4291-a944-4258a7a28148","70bddb17-d1d1-4971-b79f-5fece324d8d2"],"/Users/bilindhajer/cloudfriend/lib/shortcuts/stream-lambda.js":["243d5bfa-9e45-4291-a944-4258a7a28148","70bddb17-d1d1-4971-b79f-5fece324d8d2"],"/Users/bilindhajer/cloudfriend/lib/shortcuts/cross-account-role.js":["243d5bfa-9e45-4291-a944-4258a7a28148","70bddb17-d1d1-4971-b79f-5fece324d8d2"],"/Users/bilindhajer/cloudfriend/lib/shortcuts/queue.js":["243d5bfa-9e45-4291-a944-4258a7a28148","70bddb17-d1d1-4971-b79f-5fece324d8d2"],"/Users/bilindhajer/cloudfriend/lib/shortcuts/s3-kinesis-firehose.js":["243d5bfa-9e45-4291-a944-4258a7a28148","70bddb17-d1d1-4971-b79f-5fece324d8d2"],"/Users/bilindhajer/cloudfriend/lib/shortcuts/kinesis-firehose-base.js":["243d5bfa-9e45-4291-a944-4258a7a28148","70bddb17-d1d1-4971-b79f-5fece324d8d2"],"/Users/bilindhajer/cloudfriend/lib/shortcuts/glue-database.js":["243d5bfa-9e45-4291-a944-4258a7a28148","70bddb17-d1d1-4971-b79f-5fece324d8d2"],"/Users/bilindhajer/cloudfriend/lib/shortcuts/glue-table.js":["243d5bfa-9e45-4291-a944-4258a7a28148","70bddb17-d1d1-4971-b79f-5fece324d8d2"],"/Users/bilindhajer/cloudfriend/lib/shortcuts/glue-json-table.js":["243d5bfa-9e45-4291-a944-4258a7a28148","70bddb17-d1d1-4971-b79f-5fece324d8d2"],"/Users/bilindhajer/cloudfriend/lib/shortcuts/glue-orc-table.js":["243d5bfa-9e45-4291-a944-4258a7a28148","70bddb17-d1d1-4971-b79f-5fece324d8d2"],"/Users/bilindhajer/cloudfriend/lib/shortcuts/glue-parquet-table.js":["243d5bfa-9e45-4291-a944-4258a7a28148","70bddb17-d1d1-4971-b79f-5fece324d8d2"],"/Users/bilindhajer/cloudfriend/lib/shortcuts/glue-presto-view.js":["243d5bfa-9e45-4291-a944-4258a7a28148","70bddb17-d1d1-4971-b79f-5fece324d8d2"],"/Users/bilindhajer/cloudfriend/lib/shortcuts/glue-spark-view.js":["243d5bfa-9e45-4291-a944-4258a7a28148","70bddb17-d1d1-4971-b79f-5fece324d8d2"],"/Users/bilindhajer/cloudfriend/lib/shortcuts/hookshot.js":["243d5bfa-9e45-4291-a944-4258a7a28148","70bddb17-d1d1-4971-b79f-5fece324d8d2"],"/Users/bilindhajer/cloudfriend/lib/shortcuts/log-subscription-lambda.js":["243d5bfa-9e45-4291-a944-4258a7a28148","70bddb17-d1d1-4971-b79f-5fece324d8d2"]},"externalIds":{}}
1
+ {"processes":{"c5b5c951-37d5-4058-a3e4-939c91352f33":{"parent":null,"children":["d9683579-e4df-4a8c-916b-585093031713"]},"d9683579-e4df-4a8c-916b-585093031713":{"parent":"c5b5c951-37d5-4058-a3e4-939c91352f33","children":[]}},"files":{"/Users/bilindhajer/cloudfriend/index.js":["c5b5c951-37d5-4058-a3e4-939c91352f33","d9683579-e4df-4a8c-916b-585093031713"],"/Users/bilindhajer/cloudfriend/lib/intrinsic.js":["c5b5c951-37d5-4058-a3e4-939c91352f33","d9683579-e4df-4a8c-916b-585093031713"],"/Users/bilindhajer/cloudfriend/lib/conditions.js":["c5b5c951-37d5-4058-a3e4-939c91352f33","d9683579-e4df-4a8c-916b-585093031713"],"/Users/bilindhajer/cloudfriend/lib/rules.js":["c5b5c951-37d5-4058-a3e4-939c91352f33","d9683579-e4df-4a8c-916b-585093031713"],"/Users/bilindhajer/cloudfriend/lib/pseudo.js":["c5b5c951-37d5-4058-a3e4-939c91352f33","d9683579-e4df-4a8c-916b-585093031713"],"/Users/bilindhajer/cloudfriend/lib/build.js":["c5b5c951-37d5-4058-a3e4-939c91352f33","d9683579-e4df-4a8c-916b-585093031713"],"/Users/bilindhajer/cloudfriend/lib/validate.js":["c5b5c951-37d5-4058-a3e4-939c91352f33","d9683579-e4df-4a8c-916b-585093031713"],"/Users/bilindhajer/cloudfriend/lib/merge.js":["c5b5c951-37d5-4058-a3e4-939c91352f33","d9683579-e4df-4a8c-916b-585093031713"],"/Users/bilindhajer/cloudfriend/lib/shortcuts/index.js":["c5b5c951-37d5-4058-a3e4-939c91352f33","d9683579-e4df-4a8c-916b-585093031713"],"/Users/bilindhajer/cloudfriend/lib/shortcuts/lambda.js":["c5b5c951-37d5-4058-a3e4-939c91352f33","d9683579-e4df-4a8c-916b-585093031713"],"/Users/bilindhajer/cloudfriend/lib/shortcuts/service-role.js":["c5b5c951-37d5-4058-a3e4-939c91352f33","d9683579-e4df-4a8c-916b-585093031713"],"/Users/bilindhajer/cloudfriend/lib/shortcuts/role.js":["c5b5c951-37d5-4058-a3e4-939c91352f33","d9683579-e4df-4a8c-916b-585093031713"],"/Users/bilindhajer/cloudfriend/lib/shortcuts/scheduled-lambda.js":["c5b5c951-37d5-4058-a3e4-939c91352f33","d9683579-e4df-4a8c-916b-585093031713"],"/Users/bilindhajer/cloudfriend/lib/shortcuts/event-lambda.js":["c5b5c951-37d5-4058-a3e4-939c91352f33","d9683579-e4df-4a8c-916b-585093031713"],"/Users/bilindhajer/cloudfriend/lib/shortcuts/queue-lambda.js":["c5b5c951-37d5-4058-a3e4-939c91352f33","d9683579-e4df-4a8c-916b-585093031713"],"/Users/bilindhajer/cloudfriend/lib/shortcuts/stream-lambda.js":["c5b5c951-37d5-4058-a3e4-939c91352f33","d9683579-e4df-4a8c-916b-585093031713"],"/Users/bilindhajer/cloudfriend/lib/shortcuts/cross-account-role.js":["c5b5c951-37d5-4058-a3e4-939c91352f33","d9683579-e4df-4a8c-916b-585093031713"],"/Users/bilindhajer/cloudfriend/lib/shortcuts/queue.js":["c5b5c951-37d5-4058-a3e4-939c91352f33","d9683579-e4df-4a8c-916b-585093031713"],"/Users/bilindhajer/cloudfriend/lib/shortcuts/s3-kinesis-firehose.js":["c5b5c951-37d5-4058-a3e4-939c91352f33","d9683579-e4df-4a8c-916b-585093031713"],"/Users/bilindhajer/cloudfriend/lib/shortcuts/kinesis-firehose-base.js":["c5b5c951-37d5-4058-a3e4-939c91352f33","d9683579-e4df-4a8c-916b-585093031713"],"/Users/bilindhajer/cloudfriend/lib/shortcuts/glue-database.js":["c5b5c951-37d5-4058-a3e4-939c91352f33","d9683579-e4df-4a8c-916b-585093031713"],"/Users/bilindhajer/cloudfriend/lib/shortcuts/glue-table.js":["c5b5c951-37d5-4058-a3e4-939c91352f33","d9683579-e4df-4a8c-916b-585093031713"],"/Users/bilindhajer/cloudfriend/lib/shortcuts/glue-json-table.js":["c5b5c951-37d5-4058-a3e4-939c91352f33","d9683579-e4df-4a8c-916b-585093031713"],"/Users/bilindhajer/cloudfriend/lib/shortcuts/glue-orc-table.js":["c5b5c951-37d5-4058-a3e4-939c91352f33","d9683579-e4df-4a8c-916b-585093031713"],"/Users/bilindhajer/cloudfriend/lib/shortcuts/glue-parquet-table.js":["c5b5c951-37d5-4058-a3e4-939c91352f33","d9683579-e4df-4a8c-916b-585093031713"],"/Users/bilindhajer/cloudfriend/lib/shortcuts/glue-presto-view.js":["c5b5c951-37d5-4058-a3e4-939c91352f33","d9683579-e4df-4a8c-916b-585093031713"],"/Users/bilindhajer/cloudfriend/lib/shortcuts/glue-spark-view.js":["c5b5c951-37d5-4058-a3e4-939c91352f33","d9683579-e4df-4a8c-916b-585093031713"],"/Users/bilindhajer/cloudfriend/lib/shortcuts/hookshot.js":["c5b5c951-37d5-4058-a3e4-939c91352f33","d9683579-e4df-4a8c-916b-585093031713"],"/Users/bilindhajer/cloudfriend/lib/shortcuts/log-subscription-lambda.js":["c5b5c951-37d5-4058-a3e4-939c91352f33","d9683579-e4df-4a8c-916b-585093031713"],"/Users/bilindhajer/cloudfriend/bin/build-template.js":["d9683579-e4df-4a8c-916b-585093031713"]},"externalIds":{}}
@@ -670,12 +670,13 @@ a Lambda permission.
670
670
 
671
671
  ### new ScheduledLambda(options)
672
672
 
673
- | Param | Type | Description |
674
- | --- | --- | --- |
675
- | options | <code>Object</code> | Extends the options for [`Lambda`](#lambda) with the following additional attributes: |
676
- | options.ScheduleExpression | <code>String</code> | See [AWS documentation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html#cfn-events-rule-scheduleexpression). |
677
- | [options.ScheduleRoleArn] | <code>String</code> | If specified, the eventbride scheduler will use this role to invoke your lambda . If not specified a service role with the correct scoped permissions is created for you. See [AWS documentation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-scheduler-schedule-target.html#cfn-scheduler-schedule-target-rolearn) |
678
- | [options.ScheduleGroupName] | <code>String</code> | See [AWS documentation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-scheduler-schedule.html#cfn-scheduler-schedule-groupname). |
673
+ | Param | Type | Default | Description |
674
+ | --- | --- | --- | --- |
675
+ | options | <code>Object</code> | | Extends the options for [`Lambda`](#lambda) with the following additional attributes: |
676
+ | options.ScheduleExpression | <code>String</code> | | See [AWS documentation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html#cfn-events-rule-scheduleexpression). |
677
+ | [options.ScheduleRoleArn] | <code>String</code> | | If specified, the eventbridge scheduler schedule will use this role to invoke your lambda . If not specified a service role with the correct scoped permissions is created for you. See [AWS documentation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-scheduler-schedule-target.html#cfn-scheduler-schedule-target-rolearn) |
678
+ | [options.ScheduleGroupName] | <code>String</code> | | If specified, the eventbridge scheduler schedule is associated with this preexisting schedule group. If not specified the schedule is associated with the default schedule group. Note you cannot change a schedule's schedule group once it has been already associated with a schedule group. See [AWS documentation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-scheduler-schedule.html#cfn-scheduler-schedule-groupname). |
679
+ | [options.State] | <code>String</code> | <code>&#x27;ENABLED&#x27;</code> | See [AWS documentation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html#cfn-events-rule-state). |
679
680
 
680
681
  **Example**
681
682
  ```js
@@ -683,6 +684,7 @@ const cf = require('@mapbox/cloudfriend');
683
684
 
684
685
  const myTemplate = { ... };
685
686
 
687
+ // A scheduler service role is already created for you internally with the correct permissions
686
688
  const lambda = new cf.shortcuts.ScheduledLambda({
687
689
  LogicalName: 'MyLambda',
688
690
  Code: {
@@ -700,6 +702,7 @@ const cf = require('@mapbox/cloudfriend');
700
702
 
701
703
  const myTemplate = { ... };
702
704
 
705
+ // If you are creating your own scheduler service role, be sure your permissions are correct!
703
706
  const role = new cf.shortcuts.ServiceRole({
704
707
  LogicalName: 'MyRole',
705
708
  Service: 'scheduler.amazonaws.com',
@@ -707,7 +710,7 @@ const role = new cf.shortcuts.ServiceRole({
707
710
  {
708
711
  Effect: 'Allow',
709
712
  Action: 'lambda:InvokeFunction',
710
- Resource: cf.sub('arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:my-role-*')
713
+ Resource: cf.sub('arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:${AWS::StackName}-*')
711
714
  }
712
715
  ]
713
716
  });
@@ -11,15 +11,19 @@ const ServiceRole = require('./service-role');
11
11
  *
12
12
  * @param {Object} options - Extends the options for [`Lambda`](#lambda) with the following additional attributes:
13
13
  * @param {String} options.ScheduleExpression - See [AWS documentation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html#cfn-events-rule-scheduleexpression).
14
- * @param {String} [options.ScheduleRoleArn=undefined] If specified, the eventbride scheduler will use this role to invoke your lambda . If not specified a service role with the correct scoped permissions is created for you.
14
+ * @param {String} [options.ScheduleRoleArn=undefined] If specified, the eventbridge scheduler schedule will use this role to invoke your lambda . If not specified a service role with the correct scoped permissions is created for you.
15
15
  * See [AWS documentation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-scheduler-schedule-target.html#cfn-scheduler-schedule-target-rolearn)
16
- * @param {String} [options.ScheduleGroupName=undefined] - See [AWS documentation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-scheduler-schedule.html#cfn-scheduler-schedule-groupname).
16
+ * @param {String} [options.ScheduleGroupName=undefined] - If specified, the eventbridge scheduler schedule is associated with this preexisting schedule group.
17
+ * If not specified the schedule is associated with the default schedule group. Note you cannot change a schedule's schedule group once it has been already associated with a schedule group.
18
+ * See [AWS documentation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-scheduler-schedule.html#cfn-scheduler-schedule-groupname).
19
+ * @param {String} [options.State='ENABLED'] - See [AWS documentation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-events-rule.html#cfn-events-rule-state).
17
20
  *
18
21
  * @example
19
22
  * const cf = require('@mapbox/cloudfriend');
20
23
  *
21
24
  * const myTemplate = { ... };
22
25
  *
26
+ * // A scheduler service role is already created for you internally with the correct permissions
23
27
  * const lambda = new cf.shortcuts.ScheduledLambda({
24
28
  * LogicalName: 'MyLambda',
25
29
  * Code: {
@@ -36,6 +40,7 @@ const ServiceRole = require('./service-role');
36
40
  *
37
41
  * const myTemplate = { ... };
38
42
  *
43
+ * // If you are creating your own scheduler service role, be sure your permissions are correct!
39
44
  * const role = new cf.shortcuts.ServiceRole({
40
45
  * LogicalName: 'MyRole',
41
46
  * Service: 'scheduler.amazonaws.com',
@@ -43,7 +48,7 @@ const ServiceRole = require('./service-role');
43
48
  * {
44
49
  * Effect: 'Allow',
45
50
  * Action: 'lambda:InvokeFunction',
46
- * Resource: cf.sub('arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:my-role-*')
51
+ * Resource: cf.sub('arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:${AWS::StackName}-*')
47
52
  * }
48
53
  * ]
49
54
  * });
@@ -121,7 +126,7 @@ class ScheduledLambda extends Lambda {
121
126
  }
122
127
  ]
123
128
  });
124
- this.Resources[`${this.LogicalName}Scheduler`].Properties.Target.RoleArn = { 'Fn::GetAtt': [`${this.LogicalName}EventBridgeScheduleRole`, 'Arn'] };
129
+ this.Resources[`${this.LogicalName}Scheduler`].Properties.Target.RoleArn = { 'Fn::GetAtt': [`${this.LogicalName}SchedulerRole`, 'Arn'] };
125
130
  this.Resources = merge(this, serviceRole).Resources;
126
131
  }
127
132
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mapbox/cloudfriend",
3
- "version": "8.0.0-0",
3
+ "version": "8.0.0",
4
4
  "description": "Helper functions for assembling CloudFormation templates in JavaScript",
5
5
  "main": "index.js",
6
6
  "engines": {
@@ -28,7 +28,7 @@
28
28
  "Type": "AWS::ApiGateway::Stage",
29
29
  "Properties": {
30
30
  "DeploymentId": {
31
- "Ref": "PassDeploymentd5673243"
31
+ "Ref": "PassDeploymentac7cb6b9"
32
32
  },
33
33
  "StageName": "hookshot",
34
34
  "RestApiId": {
@@ -47,7 +47,7 @@
47
47
  ]
48
48
  }
49
49
  },
50
- "PassDeploymentd5673243": {
50
+ "PassDeploymentac7cb6b9": {
51
51
  "Type": "AWS::ApiGateway::Deployment",
52
52
  "DependsOn": "PassMethod",
53
53
  "Properties": {
@@ -24,7 +24,7 @@
24
24
  "Type": "AWS::ApiGateway::Stage",
25
25
  "Properties": {
26
26
  "DeploymentId": {
27
- "Ref": "PassDeploymentd5673243"
27
+ "Ref": "PassDeploymentac7cb6b9"
28
28
  },
29
29
  "StageName": "hookshot",
30
30
  "RestApiId": {
@@ -43,7 +43,7 @@
43
43
  ]
44
44
  }
45
45
  },
46
- "PassDeploymentd5673243": {
46
+ "PassDeploymentac7cb6b9": {
47
47
  "Type": "AWS::ApiGateway::Deployment",
48
48
  "DependsOn": "PassMethod",
49
49
  "Properties": {
@@ -24,7 +24,7 @@
24
24
  "Type": "AWS::ApiGateway::Stage",
25
25
  "Properties": {
26
26
  "DeploymentId": {
27
- "Ref": "PassDeploymentd5673243"
27
+ "Ref": "PassDeploymentac7cb6b9"
28
28
  },
29
29
  "StageName": "hookshot",
30
30
  "RestApiId": {
@@ -43,7 +43,7 @@
43
43
  ]
44
44
  }
45
45
  },
46
- "PassDeploymentd5673243": {
46
+ "PassDeploymentac7cb6b9": {
47
47
  "Type": "AWS::ApiGateway::Deployment",
48
48
  "DependsOn": "PassMethod",
49
49
  "Properties": {
@@ -24,7 +24,7 @@
24
24
  "Type": "AWS::ApiGateway::Stage",
25
25
  "Properties": {
26
26
  "DeploymentId": {
27
- "Ref": "PassDeploymentd5673243"
27
+ "Ref": "PassDeploymentac7cb6b9"
28
28
  },
29
29
  "StageName": "hookshot",
30
30
  "RestApiId": {
@@ -52,7 +52,7 @@
52
52
  }
53
53
  }
54
54
  },
55
- "PassDeploymentd5673243": {
55
+ "PassDeploymentac7cb6b9": {
56
56
  "Type": "AWS::ApiGateway::Deployment",
57
57
  "DependsOn": "PassMethod",
58
58
  "Properties": {
@@ -24,7 +24,7 @@
24
24
  "Type": "AWS::ApiGateway::Stage",
25
25
  "Properties": {
26
26
  "DeploymentId": {
27
- "Ref": "PassDeploymentd5673243"
27
+ "Ref": "PassDeploymentac7cb6b9"
28
28
  },
29
29
  "StageName": "hookshot",
30
30
  "RestApiId": {
@@ -43,7 +43,7 @@
43
43
  ]
44
44
  }
45
45
  },
46
- "PassDeploymentd5673243": {
46
+ "PassDeploymentac7cb6b9": {
47
47
  "Type": "AWS::ApiGateway::Deployment",
48
48
  "DependsOn": "PassMethod",
49
49
  "Properties": {
@@ -24,7 +24,7 @@
24
24
  "Type": "AWS::ApiGateway::Stage",
25
25
  "Properties": {
26
26
  "DeploymentId": {
27
- "Ref": "PassDeploymentd5673243"
27
+ "Ref": "PassDeploymentac7cb6b9"
28
28
  },
29
29
  "StageName": "hookshot",
30
30
  "RestApiId": {
@@ -43,7 +43,7 @@
43
43
  ]
44
44
  }
45
45
  },
46
- "PassDeploymentd5673243": {
46
+ "PassDeploymentac7cb6b9": {
47
47
  "Type": "AWS::ApiGateway::Deployment",
48
48
  "DependsOn": "PassMethod",
49
49
  "Properties": {
@@ -24,7 +24,7 @@
24
24
  "Type": "AWS::ApiGateway::Stage",
25
25
  "Properties": {
26
26
  "DeploymentId": {
27
- "Ref": "PassDeploymentd5673243"
27
+ "Ref": "PassDeploymentac7cb6b9"
28
28
  },
29
29
  "StageName": "hookshot",
30
30
  "RestApiId": {
@@ -43,7 +43,7 @@
43
43
  ]
44
44
  }
45
45
  },
46
- "PassDeploymentd5673243": {
46
+ "PassDeploymentac7cb6b9": {
47
47
  "Type": "AWS::ApiGateway::Deployment",
48
48
  "DependsOn": "PassMethod",
49
49
  "Properties": {
@@ -24,7 +24,7 @@
24
24
  "Type": "AWS::ApiGateway::Stage",
25
25
  "Properties": {
26
26
  "DeploymentId": {
27
- "Ref": "PassDeploymentd5673243"
27
+ "Ref": "PassDeploymentac7cb6b9"
28
28
  },
29
29
  "StageName": "hookshot",
30
30
  "RestApiId": {
@@ -43,7 +43,7 @@
43
43
  ]
44
44
  }
45
45
  },
46
- "PassDeploymentd5673243": {
46
+ "PassDeploymentac7cb6b9": {
47
47
  "Type": "AWS::ApiGateway::Deployment",
48
48
  "DependsOn": "PassMethod",
49
49
  "Properties": {
@@ -24,7 +24,7 @@
24
24
  "Type": "AWS::ApiGateway::Stage",
25
25
  "Properties": {
26
26
  "DeploymentId": {
27
- "Ref": "PassDeploymentd5673243"
27
+ "Ref": "PassDeploymentac7cb6b9"
28
28
  },
29
29
  "StageName": "hookshot",
30
30
  "RestApiId": {
@@ -43,7 +43,7 @@
43
43
  ]
44
44
  }
45
45
  },
46
- "PassDeploymentd5673243": {
46
+ "PassDeploymentac7cb6b9": {
47
47
  "Type": "AWS::ApiGateway::Deployment",
48
48
  "DependsOn": "PassMethod",
49
49
  "Properties": {
@@ -158,7 +158,7 @@
158
158
  },
159
159
  "RoleArn": {
160
160
  "Fn::GetAtt": [
161
- "MyLambdaEventBridgeScheduleRole",
161
+ "MyLambdaSchedulerRole",
162
162
  "Arn"
163
163
  ]
164
164
  }
@@ -156,53 +156,10 @@
156
156
  "Arn"
157
157
  ]
158
158
  },
159
- "RoleArn": {
160
- "Fn::GetAtt": [
161
- "MyLambdaEventBridgeScheduleRole",
162
- "Arn"
163
- ]
164
- }
159
+ "RoleArn": "arn:aws:iam::012345678901:role/MyCoolRole"
165
160
  },
166
161
  "GroupName": "my-cool-stack"
167
162
  }
168
- },
169
- "MyLambdaSchedulerRole": {
170
- "Type": "AWS::IAM::Role",
171
- "Properties": {
172
- "AssumeRolePolicyDocument": {
173
- "Statement": [
174
- {
175
- "Effect": "Allow",
176
- "Action": "sts:AssumeRole",
177
- "Principal": {
178
- "Service": {
179
- "Fn::Sub": "scheduler.${AWS::URLSuffix}"
180
- }
181
- }
182
- }
183
- ]
184
- },
185
- "Policies": [
186
- {
187
- "PolicyName": "main",
188
- "PolicyDocument": {
189
- "Version": "2012-10-17",
190
- "Statement": [
191
- {
192
- "Effect": "Allow",
193
- "Action": "lambda:InvokeFunction",
194
- "Resource": {
195
- "Fn::GetAtt": [
196
- "MyLambda",
197
- "Arn"
198
- ]
199
- }
200
- }
201
- ]
202
- }
203
- }
204
- ]
205
- }
206
163
  }
207
164
  },
208
165
  "Outputs": {}
@@ -334,7 +334,7 @@ test('[shortcuts] scheduled-lambda', (assert) => {
334
334
  S3Bucket: 'my-code-bucket',
335
335
  S3Key: 'path/to/code.zip'
336
336
  },
337
- ScheduledRoleArn: 'arn:aws:iam::012345678901:role/MyCoolRole',
337
+ ScheduleRoleArn: 'arn:aws:iam::012345678901:role/MyCoolRole',
338
338
  ScheduleGroupName: 'my-cool-stack',
339
339
  ScheduleExpression: 'rate(1 hour)',
340
340
  State: 'DISABLED'
@@ -1 +0,0 @@
1
- {"uuid":"243d5bfa-9e45-4291-a944-4258a7a28148","parent":"70bddb17-d1d1-4971-b79f-5fece324d8d2","pid":3427,"argv":["/Users/bilindhajer/.nvm/versions/node/v16.20.0/bin/node","/Users/bilindhajer/cloudfriend/bin/build-template.js","/Users/bilindhajer/cloudfriend/test/fixtures/sync-args.js","--this","that","-r","cn-north-1"],"execArgv":[],"cwd":"/Users/bilindhajer/cloudfriend","time":1707324494299,"ppid":3424,"root":"bc74cb82-902f-4f17-addf-a6478be530a9","coverageFilename":"/Users/bilindhajer/cloudfriend/.nyc_output/243d5bfa-9e45-4291-a944-4258a7a28148.json","files":["/Users/bilindhajer/cloudfriend/bin/build-template.js","/Users/bilindhajer/cloudfriend/index.js","/Users/bilindhajer/cloudfriend/lib/intrinsic.js","/Users/bilindhajer/cloudfriend/lib/conditions.js","/Users/bilindhajer/cloudfriend/lib/rules.js","/Users/bilindhajer/cloudfriend/lib/pseudo.js","/Users/bilindhajer/cloudfriend/lib/build.js","/Users/bilindhajer/cloudfriend/lib/validate.js","/Users/bilindhajer/cloudfriend/lib/merge.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/index.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/lambda.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/service-role.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/role.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/scheduled-lambda.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/event-lambda.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/queue-lambda.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/stream-lambda.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/cross-account-role.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/queue.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/s3-kinesis-firehose.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/kinesis-firehose-base.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/glue-database.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/glue-table.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/glue-json-table.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/glue-orc-table.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/glue-parquet-table.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/glue-presto-view.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/glue-spark-view.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/hookshot.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/log-subscription-lambda.js"]}
@@ -1 +0,0 @@
1
- {"uuid":"70bddb17-d1d1-4971-b79f-5fece324d8d2","parent":null,"pid":3424,"argv":["/Users/bilindhajer/.nvm/versions/node/v16.20.0/bin/node","/Users/bilindhajer/cloudfriend/node_modules/.bin/tape","test/bin.test.js","test/index.test.js","test/shortcuts.test.js"],"execArgv":[],"cwd":"/Users/bilindhajer/cloudfriend","time":1707324493341,"ppid":3420,"root":"bc74cb82-902f-4f17-addf-a6478be530a9","coverageFilename":"/Users/bilindhajer/cloudfriend/.nyc_output/70bddb17-d1d1-4971-b79f-5fece324d8d2.json","files":["/Users/bilindhajer/cloudfriend/index.js","/Users/bilindhajer/cloudfriend/lib/intrinsic.js","/Users/bilindhajer/cloudfriend/lib/conditions.js","/Users/bilindhajer/cloudfriend/lib/rules.js","/Users/bilindhajer/cloudfriend/lib/pseudo.js","/Users/bilindhajer/cloudfriend/lib/build.js","/Users/bilindhajer/cloudfriend/lib/validate.js","/Users/bilindhajer/cloudfriend/lib/merge.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/index.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/lambda.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/service-role.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/role.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/scheduled-lambda.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/event-lambda.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/queue-lambda.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/stream-lambda.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/cross-account-role.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/queue.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/s3-kinesis-firehose.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/kinesis-firehose-base.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/glue-database.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/glue-table.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/glue-json-table.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/glue-orc-table.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/glue-parquet-table.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/glue-presto-view.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/glue-spark-view.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/hookshot.js","/Users/bilindhajer/cloudfriend/lib/shortcuts/log-subscription-lambda.js"]}