@macros
Notice:
@macros
is no longer the preferred way to extend CloudFormation in Architect, and have been superseded by@plugins
deploy.start
. Existing@macros
extensions will continue to be supported, but are no longer actively improved.
Extend the functionality of your Architect app with standard CloudFormation. The @macro
primitive allows developers to add any resources or modify existing ones extending Architect into the entire AWS ecosystem supported by CloudFormation. Macros also allow you to look for custom directives and add pre-deploy steps. You can find some examples in our GitHub.
Getting started
These example configuration files declare a macro saved to src/macros/my-custom-macro.js
arc
@app
testapp
@macros
my-custom-macro
json
{
"app": "testapp",
"macros": [
"my-custom-macro"
]
}
yaml
---
app: testapp
macros:
- my-custom-macro
Deploy
When running arc deploy
Architect looks for macros to run in:
src/macros/filename
node_modules/macro-module-name
You deploy a macro by using this syntax:
arc deploy
to deploy with CloudFormation to stagingarc deploy production
to run a full CloudFormation production deployment
Examples
Macros receive the parsed app.arc
file so custom pragmas and config can be defined. The second argument is the current CloudFormation template.
/**
* @param {object} arc - the parsed app.arc file currently executing
* @param {object} cloudformation - the current AWS::Serverless CloudFormation template
* @param {object} stage - the application stage (one of `staging` or `production`)
* @returns {object|Promise} must return a CloudFormation object or a promise for a CloudFormation object
**/
module.exports = function myCustomMacro(arc, cloudformation, stage) {
// modify cloudformation.Resources here
return cloudformation
}
Note: macros are a new feature and only JavaScript macros are supported at this time; however Python and Ruby are planned