def test_invoke_function_from_sqs_exception(): logs_conn = boto3.client("logs", region_name="us-east-1") sqs = boto3.resource("sqs", region_name="us-east-1") queue = sqs.create_queue(QueueName="test-sqs-queue1") conn = boto3.client("lambda", region_name="us-east-1") func = conn.create_function( FunctionName="testFunction", Runtime="python2.7", Role=get_role_name(), Handler="lambda_function.lambda_handler", Code={"ZipFile": get_test_zip_file1()}, Description="test lambda function", Timeout=3, MemorySize=128, Publish=True, ) response = conn.create_event_source_mapping( EventSourceArn=queue.attributes["QueueArn"], FunctionName=func["FunctionArn"]) assert response["EventSourceArn"] == queue.attributes["QueueArn"] assert response["State"] == "Enabled" entries = [{ "Id": "1", "MessageBody": json.dumps({ "uuid": str(uuid.uuid4()), "test": "test" }), }] queue.send_messages(Entries=entries) start = time.time() while (time.time() - start) < 30: result = logs_conn.describe_log_streams( logGroupName="/aws/lambda/testFunction") log_streams = result.get("logStreams") if not log_streams: time.sleep(1) continue assert len(log_streams) >= 1 result = logs_conn.get_log_events( logGroupName="/aws/lambda/testFunction", logStreamName=log_streams[0]["logStreamName"], ) for event in result.get("events"): if "custom log event" in event["message"]: return time.sleep(1) assert False, "Test Failed"
def test_rotate_secret_lambda_invocations(): conn = boto3.client("iam", region_name="us-east-1") logs_conn = boto3.client("logs", region_name="us-east-1") role = conn.create_role( RoleName="role", AssumeRolePolicyDocument="some policy", Path="/my-path/", ) conn = boto3.client("lambda", region_name="us-east-1") func = conn.create_function( FunctionName="testFunction", Code=dict(ZipFile=get_test_zip_file1()), Handler="lambda_function.lambda_handler", Runtime="python2.7", Role=role["Role"]["Arn"], ) secretsmanager_backend = server.create_backend_app("secretsmanager") secretsmanager_client = secretsmanager_backend.test_client() secretsmanager_client.post( "/", data={ "Name": DEFAULT_SECRET_NAME, "SecretString": "foosecret" }, headers={"X-Amz-Target": "secretsmanager.CreateSecret"}, ) with pytest.raises(logs_conn.exceptions.ResourceNotFoundException): # The log group doesn't exist yet logs_conn.describe_log_streams( logGroupName="/aws/lambda/testFunction") secretsmanager_client.post( "/", data={ "SecretId": DEFAULT_SECRET_NAME, "RotationLambdaARN": func["FunctionArn"], }, headers={"X-Amz-Target": "secretsmanager.RotateSecret"}, ) # The log group now exists and has been logged to 4 times (for each invocation) logs = logs_conn.describe_log_streams( logGroupName="/aws/lambda/testFunction") assert len(logs["logStreams"]) == 4