Serverless配置YAML文件中连续两个-符号的含义是什么?
连续-语法含义说明
你看到的YAML中连续两个-属于嵌套数组的行式写法,对应示例中CloudFormation Fn::Join函数的参数结构,具体逻辑如下:
前置规则说明
CloudFormation内置的Fn::Join函数用于拼接字符串,固定要求传入两个参数:
- 第一个参数:拼接使用的分隔符,示例中为空字符串
'' - 第二个参数:待拼接的字符串列表,是一个数组类型的参数
语法拆解
你看到的连续-的写法,本质是两层数组的行式表达:
Fn::Join: - '' # 第一层数组的第一个元素:Fn::Join的第一个参数(分隔符) - - 'arn:aws:s3:::' # 第一层数组的第二个元素本身是数组,这里第一个`-`标识该数组开始,第二个`-`标识该嵌套数组的第一个元素 - 'Ref': 'ServerlessDeploymentBucket' # 嵌套数组的第二个元素 - '/*' # 嵌套数组的第三个元素
该写法完全等价于同配置中出现的单行紧凑写法,解析后的结构完全一致:
Resource: { 'Fn::Join': ['', ['arn:aws:s3:::', { 'Ref': 'ServerlessDeploymentBucket' }, '/*']] }
行式嵌套写法更适合结构复杂、元素较多的数组场景,可读性更高,不会因为嵌套层级多导致单行代码过长难以维护。
内容的提问来源于stack exchange,提问作者Jeffy Mathew
相关产品推荐
相关产品推荐

