使用Jenkins和AWS Lambda实现自动化部署通知
  ndCIWJ3N86Az 2023年12月11日 12 0

在本博文中,我们将讨论如何通过Jenkins控制AWS Lambda的自动化部署,并在部署成功后使用DingDing机器人发送通知。

第1部分:准备工作

1.1 创建DingDing机器人

在DingDing中创建一个机器人,并获取其访问令牌(token)。这将用于向DingDing发送更新通知。

1.2 存储AWS凭证

使用AWS Secrets Manager存储您的AWS凭证信息。确保您具有足够的权限以访问Lambda函数和Secrets Manager。

第2部分:配置Jenkins任务

2.1 安装AWS Lambda插件

在Jenkins中安装AWS Lambda插件,以便通过Jenkins管理Lambda函数的部署。

2.2 配置Jenkins任务

创建一个新的Jenkins任务,配置以下步骤:

步骤1:拉取代码

# 示例命令
git clone https://github.com/your/repo.git
cd repo

步骤2:构建Lambda包

使用AWS CLI或其他工具构建Lambda函数的部署包。确保将构建好的ZIP文件上传到S3存储桶。

# 示例命令
zip -r lambda_function.zip *
aws s3 cp lambda_function.zip s3://your-s3-bucket/lambda_function.zip

步骤3:部署Lambda函数

使用AWS Lambda插件配置Lambda函数的部署。

步骤4:发送DingDing通知

在Jenkins任务的最后一步,添加一个Shell脚本步骤,使用之前提到的Python脚本发送DingDing通知。

# 示例命令
python send_notification.py

确保您的Jenkins任务可以访问AWS凭证和DingDing机器人的token。

第3部分:编写Python脚本

编写一个Python脚本,用于发送DingDing通知。您可以使用之前提到的脚本或根据需要进行修改。

#!/usr/bin/python3
import boto3
import requests
import json,os

def get_secret(secret_name, region_name):
    """
    从AWS Secrets Manager获取指定的secret。
    """
    client = boto3.client(service_name='secretsmanager', region_name=region_name)
    return json.loads(client.get_secret_value(SecretId=secret_name)['SecretString'])

def send_dingding_message(lambda_name, token, version):
    """
    向DingDing发送一条消息,通知Lambda函数部署成功。
    """
    headers = {'Content-Type': 'application/json'}
    data = {
        "msgtype": "markdown",
        "markdown": {
            "title": f"Restart {lambda_name} Success",
            "text": f"<font face='黑体' color='#00EC00'>Restart {lambda_name} VERSION:{version} Success</font>\n"
        }
    }
    response = requests.post(f"https://oapi.dingtalk.com/robot/send?access_token={token}", headers=headers, data=json.dumps(data))
    print(response.text)

def update_lambda_function_and_get_version(lambda_name, s3_bucket, s3_key, region):
    """
    使用boto3更新Lambda函数的代码并发布新版本,然后返回新版本号。
    """
    client = boto3.client('lambda', region_name=region)
    response = client.update_function_code(
        FunctionName=lambda_name,
        S3Bucket=s3_bucket,
        S3Key=s3_key,
        Publish=True
    )
    return response['Version']

# 从Secrets Manager获取DingDing token
token = get_secret('base', 'us-east-1')['BUILD1_TOKEN']

lambda_names = os.environ['LAMBDA_NAMES'].split(',')
for lambda_name in lambda_names:
    if lambda_name == "S-iot-cvm-account":
        s3_bucket = 'pro-codebuild'
        s3_key = 'lambda-zip/pro/S-iot-cvm-account.zip'
        region = 'us-east-1'  # 替换为你的AWS区域
        version = update_lambda_function_and_get_version(lambda_name, s3_bucket, s3_key, region)
        send_dingding_message(lambda_name, token, version)

第4部分:测试和部署

测试您的Jenkins任务是否正常工作。手动触发任务,观察Jenkins构建日志和DingDing通知。

最后,根据需要调整脚本和Jenkins任务,确保您的自动化部署通知流程能够满足预期需求。

结论

通过结合Jenkins、AWS Lambda、Secrets Manager和DingDing机器人,您可以实现Lambda函数代码的自动更新和成功部署的通知。这个自动化流程可以显著简化您的部署流程,提高开发团队的效率。请记得根据实际需求调整脚本,并定期进行测试和优化。祝您自动化部署通知顺利!

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月11日 0

暂无评论

推荐阅读
  BBJ6jozQQLol   2023年12月07日   15   0   0 Jenkins
  it2nV7RK7uw1   2023年11月28日   14   0   0 Dockerawsui
ndCIWJ3N86Az