rap*_*dko 1 amazon-web-services aws-cloudformation serverless-framework
我正在使用serverless.yml在AWS cloudformation中创建几个服务,特别是:cognitoUserPool和UserPoolClient。
这两个创建都将返回ID,这些ID将用于在我的带有ognito库的平面html文件上连接到Amazon cognito的ID,因此,由于我从S3提供平面文件,因此我需要将这些值编码在文件中。
现在,我正在寻找一种自动化的方法,也许在文件中保留一个占位符,然后通过预处理器运行它们,该预处理器会使用输出值更改占位符,然后再将其上传到S3。
有什么想法可以实现吗?我的第一个猜测是从无服务器部署中导出输出变量,然后在任务运行器上使用这些值。
要在不使用无服务器插件的情况下实现此目的,请将以下内容添加到package.json文件中:
"scripts": {
"sls:info": "sls info --verbose | tee ./.slsinfo",
}
Run Code Online (Sandbox Code Playgroud)
这将创建.slsinfo包含无服务器输出的文件(以及其他内容)。通过调用运行npm run sls:info
然后可以更新package.json:
"scripts": {
"sls:deploy": "sls deploy && npm run sls:info",
"sls:info": "sls info --verbose | tee .slsinfo",
}
Run Code Online (Sandbox Code Playgroud)
现在您可以调用npm run sls:deploy,它将部署您的服务并将您的输出添加到.slsinfo文件。
以.slsinfo最简单的方式使用信息是使用正则表达式。下面的例子:
const slsinfo = require('fs').readFileSync('./.slsinfo', 'utf8');
function getOutput(output) {
return slsinfo.match(new RegExp('('+output+': )((.?)+)(\\n)'))[2];
}
Run Code Online (Sandbox Code Playgroud)
使用以上方法,您可以得到如下输出:
const var = getOutput('MyOutputName')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
991 次 |
| 最近记录: |