рдЬрдм site_config: ${file(./config/${opt:stage}/site.yml)}
рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ serverless.yml
рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдмрд╛рдж рдореЗрдВ рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рдЪрд░ (рдЙрджрд╛: site_secret_key: ${self:site_config.site_secret_key}
) process.env.site_secret_key
[Object object]
рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рд╣реЛрддреЗ рд╣реИрдВ ./config/${opt:stage}/site.yml
рдлрд╝рд╛рдЗрд▓ рдореЗрдВ site_secret_key
рдореВрд▓реНрдп рд╕реЗ рдЬреБрдбрд╝рд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдорд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ред
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
${file(./config/${opt:stage}/site.yml):site_secret_key}
рдпрд╣рд╛рдБ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдореЗрд░рд╛ рд╡рд┐рдиреНрдпрд╛рд╕ рд╣реИ:
service: test-service
plugins:
- debug-plugin
config: ${file(config.json)}
configEnv: ${file(config.json):env}
configEnvProp: ${file(config.json):env.development}
provider:
name: aws
stage: development
runtime: nodejs4.3
environment:
NODE_ENV: ${self:provider.stage}
fileConfig: ${file(config.json)}
fileConfigEnv: ${file(config.json):env}
fileConfigEnvProp: ${file(config.json):env.development}
selfConfig: ${self:config}
selfConfigEnv: ${self:configEnv}
selfConfigEnvProp: ${self:configEnvProp}
selfConfigDotEnv: ${self:config.env}
selfConfigDotEnvDotProp: ${self:config.env.development}
functions:
hello:
handler: handler.hello
рдореИрдВрдиреЗ serverless
рдкреИрд░реЗрдВрдЯ рдкреНрд░реЛрдк рдХреЗ рдмрд┐рдирд╛ serverless.service
рдбрдВрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд▓рдЧрдЗрди рд▓рд┐рдЦрд╛ рд╣реИ:
% sls debug config
{ service: 'test-service',
provider:
{ name: 'aws',
stage: 'development',
runtime: 'nodejs4.3',
environment:
{ NODE_ENV: 'development',
fileConfig:
{ env:
{ development: { region: 'ap-northeast-2' },
production: { region: 'us-west-1' } },
assets: { bucket: 'some-bucket' } },
fileConfigEnv:
{ development: { region: 'ap-northeast-2' },
production: { region: 'us-west-1' } },
fileConfigEnvProp: { region: 'ap-northeast-2' },
selfConfig: undefined,
selfConfigEnv: undefined,
selfConfigEnvProp: undefined,
selfConfigDotEnv: {},
selfConfigDotEnvDotProp: undefined },
region: 'us-east-1',
variableSyntax: '\\${([ :a-zA-Z0-9._,\\-\\/\\(\\)]+?)}' },
defaults:
{ stage: 'development',
region: 'us-east-1',
variableSyntax: '\\${([ :a-zA-Z0-9._,\\-\\/\\(\\)]+?)}' },
custom: undefined,
plugins: [ 'debug-plugin' ],
functions:
{ hello:
{ handler: 'handler.hello',
events: [],
name: 'test-service-development-hello' } },
resources: undefined,
package: {} }
рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХрд╛рд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЙрддреНрдкрд╛рджрди!
рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧрдЗрди рд╕реНрд░реЛрдд:
class Debug {
constructor(serverless, options) {
this.serverless = serverless;
this.options = options;
this.commands = {
debug: {
usage: 'Debugging',
commands: {
config: {
usage: 'Show configuration value',
lifecycleEvents: [
'print'
]
}
}
}
};
this.hooks = {
'debug:config:print': () => this.printConfig(),
};
}
printConfig() {
const config = Object.assign({}, this.serverless.service);
delete config.serverless;
const output = require('util').inspect(config, { colors: true, depth: null });
console.log(output.substring(0, 100000)); // Paranoia: can't kill node sync output on Ubuntu on Windows?
}
}
module.exports = Debug;
@simonbuchan рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рдЪрд░ рд╕рдВрджрд░реНрднреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реЛ рд░рд╣реЗ рд╣реИрдВ? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ config
, configEnv
& configEnvProb
рдкреНрд░реЙрдкрд░реНрдЯреАрдЬрд╝ рдФрд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдЖрдЧреЗ serverless.yml
рд╕рд╣реА рдХреЗ рдкрд╣рд▓реЗ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ... рдЖрджрд┐ред ред рдЕрдЧрд░ рдореБрдЭреЗ рд╕рд╣реА рд╕реЗ рдпрд╛рдж рд╣реИ, рддреЛ рд╣рдордиреЗ serverless.yml
рдореЗрдВ рдХрд╕реНрдЯрдо рдЧреБрдгреЛрдВ рдкрд░ рдкреНрд░рддрд┐рдмрдВрдз рд▓рдЧрд╛ рджрд┐рдпрд╛ рд╣реИ, рдХреЗрд╡рд▓ custom
рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдЕрдВрджрд░ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рддреЛ рдХреНрдпрд╛ рдЖрдк рдЕрдкрдиреЗ рдХрд╕реНрдЯрдо рдЧреБрдгреЛрдВ рдХреЛ custom
рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд▓реЗ рдЬрд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
custom:
config:
configEnv:
...
рдФрд░ рдЕрдкрдиреЗ рд╕рдВрджрд░реНрднреЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рди рднреВрд▓реЗрдВ
рдмрдВрдж рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╕реЗ рдЪрд░ custom
рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдпрд╣рд╛рдБ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдореЗрд░рд╛ рд╡рд┐рдиреНрдпрд╛рд╕ рд╣реИ:
рдореИрдВрдиреЗ
serverless
рдкреИрд░реЗрдВрдЯ рдкреНрд░реЛрдк рдХреЗ рдмрд┐рдирд╛serverless.service
рдбрдВрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд▓рдЧрдЗрди рд▓рд┐рдЦрд╛ рд╣реИ:рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХрд╛рд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЙрддреНрдкрд╛рджрди!
рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧрдЗрди рд╕реНрд░реЛрдд: