Also see:
- Fixed issue preventing Ruby functions from properly executing in
sandbox
- Fixed issue prevent Python functions from properly executing in Windows
sandbox
- Fix broken characters in Windows
sandbox
console - Fixes super obscure bug where certain shared files may not be included in a single function deploy
sandbox
context now passes an empty object (to be mocked soon!) to all runtimes- This deprecates the legacy AWS implementation of
context
(since retired in production) passed tosandbox
Node functions
- This deprecates the legacy AWS implementation of
- Adds auto-hydration to new functions without restarting
sandbox
- Fixes issue with auto-hydration on
sandbox
startup - Fixes potential issue in static asset deploys in Windows
- Expanded support for static asset fingerprinting! If you've enabled fingerprinting (
@static fingerprint true
):sandbox
will regenerate yourpublic/static.json
file on startup- And whenever making any changes to your
public/
dir,sandbox
auto-refresh will automatically regeneratepublic/static.json
and re-hydrate your shared files with the latest version
sandbox
auto-refresh now detects file deletions fromsrc/shared
andsrc/views
- Adds PYTHONPATH to
sandbox
Lambda invocation for/vendor
modules
- Fixes
sandbox
crashing whenget /
and other functions aren't defined in.arc
or present in the filesystem, but are requested by a client - Prevents startup of http server if
@http
isn't defined in.arc
- Improves
sandbox
support in Windows
- Fixes WebSocket provisioning issue
- Disables delta resource creation during deployments
- This functionality is better served by more reliable and deterministic resource creation via the forthcoming Architect 6 release
- Reverts previous breaking change on WebSockets, default directories that get created are now once again
ws-connect
,ws-default
, andws-disconnect
- Auto-refresh!
sandbox
now keeps an eye out for the following changes to your project:- Edits to your Architect project manifest will mount or unmount HTTP routes without having to restart
sandbox
- Changes to
src/shared
andsrc/views
will automatically rehydrate your functions' shared code - More to come!
- Edits to your Architect project manifest will mount or unmount HTTP routes without having to restart
- Prettied up
sandbox
initialization printing a bit
- Auto-hydration!
- Say goodbye to running
npx hydrate
before starting new projects, cloning existing projects, or pulling down new functions - On startup, any functions missing dependencies on the local filesystem will now be auto-hydrated
- Supported runtimes and dependency manifests: Node +
package.json
(requires npm >= 5.7), Python +requirements.txt
(calls pip3), and Ruby + Gemfile (calls bundle)
- Say goodbye to running
- Ensures
sandbox
starts in the cases of:- No local AWS credentials file (e.g
~/.aws/credentials
) - The local AWS credentials file is present, but is missing the requested profile name
- Fixes #382, 391
- No local AWS credentials file (e.g
- Fixed issue with
hydrate
caused by an errant merge
- Projects that use WebSockets (
@ws
) in their.arc
file will need to be cautious about upgrading- The default directories that get created are now
ws-$connect
,ws-$default
, andws-$disconnect
; it is recommended that you runnpx create
and copy your code fromws-connect
tows-$connect
,ws-default
tows-$default
, andws-disconnect
tows-$disconnect
and then delete the old directories
- The default directories that get created are now
@ws
directive now works correctly with thenpx inventory
command set- Fixes
sandbox
wrapper when use as async module, addssandbox
test
- Deployments of static assets now follow symlinks in the
public/
directory
- The
sandbox
workflow is now its own module!- No functionality changes to
sandbox
in this release - A few minor improvements to
sandbox
console messages during startup, and drying up port assignment logic - You can find the
sandbox
module at https://github.com/architect/sandbox
- No functionality changes to
- Some Arc-supported runtimes defined in
.arc-config
files (such asnodejs8.10
) will no longer causesandbox
to crash
- Added ability to disable Architect managing a given function's environment variables
- Add an
@arc
pragma to your function's.arc-config
file, and pass it theenv false
flag
- Add an
- Corrects URI encoding when accessing local static assets in _static, fixes #390
- Warns users of static deployments of files approaching the payload limit of Lambda, fixes #387
- Fixes static deploy errors of unknown file types
- CloudFormation support! 🚀
npx package
will export the current.arc
file tosam.json
and print further instructions for deploying- Currently only
@http
,@static
and@tables
pragmas are supported; you can track the other pragmas dev (or submit a PR!) here at #386 - Any env vars in
.arc-env
are automatically applied to the CloudFormation stack .arc-config
settings are also fully supported- Unfortunately CF currently has a bug with binary media types which we're tracking here aws/serverless-application-model#561
- Static asset fingerprinting beta!
- Add
fingerprinting true
to your@static
pragma to enable fingerprinting - Add
ignore
followed by a two-space indented list to ignore certain files frompublic/
- More information here
- Add
- Added new flag for pruning old static assets:
npx deploy [--static] --prune
- Added ability to completely disable shared folder copying into functions
- Add an
@arc
pragma to your function's.arc-config
file, and pass it theshared false
flag
- Add an
- Ruby and Python local runtime support
.arc-config
withruntime
of eitherruby2.5
orpython3.7
works on localhost (make sure you have python and ruby installed!)
- Hydration (and other things that depend on hydrator operations) should now work more reliably on non-UNIXy machines
- Fixes lack of
console.[warn|error|trace]
output in sandbox console
- Default Lambda runtime is now Node 10.x (from Node 8.10)
- Added simple rate limits to
npx config
andnpx config --apply
- Updated dependencies
- Adds
npx inventory nuke -f
for deleting DynamoDB tables and S3 buckets (even if they have contents)- Also adds aliases:
npx inventory -nf
,npx inventory -fn
- Also adds aliases:
- Scheduled function state enabled / disabled flag in
.arc-config
withnpx config
- Concurrency
0-1
flag in.arc-config
withnpx config
(applies to all function types) - Support for custom routes in WebSocket API Gateways
@ws
now accepts routes defined in.arc
- To use these custom routes, the client message must contain an
action
key that is the name of the route
- DynamoDB tables and indexes now enqueue during create; fixes #268
- Sync queue visibility to function timeout; fixes #204
- Verifies queue resources deleted with
npx inventory nuke
; fixes #132 - Enhanced cron() and rate() validatation; fixes #148
- Now
npx inventory nuke
destroys Lambdas and CloudWatch Events rules - Enhanced error reporting for bad creds or bad arcfiles (closes #339, #364)
- New GitHub name! Find us at: github.com/architect
- If you're already developing for Architect projects, don't forget to update your git remotes, e.g.:
git remote set-url origin https://github.com/architect/architect.git && git remote -v
- Special thanks to @pug132 for the name (and a big hat-tip to @mikemaccana)!
- If you're already developing for Architect projects, don't forget to update your git remotes, e.g.:
- scheduled functions always putRule on
npx create
(fixes #326)
- Support for AWS layers! /ht @julianduque
- You may now specify
layer $layerARN
in the@aws
section of your project manifest, or.arc-config
files (see: config!
- You may now specify
- Support for additional runtimes:
python3.7
andruby2.5
!- The list also includes:
nodejs8.10
,python3.6
,go1.x
,dotnetcore2.1
, andjava8
- Specify
runtime $yourRuntime
in the@aws
section of your project manifest, or.arc-config
files - Of course, you can also add the runtime of your choosing by way of layer support
- The list also includes:
- Support for
application/binary-octet
&multipart/form-data
requests, fixes #353- Requests with those two
Content-Type
headers will produce abase64
object in thebody
object, like so:body: {base64: 'R28gR2lhbnRzIQ=='}
- Empty request bodies will still produce an empty object (e.g.
body: {}
)
- Requests with those two
config [--apply]
now has an easier to read layout, improved diffing, and instructions on how to apply changes- Added resource creation error handling and validation to
deploy
- Invalid runtime settings emit a friendly warning about defaulting to
node8.10
get /
no longer required by@http
- Updated dependencies (most notably
@architect/parser
to supportruntime
andlayers
settings) - Resource creation error handling moved into common utils (internal)
- Fixes WebSocket support in
sandbox
; fixes #328 /ht @rschweizer
- Cleans up http invocation for doc content-types in
sandbox
- Slightly better rate limit error message
- Adds
req.httpMethod
andreq.queryStringParameters
- Removes deprecated code paths
- Enables both text and binary file transit in newly provisioned Arc apps
- Adds the same capability to
sandbox
- This is NOT a breaking update, however if you'd like your existing app to serve binary assets, you'll need to re-create your API (or hang tight until we release our forthcoming API migration tool)
- Adds
req.httpMethod
andreq.queryStringParameters
- Removes deprecated code paths
- Cache-control header support to
sandbox
- Default for local dev environment is not to send any
cache-control
header - If specified,
cache-control
passes through
- Default for local dev environment is not to send any
- Cache-control header support; if not specified, defaults to:
- HTML + JSON:
no-cache, no-store, must-revalidate, max-age=0, s-maxage=0
- Everything else:
max-age=86400
- This change only applies to Architect apps provisioned from this version forward
- HTML + JSON:
- Default
content-type
response ofapplication/json
is nowapplication/json; charset=utf-8;
- Updated dependencies
- Now properly deletes the entire CloudWatch log group when nuking; fixes #311 /ht @mikeal
- Fixes
sandbox
to work properly whencontent-type
has charset assignment; #303, #305 /ht @hada-unlimited - Fixes issue with
audit
breaking on@ws
functions; #311 /ht @mikeal sandbox
now acceptsstatusCode
, in addition tostatus
andcode
; fixes #323
- Fixes ordering logs by last event /ht @mikeal
logs
forces descending order- Query params no longer trigger index.html override for
sandbox
- Adds support for
text/tsx
in/public
- Updated dependencies
test:watch
script andtape-watch
devdep (due to multiple dependencies with CVEs)
SPA support: mount S3 on the /
of API Gateway
ANY /{proxy+}
will now route any 'not found' to the HTTP Lambdasrc/http/get-index
- Note: proxy+ routes have a slightly different request payload that includes
request.requestContext
not available to regular HTTP Lambdas (so you can use this to test a 404 condition)
- Note: proxy+ routes have a slightly different request payload that includes
ANY /_static/{proxy+}
will proxy to S3 buckets defined by@static
(if you want to skip proxying through Lambda)- Companion library
@architect/functions
also gainedarc.proxy.public
superpower for proxying all requests NOT defined by.arc
to the@static
S3 buckets
For more about single page apps with Architect see there docs here.
- If
@http
is defined, thenget /
must also be defined npx sandbox
now mounts/public
onhttp://localhost:3333/_static
to match the deployed API Gateway S3 proxy
- Improvements to build plugins system (did you know Architect has a build plugins system?)
- Now supports NPM scoping (e.g.
@architect/arc-plugin-node-prune
) - Build preparation order now runs pre-deploy build plugins last (after dependency hydration)
- Published a companion beta / demo plugin:
@architect/arc-plugin-node-prune
, clean the cruft out of yournode_modules
!
- Now supports NPM scoping (e.g.
- Fixes
create
breaking if@ws
is not present in.arc
, #276
repl
now respects environments, allowing you to connect to your remote databases with theNODE_ENV
environment variable
repl
was being clobbered by@architect/data
's own implementation; fixed inarchitect/arc-data
#12, dependency updated
- Updated dependencies
- Support for
@ws
in.arc
for generating WebSocket Lambdas and API Gateway endpoints - Support for WebSocket Lambdas in the local sandbox
- WebSocket Lambdas support in
inventory
, which in turn powers most other workflows
- Support for
@slack
as the more generic@http
Lambdas support that use case better
- Fixes
@indexes
creation bug - Runs
npm i
duringhydrate --update
, resolving a long-standing NPM issue where package-lock files may fall out of sync - Fixed: on Windows, S3 assets will be correctly created relative to their location beneath
public
rather than their full paths.
- Updated dependencies
- Fixes callback in _create-code task, fixes #263
- Improved error handling in NPM operations
- In Windows, NPM no longer fails with
undefined
, fixes #261
- Improved status reporting during
deploy
andcreate
- Fixes cases where hydration was crashing single function deployments, and deployments that execute
create
for missing resources
hydrate
refactor and API- NPM operations are now queued and concurrently processed (env var
ARC_MAX_NPM
, defaults to 10) /ht @grncdr - Vastly improved NPM error handling and related deployment reliability (fixes #141 + #151)
- Now hydrates (and updates) deterministically from the current .arc manifest, as opposed to globbing
- All NPM operations now use
npm ci
for more consistent behavior across environments - Updates
deploy
to usehydrate
API, andsandbox
to use new shared code copier module
- NPM operations are now queued and concurrently processed (env var
- DynamoDB tables now use on-demand/pay-per-request billing mode, mitigating the need for capacity planning /ht @alexdilley
inventory
now supplies its own Arc project data, allowing it to be called as needed without relying onutil/init
- Freshly created Functions are now properly hydrated with shared code (if available and appropriate; fixes #241)
- Running
create
on already existing projects now runs orders of magnitute faster .arc
file is now reliably copied into each Function'snode_modules/@architect/shared
even if you don't usesrc/shared
(needed by@architect
deps)deploy
now respects--delete
flag when deploying the whole project- Improved progress reporting in
CI
mode, and forhydrate
,create
, anddeploy
- New command:
hydrate --shared [--update]
- hydrates and/or updatessrc/shared
andsrc/views
(if available) - Added test run watcher script /ht @filmaj
The following folders are no longer required nor autogenerated:
src/shared
src/views
/public
Functionality remains unchanged: Contents of src/shared
are synced to node_modules/@architect/shared
in all lambdas whenever deploying or using the sandbox. Contents of src/views
are synced to all HTTP GET lambdas node_modules/@architect/views
. Public is synced to S3 buckets.
- Updates
sandbox
, adding minor performance tweaks now, and setting up for future enhancements- Updated
sandbox
to asynchronously read files when invoking a Lambdas - Updates runtime handling in
sandbox
to make it easier to add additional runtimes - Each runtime now lives in its own function, which also enables process forking later on
- Updated
- New logo (added to readme)! /ht @amberdawn
hydrate
anddeploy
now install dependencies insrc/shared
andsrc/views
(#240)QUIET
boolean env var suppresses init header (fixes #238)- Helpful for piping data to disk, e.g. setting up new users on an Architect project with
QUIET=1 npx env > .arc-env
- Helpful for piping data to disk, e.g. setting up new users on an Architect project with
app.arc
app filename supported as a non-dotfile alternative to.arc
(#239)
- Static asset deploys now exclude default
public/readme.md
file - Improved
hydrate
progress and completion confirmation - Adds Architect version back into the init header
hydrate
was not properly globbing (and thus, not hydrating)src/shared
contents
- To help accommodate
sandbox
calling out to remote databases,SANDBOX_TIMEOUT
env var allows you specify in seconds how longsandbox
should wait for all child processes to completeSANDBOX_TIMEOUT
is overridden by any directory-specific.arc-config
files
- Default
sandbox
timeout is now symmetrical with Architect's default Lambda timeout time of 5 seconds
- Form-encoded POST values can now be sent enclosed in single quotes /ht @herschel666
- Skip logging when
@static
isn't deployed - Additional hardening of
sandbox
handling of JSON responses emitted from@architect/functions
- Preliminary / prototype commits for outputting CloudFormation from .arc
- Preliminary / prototype commits in the direction of adding arbitrary header support /ht @mweagle
- Issue where
arc.http
JSON responses were crashingsandbox
due to an encoding mismatch - Issue where
ARC_LOCAL
env var wasn't being properly respected bysandbox
events
- Local
@queues
now available insandbox
- Big ups to @grncdr for this feature!
hydrate
wasn't updated to use the new progress indicator, and would fail when used – no longer!
deploy
operations now read local and remote last-modified times, and will skip files whose times don't differ, thereby speeding up deploy operations of static files- Big ups to @filmaj for this release, too!
npx deploy static
: deploys only@static
assets (as found in thepublic/
folder)- Accepts
staging | --staging | -s
andproduction | --production | -p
flags
- Accepts
npx deploy static --delete
: deploys static assets, and deletes remote S3 files not present locally inpublic/
- Can be used with
staging
andproduction
flags
- Can be used with
- Big ups to @filmaj for this release!
- Large refactor of
deploy
workflow to improve stability and reliability deploy
now identifies missing project resources during deploy operations- Instead of failing / throwing errors,
deploy
now completes its first pass deployment - Then, once completed,
deploy
creates any resources missing from the deployment (and deploys them)
- Instead of failing / throwing errors,
npx inventory --nuke
now destroys@static
resources (S3 buckets) and@events
resources (SNS Topics).- New projects will no longer create
arc-sessions
tables (for use with@architect/functions
) by default, and are now explicitly opt-in - Replaces
progress
module with a lighter weight, more readily cross-platform homegrown solution
logs
command results now sorted chronologically
- Fixes console leaking of large responses in
sandbox
sandbox
was broken in the JWE changeover- Fixes some broken tests
- Unnecessary session table test stubs
- New default for Architect sessions is based on JWE
- DynamoDB sessions are still available, but now opt-in
sandbox
now matches the 6MB request payload limit of Lambda /ht @herschel666
- dotfiles are now included in Lambda deployments
- Architect parser now accepts multiple spaces between http verb and path in
@http
functions
sandbox
now properly pretty prints paths
- Additional S3 deploy tests
sandbox
clears async function timeout if execution is faster than specified timeout
- Better async error handling (and more helpful error text) in sandbox
- Trap and present friendly error when async functions don't return a value in sandbox
sandbox
returns a promise if no callback is specified- Adds repl
- Error with
/public
folder in sandbox
arc.sandbox.start
now accepts a regular node errback as the last arg
- This changelog!
- Removed generated test coverage files from NPM package bundle
- Inline help typos
CI
env boolean for disablingdeploy
progress indicator in CI
- CORS support for
sandbox
- CORS bug in HTTP functions
- Issue with
sandbox
not properly passing callbacks if used as a module
- Massive tests refactor, shout out to @filmaj!
- Added tests for many important workflows
- Code coverage now tracked with Istanbul
- Architect's CI is now public via TravisCI
- Roughed in resource flagging (not yet ready, though)
- Restored accidentally removed
readme.md
logs
workflow!- Command line flags for various workflows:
audit
:apply
,--apply
,-a
config
:apply
,--apply
,-a
create
:local
,--local
,-l
deploy
:production
,--production
,staging
,--staging
,public
,--public
,/public
,lambda
,--lambda
,lambdas
,--lambdas
,functions
,--functions
dns
:nuke
,--nuke
,-n
,route53
,--route53
,-r
env
:verify
,--verify
,-v
,remove
,--remove
,-r
hydrate
:update
,--update
,-u
inventory
:nuke
,--nuke
,-n
,--nuke=tables
,verify
,--verify
,-v
sandbox
:production
,--production
,-p
,staging
,--staging
,-s
,testing
,--testing
,-t
- Additional path validation for leading and trailing special characters
- Refactored
deploy
command to support additional command line flags, and surgical deploys of just/public
, or just Lambdas - Copy fixes for deployment workflow
- Made boilerplate HTTP functions a bit more minimal
- Improved
sandbox
testing
- Automagical
src/views
folder: copies contents into allHTTP GET
functions'node_modules/@architect/views
@views
pragma, overrides bulksrc/views
copy, and only copies into specified functions- More information on
src/views
and@views
can be found here - Adds ability to use the following special characters in static URL parts:
-
(dash),.
(period),_
underscore - New HTTP function validation logic:
- HTTP functions must begin and end with a letter or number
- Cannot create URL params that contain special chars (except leading
:
, of course)
- Adds command-line flags:
npx create
:local
,--local
,-l
npx deploy
:production
,--production
,-p
staging
,--staging
,-s
- New Examples repo
- Some light boilerplate code cleanup
- #168 Fixed issue where Architect parser was missing
@http
support in JSON + YAML manifests - #164 Fixed issue in Windows where Architect would try to copy files over itself
@http
pragma, now the default way to create Lambda functions for the web- Supports fully dynamic Content-Type, Status Code
- Supports all HTTP methods
- CORS support with a boolean flag
public
folder, now the default way to sync static assets to S3JSON
&YAML
support for the.arc
manifest- Per-Lambda function configuration support with
.arc-config
files - Per-Lambda function IAM roles support with
role.json
files
- Simpler package name (
npm i @architect/architect
) - New GitHub name (https://github.com/architect/architect)
- Smarter rate-limiting for deployments of large (50+ function) projects
- Complete docs revamp with new sample projects at arc.codes
- Fix for obscure bug where
server.close
causes a TypeError - Readme file cleanup
.static
folder has been deprecated in favor of the newpublic
folder- Statically bound Content-Type web functions (i.e.
@html
,@css
) are deprecatedsandbox
will no longer bootstrap these kinds of functionscreate
will no longer make these kinds of functions- However,
deploy
still supports deploying these legacy functions
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.