

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# AWS.HookDefinition.Bash
<a name="node-hook-bash"></a>

定义一个 AWS HookDefinition in `bash`。

## 语法
<a name="hookdefinition-syntax"></a>

```
tosca.nodes.AWS.HookDefinition.Bash:
  properties:
    implementation: String
    environment\$1variables: List
    execution\$1role: String
```

## 属性
<a name="_properties"></a>

 `implementation`    
挂钩定义的相对路径。格式必须是：`./hooks/script_name.sh`  
必需：是  
类型：字符串

 `environment_variables`    
挂钩 bash 脚本的环境变量。使用以下格式：`envName=envValue`使用以下正则表达式模式：  
+ 对于没有引用的值：`^[a-zA-Z0-9]+[a-zA-Z0-9\-\_]*[a-zA-Z0-9]+=[a-zA-Z0-9]+[a-zA-Z0-9\-\_]*[a-zA-Z0-9]+$`
+ 对于静态引用：`^[a-zA-Z0-9]+[a-zA-Z0-9\-\_]*[a-zA-Z0-9]+=\$\{[a-zA-Z0-9]+\.(properties|capabilities|requirements)(\.([a-zA-Z0-9\-_]+))+\}$`
+ 对于动态引用：`^[a-zA-Z0-9]+[a-zA-Z0-9\-\_]*[a-zA-Z0-9]+=\$\{[a-zA-Z0-9]+\.(name|id|arn)\}$`
确保 `envName=envValue` 的值符合以下标准：  
+ 不使用空格。
+ **envName** 以字母（A-Z 或 a-z）或数字（0-9）开头。
+ 环境变量名称的开头不使用以下 AWS TNB 保留关键字（不区分大小写）：
  + CODEBUILD
  + TNB
  + HOME
  + AWS
+ 可以在 **envName** 和 **envValue** 中使用任意数量的字母（A-Z 或 a-z）、数字（0-9）和特殊字符 `-` 及 `_`。
+ 每个环境变量（每个 **envName** =**envValue**）必须少于 128 个字符。
示例：`A123-45xYz=Example_789`  
必需：否  
类型：列表

 `execution_role`    
挂钩执行的角色。  
必需：是  
类型：字符串

## 示例
<a name="hookdefinition-example"></a>

```
SampleHookScript:
  type: tosca.nodes.AWS.HookDefinition.Bash
  properties:
    implementation: "./hooks/myhook.sh"
    environment_variables:
      - "variable01=value01"
      - "variable02=value02"
    execution_role: "arn:aws:iam::${AWS::TNB::AccountId}:role/SampleHookPermission"
```