当前位置:  开发笔记 > 前端 > 正文

如何以DRY方式定义变量

如何解决《如何以DRY方式定义变量》经验,为你挑选了1个好方法。

假设我有写入S3存储桶的功能.所以存储桶名称显然是一个"变量",不应该硬编码到函数中(例如,对于dev与prod可能是不同的存储桶).

现在,如果我希望函数能够访问它,我需要在至少两个地方使用存储桶名称:

    在功能的IAM策略中(允许访问存储桶).

    在功能本身.

对于#1,我可以使用变量,并参考在s-module(或在v0.4 :)中调用的任何IAM策略中的变量.

对于#2,我可以使用env var,我可以在运行时在函数代码中访问它的值.

但我当然不希望两次定义变量(一次使用sls env set和一次在s-variables文件中).那不是很干.但是,我没有看到在定义envars时引用变量的方法,反之亦然.

我怎么能在一个地方定义桶名?



1> Peter Wagene..:

从Serverless v0.5开始,这非常简单.环境变量处理混合无服务器项目变量.您可以_meta/variables/...按每个区域的每个阶段的方式定义项目变量; 例如,在s-variables-dev-useast1.json:

{
    "foo_bucket": "com.example.foo-bucket"
}

然后,在s-function.json使用该存储桶的文件中,定义功能需要的环境变量...并以类似模板的方式引用项目变量:

"environment": {
    "BUCKET": "${foo_bucket}"
}

然后它将像任何其他环境变量一样出现; 所以在Node中:

console.log("The Bucket: " + process.env.BUCKET); 
// prints "The Bucket: com.example.foo-bucket"

到目前为止,无服务器的文档还没有赶上这个变化,但我预计它们应该很快就会出现.

推荐阅读
女女的家_747
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有