Aws lambda 如何编写AWS Lambda向pipline报告已完成的工作?

Aws lambda 如何编写AWS Lambda向pipline报告已完成的工作?,aws-lambda,aws-codepipeline,Aws Lambda,Aws Codepipeline,编辑:更改lambda函数和日志输出,问题:/ 将以下lambda函数作为代码管道中的步骤: import boto3 import json import sys import os import pymysql import logging logger = logging.getLogger() logger.setLevel(logging.INFO) DB_HOST = os.environ['DB_HOST'] DB_USER = os.environ['DB_USER'] DB

编辑:更改lambda函数和日志输出,问题:/

将以下lambda函数作为代码管道中的步骤:

import boto3
import json
import sys
import os
import pymysql
import logging

logger = logging.getLogger()
logger.setLevel(logging.INFO)

DB_HOST = os.environ['DB_HOST']
DB_USER = os.environ['DB_USER']
DB_PASS = os.environ['DB_PASS'], 
DB_PORT = int(os.environ['DB_PORT'])

codepipeline = boto3.client('codepipeline')
cursorType = pymysql.cursors.DictCursor

try:
    connection = pymysql.connect(
        host=DB_HOST, 
        user=DB_USER,
        password=DB_PASS, 
        port=DB_PORT,
     
    )
except pymysql.MySQLError as err:
    logger.error("Error: Could not connect to MySql db")
    logger.error(err)
    sys.exit()
    
logger.info("Success: Connected to MySql db")


def lambda_handler(event, context):
    cursor = connection.cursor()
    try:
        logger.info("Dropping db...")
        cursor.execute(f"drop database {DB_NAME}")
        logger.info("Creating db...")
        cursor.execute(f"create database {DB_NAME}")
        logger.info("Db created")
        connection.close()
        logger.info('Conection closed')
        job_id = event['CodePipeline.job']['id']
        logger.info("Job id `{job_id}`")
        response = codepipeline.put_job_success_result(jobId=job_id)
        logger.info(response)
    except Exception as err:
        logger.error(err)  
        response = codepipeline.put_job_failure_result(
            jobId=job_id, failureDetails={'message': message, 'type': 'JobFailed'}
        )
    return {
        "statusCode": 200,
    }
函数运行的函数日志:

START RequestId: 02e2f7cb-817d-4e49-90db-5b4cae5c9336 Version: $LATEST 
[INFO] 2020-09-23T07:38:34.515Z  Found credentials in environment variables. 
[INFO] 2020-09-23T07:38:34.598Z  Success: Connected to MySql db 
{'CodePipeline.job': {'id': '9a8b13ea-d4f8-4aea-8481-60db0b7b5b5d... snip} 
Dropping db 
Creating db 
Db created 
Conection closed 
[INFO] 2020-09-23T07:38:34.732Z 02e2f7cb-817d-4e49-90db-5b4cae5c9336 Job id 9a8b13ea-d4f8-4aea-8481-60db0b7b5b5d 
successfuly done 
END RequestId: 02e2f7cb-817d-4e49-90db-5b4cae5c9336 
REPORT RequestId: 02e2f7cb-817d-4e49-90db-5b4cae5c9336 Duration: 60060.17 ms Billed Duration: 60000 ms Memory Size: 128 MB Max Memory Used: 76 MB Init Duration: 426.53 ms  
2020-09-23T07:39:34.660Z 02e2f7cb-817d-4e49-90db-5b4cae5c9336 Task timed out after 60.06 seconds
[INFO] 2020-09-23T07:39:35.55Z  Found credentials in environment variables. 
[INFO] 2020-09-23T07:39:35.94Z  Success: Connected to MySql db 
START RequestId: 02e2f7cb-817d-4e49-90db-5b4cae5c9336 Version: $LATEST 
{'CodePipeline.job': {'id': '9a8b13ea-d4f8-4aea-8481-60db0b7b5b5d',... snip} 
Dropping db 
Creating db 
Db created 
Conection closed 
[INFO] 2020-09-23T07:41:39.974Z 02e2f7cb-817d-4e49-90db-5b4cae5c9336 Job id 9a8b13ea-d4f8-4aea-8481-60db0b7b5b5d 
successfuly done 
END RequestId: 02e2f7cb-817d-4e49-90db-5b4cae5c9336 
REPORT RequestId: 02e2f7cb-817d-4e49-90db-5b4cae5c9336 Duration: 60060.32 ms Billed Duration: 60000 ms Memory Size: 128 MB Max Memory Used: 30 MB  
2020-09-23T07:42:39.925Z 02e2f7cb-817d-4e49-90db-5b4cae5c9336 Task timed out after 60.06 seconds 
我如何才能“强制”lambda向代码管道报告工作是否正常完成,而不是仅仅在某种循环中运行

Lambda IAM角色具有如下附加的策略:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:Describe*",
                "ssm:Get*",
                "ssm:List*",
                "kms:Decrypt",
                "ssm:GetParametersByPath",
                "ec2:DescribeNetworkInterfaces",
                "ec2:CreateNetworkInterface",
                "ec2:DeleteNetworkInterface",
                "ec2:DescribeInstances",
                "ec2:AttachNetworkInterface",
                "codepipeline:PutJobSuccessResult",
                "codepipeline:PutJobFailureResult"
            ],
            "Resource": "*"
        }
    ]
}

请提供帮助,因为我找不到lambda不将作业状态“告知”回管道的原因。

因此,要么创建代码管道vpc端点,要么将lambda移动到专用网络。。。案件已解决:)