appspec.yml用于:
说明文件部署到机器上的哪个位置(比如/var/www/html)
管理部署过程中的每个 lifecycle hooks
In-place部署:

和traffic相关的hook只适用于ELB
Start, DownloadBundle, Install, 和 End不能用到脚本中
蓝色的部分是用户能够干预的,灰色的部分是用户干预不了的
Blue/green 部署:

从上图看到,在进行蓝绿部署时,对于原来旧版本所在的机器(Original instances),是不会发生ApplicationStop,BeforeInstall,Install……等事件的,这些事件只在新版本的机器(Replacement instances)上发生。原来的机器只为它停掉流量就行:
| Lifecycle event name | In-place deployment¹ | Blue/green deployment: Original instances | Blue/green deployment: Replacement instances | Blue/green deployment rollback: Original instances | Blue/green deployment rollback: Replacement instances |
|---|---|---|---|---|---|
| ApplicationStop | ✓ | ✓ | |||
| DownloadBundle² | ✓ | ✓ | |||
| BeforeInstall | ✓ | ✓ | |||
| Install² | ✓ | ✓ | |||
| AfterInstall | ✓ | ✓ | |||
| ApplicationStart | ✓ | ✓ | |||
| ValidateService | ✓ | ✓ | |||
| BeforeBlockTraffic | ✓ | ✓ | ✓ | ||
| BlockTraffic² | ✓ | ✓ | ✓ | ||
| AfterBlockTraffic | ✓ | ✓ | ✓ | ||
| BeforeAllowTraffic | ✓ | ✓ | ✓ | ||
| AllowTraffic² | ✓ | ✓ | ✓ | ||
| AfterAllowTraffic | ✓ | ✓ | ✓ |