哪种类型的管道适合我? - Amazon CodePipeline
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

哪种类型的管道适合我?

管道类型由每个管道版本支持的一组特点与特征决定。

下面是每种管道类型的使用案例和特征摘要。

V1 类型 V2 类型
特性
使用案例
  • 标准部署

  • 通过在运行时传递管道级变量进行配置的部署

  • 将管道配置为在 Git 标签上启动的部署

操作级变量 支持 支持
PARALLEL 执行模式 不支持 支持
管道级变量 不支持 支持
QUEUED 执行模式 不支持 支持
管道阶段回滚 不支持 支持
源修订覆盖 不支持 支持
阶段条件 不支持 支持
触发和筛选 Git 标签、拉取请求、分支或文件路径 不支持 支持
Commands 操作 不支持 支持
创建使用“跳过”结果的“入口”条件 不支持 支持
配置阶段在失败时自动重试 不支持 支持

有关定价的信息 CodePipeline,请参阅定价

您可以创建并运行 Python 脚本,帮助您分析将 V1 类型管道转到 V2 类型管道的潜在成本。

注意

下面的示例脚本仅供演示和评估之用。它不是报价工具,不能保证您实际使用 V2 类型管道的成本,也不包括可能适用的任何税费。有关定价的信息 CodePipeline,请参阅定价

创建并运行一个脚本,帮助您评估将 V1 类型管道转到 V2 类型管道的成本
  1. 下载并安装 python。

  2. 打开终端窗口。运行以下命令创建一个名为 PipelineCostAnalyzer.py 的新 python 脚本。

    vi PipelineCostAnalyzer.py
  3. 将以下代码复制并粘贴到 PipelineCostAnalyzer.py 脚本中。

    import boto3 import sys import math from datetime import datetime, timedelta, timezone if len(sys.argv) < 3: raise Exception("Please provide region name and pipeline name as arguments. Example usage: python PipelineCostAnalyzer.py us-east-1 MyPipeline") session = boto3.Session(profile_name='default', region_name=sys.argv[1]) pipeline = sys.argv[2] codepipeline = session.client('codepipeline') def analyze_cost_in_v2(pipeline_name): if codepipeline.get_pipeline(name=pipeline)['pipeline']['pipelineType'] == 'V2': raise Exception("Provided pipeline is already of type V2.") total_action_executions = 0 total_blling_action_executions = 0 total_action_execution_minutes = 0 cost = 0.0 hasNextToken = True nextToken = "" while hasNextToken: if nextToken=="": response = codepipeline.list_action_executions(pipelineName=pipeline_name) else: response = codepipeline.list_action_executions(pipelineName=pipeline_name, nextToken=nextToken) if 'nextToken' in response: nextToken = response['nextToken'] else: hasNextToken= False for action_execution in response['actionExecutionDetails']: start_time = action_execution['startTime'] end_time = action_execution['lastUpdateTime'] if (start_time < (datetime.now(timezone.utc) - timedelta(days=30))): hasNextToken= False continue total_action_executions += 1 if (action_execution['status'] in ['Succeeded', 'Failed', 'Stopped']): action_owner = action_execution['input']['actionTypeId']['owner'] action_category = action_execution['input']['actionTypeId']['category'] if (action_owner == 'Custom' or (action_owner == 'AWS' and action_category == 'Approval')): continue total_blling_action_executions += 1 action_execution_minutes = (end_time - start_time).total_seconds()/60 action_execution_cost = math.ceil(action_execution_minutes) * 0.002 total_action_execution_minutes += action_execution_minutes cost = round(cost + action_execution_cost, 2) print ("{:<40}".format('Activity in last 30 days:')) print ("| {:<40} | {:<10}".format('___________________________________', '__________________')) print ("| {:<40} | {:<10}".format('Total action executions:', total_action_executions)) print ("| {:<40} | {:<10}".format('Total billing action executions:', total_blling_action_executions)) print ("| {:<40} | {:<10}".format('Total billing action execution minutes:', round(total_action_execution_minutes, 2))) print ("| {:<40} | {:<10}".format('Cost of moving to V2 in $:', cost - 1)) analyze_cost_in_v2(pipeline)
  4. 在终端或命令提示符处,将目录更改为创建分析器脚本的目录。

    在该目录中运行以下命令,其中 region 是您创建要分析的 V1 管道 Amazon Web Services 区域 的位置。您还可以通过提供特定管道的名称,选择性地对其进行评估:

    python3 PipelineCostAnalyzer.py region --pipelineName

    例如,运行以下命令来运行名为 PipelineCostAnalyzer.py 的 python 脚本。在此示例中,区域为 us-west-2

    python3 PipelineCostAnalyzer.py us-west-2
    注意

    该脚本将分析指定 Amazon Web Services 区域 内的所有 V1 管道,除非您指定了特定的管道名称。

  5. 在脚本的以下输出示例中,我们可以看到操作执行列表、符合计费条件的操作执行列表、这些操作执行的总运行时间,以及在 V2 管道中执行这些操作的估计成本。

    Activity in last 30 days: 
     | ___________________________________      | __________________
     | Total action executions:                 | 9         
     | Total billing action executions:         | 9         
     | Total billing action execution minutes:  | 5.59      
     | Cost of moving to V2 in $:               | -0.76 

    在此示例中,最后一行的负值表示改用 V2 类型管道可能节省的估计金额。

    注意

    显示成本和其它信息的脚本输出和相关示例仅为估计值。它们仅供演示和评估之用,并不保证任何实际节省。有关定价的信息 CodePipeline,请参阅定价