Amazon web services 有没有办法在一段时间后自动删除aws代码管道?

Amazon web services 有没有办法在一段时间后自动删除aws代码管道?,amazon-web-services,aws-lambda,aws-codepipeline,Amazon Web Services,Aws Lambda,Aws Codepipeline,我是AWS服务的新手,请在这里耐心听我说。我目前正在从事一个项目,我试图在24小时后关闭活动环境(在aws代码管道上)。似乎在创建过程中没有设置管道时间限制的选项。考虑到这一点,有没有一个好的方法来做这样的事情?我在考虑创建某种lambda函数,可以从外部触发它来删除某个管道(因为它看起来是这样的)。不过,我对这一点还是很陌生,不确定这是否可行。因此,我自己找到了解决办法。最简单的方法似乎是创建一个Cloudwatch规则,该规则安排在调用lambda函数的每一小时或每一天。下面是我创建的bot

我是AWS服务的新手,请在这里耐心听我说。我目前正在从事一个项目,我试图在24小时后关闭活动环境(在aws代码管道上)。似乎在创建过程中没有设置管道时间限制的选项。考虑到这一点,有没有一个好的方法来做这样的事情?我在考虑创建某种lambda函数,可以从外部触发它来删除某个管道(因为它看起来是这样的)。不过,我对这一点还是很陌生,不确定这是否可行。

因此,我自己找到了解决办法。最简单的方法似乎是创建一个Cloudwatch规则,该规则安排在调用lambda函数的每一小时或每一天。下面是我创建的boto3 lambda函数,用于对超过24小时的管道的Codestar进行排序并删除它们

import boto3
from datetime import datetime, timedelta, timezone

# 24 hours limit from lambda invocation
timeLimit = (datetime.now(timezone.utc) - timedelta(hours=24))

# Create an Codestar client
client = boto3.client('codestar', region_name='us-east-1')

# begins lambda function
def lambda_handler(event, context):

# Call Codestar to list current projects
response = client.list_projects()

# Get a list of all project ids from the response
projectIds = [projects['projectId'] for projects in response['projects']]

# Iterate through projects
for projectId in projectIds:

        # Gets time stamp for each project
        description = client.describe_project(id=projectId)

        # If a project is older than 24 hours, then the project is deleted
        if description['createdTimeStamp'] < timeLimit:
            response = client.delete_project(id=projectId, deleteStack=True)
导入boto3
从datetime导入datetime、timedelta、时区
#从lambda调用开始的24小时限制
timeLimit=(datetime.now(timezone.utc)-timedelta(小时=24))
#创建Codestar客户端
client=bot3.客户('codestar',region_name='us-east-1')
#lambda函数
def lambda_处理程序(事件、上下文):
#致电Codestar列出当前项目
响应=客户端。列出项目()
#从响应中获取所有项目ID的列表
projectId=[projects['projectId'],用于响应项目['projects']]
#迭代项目
对于projectId中的projectId:
#获取每个项目的时间戳
description=client.description\u项目(id=projectId)
#如果项目的时间超过24小时,则该项目将被删除
如果描述['createdTimeStamp']
您是从代码管道执行关机代码,还是环境由代码管道托管?环境由管道托管。我想直接从lambda或者通过执行shutdown lambda的外部触发器来执行shutdown代码。您是否使用CodePipeline中的部署步骤?如果是,您使用的是什么方法?否。生成后,这是EBStack上的应用程序步骤(除非您指的是部署步骤)。为什么要删除
代码管道
?他们不承担任何费用。此外,删除
代码管道
不会删除它创建的资源。您必须删除实际创建资源的
CFT堆栈
。您是如何清理管道中与要删除的管道相关的其他部分,如IAM角色、部署桶等的?